Elektroda.pl
Elektroda.pl
X
CControls
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Czy warto uczyć się assemblera?

ka_3 26 Lis 2013 10:19 2952 12
  • #1 26 Lis 2013 10:19
    ka_3
    Poziom 16  

    Witam
    Studiuję informatykę, ale zastanawiam się samemu nauczyć assemblera. Na uczelni uczą tego tylko na jednej specjalizacji. Tylko czy assembler mi się przyda np. jako programista C#, Javy? Czy zajdzie potrzeba napisania jakiegoś fragmentu w assemblerze? Druga sprawa to jakie książki do tego są polecane? Zastanawiam się nad http://helion.pl/ksiazki/praktyczny-kurs-asemblera-wydanie-ii-eugeniusz-wrobel,pkase2.htm? Dobra jest?

    0 12
  • CControls
  • #2 26 Lis 2013 10:30
    Steryd3
    Poziom 32  

    Jestem elektronikiem i odpowiem z mojego punktu widzenia. Na pewno nie warto ślęczeć nad nim godzinami bo programowanie w asemblerze to nic innego jak znajomość instrukcji rozkazów dla danej architektury oraz znajomość jej działania. Jako informatyk powinieneś mieć o tym pojęcie i świadomość jakie skutki niosą za sobą po stronie kodu maszynowego pewne konstrukcje w językach wysokiego poziomu. Nauka assemblera to właśnie umożliwia. Praktyczne wykorzystanie assemblera jest uciążliwe i głównie temu mało użyteczne. Są oczywiście problemy w których znajomość assemblera pomaga ale w większości przypadków tylko nie przeszkadza:)

    0
  • #3 26 Lis 2013 10:38
    vmario
    Poziom 14  

    W 99% przypadków programiście C# czy Javy assembler się nie przyda. Jeśli jednak kręcą Cię zagadnienia optymalizacyjne, chcesz wyróżnić się na rynku pracy albo chciałbyś zająć się pisaniem wysokooptymalizowanych implementacji algorytmów, to warto. Poczytaj sobie co o assemblerze pisze doświadczony programista Java - w artykule są też chyba polecane jakieś książki.

    0
  • #4 26 Lis 2013 11:05
    michcior
    Poziom 30  

    Kiedyś to była podstawa, programy w DOS'ie mimały wstawki assemblerowe i używały przerwań, których parametry wpisywane były do rejestrów, - prehistoria.
    Java i C# w 100% nie ma sensu nawet wiedzieć o czymś takim jaki assembler bo to są kody wykonywane przez wirtualne maszyny, taki is własny assembler.

    W świecie mikrokontrolerów i systemów wbudowanych, a nawet programując w C na PC, assembler jest praktycznie niezbędny przy używaniu debuggerów, szukaniu błędów w kompilatorach, i innych debugowych zadaniach. Nie trzeba w nim pisać ale znać. Nie wyobrażam sobie stawiania systemu na mikrokontrolerach np. takich jak ARM bez znajomości assemblera, zresztą po jakości postów osób które mają jakieś bóle wieku dziecięcego na tym forum jasno widać dlaczego jest to ważne.

    0
  • CControls
  • #5 26 Lis 2013 20:39
    McMonster
    Poziom 32  

    Asemblerem warto się zainteresować nawet będąc programistą Javy. W idealnym świecie do emerytury będziesz klepał w Javie i nic spokojnego życia programisty Javy ci nie zakłóci. W praktyce nie wiadomo, czy np. nie znajdzie się nagle dobra praca w C++, a tu już do asma znacznie bliżej. Informatyka rozwija się w nieprawdopodobnym tempie i nigdy nie wiadomo, co się w życiu przyda. Nawet jeśli to się nie zdarzy, to warto poznać chociaż podstawy i napisać sobie jakieś proste programiki, aby wiedzieć, jak działa komputer. Mnie przez lata gnębiła nieznajomość szczegółów funkcjonowania maszyny, przed którą przesiaduję dniami i nocami, na razie zabrnąłem tylko do elektroniki i mikrokontrolerów. ;-]

    Zresztą zapominacie, że Java i C# to też bytecode, z którym jako profesjonalny programista możesz spotkać się szybciej, niż sądzisz, a który już zawiera w sobie pewne podobieństwa do asma.

    W każdym wypadku odrzucanie asemblera jako coś, co się nie przyda, jest co najmniej niemądre.

    0
  • #6 26 Lis 2013 23:13
    rufek90
    Poziom 24  

    Przedstawię nieco inny punkt widzenia. Ja proponował bym najpierw nauczyć się porządnie czegoś, czego wymagają na rynku pracy - php, java, C#. Później sam zdecydujesz, czy warto rozwijać się dalej w tym kierunku, czy lepiej uczyć się czegoś bardziej 'egzotycznego'.

    Ja na chwilę obecną wolę rozwijać się w tym, w czym pracuję na co dzień. Do głowy by mi nie przyszło, żeby nauczyć się assemblera (może przez to, że na uczelni wcale tego nie miałem). Jakbym dysponował większą ilością wolnego czasu to nauczył bym się czegoś 'teraźniejszego', czego nie znam - android czy php...

    Ale wnioskując z wypowiedzi przedmówców, i assembler się może przydać ;)

    0
  • #7 27 Lis 2013 01:46
    McMonster
    Poziom 32  

    Tu się już pojawia pewna istotna kwestia, wymienianie języków. Uczyć się trzeba programować, a nie języków i platform. Dzisiaj Android, Java, PHP itp. są modne, jutro mogą już nie być.

    0
  • #8 27 Lis 2013 06:28
    Steryd3
    Poziom 32  

    Kolega studiuje informatykę a studia to czas przeznaczony na przyswajanie wiedzy. Tu nie ma się co zastanawiać czy warto czy nie warto. Zawsze warto poznawać nowe zagadnienia a jak słusznie stwierdził jeden z przedmówców nie wiadomo gdzie się znajdzie pracę i gdzie los rzuci oraz co przyjdzie robić. Na rynku pracy często bierze się to co jest - niektórzy gdyby czekali na pracę swych marzeń mogli by się nie doczekać. Poza tym dla mnie to zwyczajny obciach gdy ktoś po informatyce nie wie jak u podstaw działa komputer- a tę wiedzę zdobywa się poznając assemblera.

    0
  • #9 27 Lis 2013 09:25
    ka_3
    Poziom 16  

    michcior napisał:

    W świecie mikrokontrolerów i systemów wbudowanych

    Tym właśnie chciałbym się zająć w przyszłośći. Czyli bez ASM ani rusz?
    Ta książka jest dobra? http://helion.pl/ksiazki/praktyczny-kurs-asemblera-wydanie-ii-eugeniusz-wrobel,pkase2.htm?
    Steryd3 napisał:
    Poza tym dla mnie to zwyczajny obciach gdy ktoś po informatyce nie wie jak u podstaw działa komputer- a tę wiedzę zdobywa się poznając assemblera.

    Wiesz, są informatycy i "informatycy".

    0
  • #10 27 Lis 2013 09:49
    Steryd3
    Poziom 32  

    Nie zetknąłem się z tą książką ale po zagadnieniach które wypisane były na stronie wygląda interesująco. Co do książek do nauki assemblera... z tym akurat jest problem. Assembler to nic innego jak mnemoniki instrukcji mające odzwierciedlenie w kodzie maszynowym. Każdy procesor czy mikrokontroler posiada swój własny zestaw rozkazów a więc i mnemoniki bywają różne(choć często w listach rozkazów różnych procesorów są bogate analogie). Normalny tok studiów na elektronice który przeszedłem kilka dobrych lat temu, przewidywał zapoznanie się w kolejności z listami procesora 8080, później mikrokontrolera 8051, procesorem 8086 i mikrokontrolerów AVR. To dało nam obraz jak działają te maszynki i jak mentalnie należy podejść do pisanie programów w assemblerze. Moim zdaniem taka kolejność zapoznawania się z tym zagadnieniem daje obraz jak cała kwestia rozwijała się historycznie i skąd są pewne zaszłości. Przy programowaniu w assemblerze trzeba już na początku mieć świadomość, iż konkretny assembler to język co najwyżej dla grupy procesorów i jest to narzędzie najściślej jak to tylko możliwe związane ze sprzętem.
    Oczywiście nie namawiam byś ślęczał nad wszystkimi listami rozkazów tych procesorów:) Myślę, że nauka jednego da Ci obraz jak należy się zabrać do rzeczy gdyby zaistniała taka konieczność.

    0
  • #12 28 Lis 2013 09:01
    kradam
    Poziom 14  

    Steryd3 napisał:
    Kolega studiuje informatykę a studia to czas przeznaczony na przyswajanie wiedzy. Tu nie ma się co zastanawiać czy warto czy nie warto. Zawsze warto poznawać nowe zagadnienia [...]

    Wiedzę inteligentny człowiek przyswaja przez całe życie, chciałbym zwrócić uwagę. Studiów bym tu jakoś specjalnie nie wyróżniał.
    Jako to nie warto się zastanawiać? Nie da się przyswoić wszystkiego co byśmy chcieli (o ile mamy odrobinę ambicji) i dlatego trzeba się zastanawiać i podejmować decyzje.

    0
  • #13 28 Lis 2013 10:13
    Steryd3
    Poziom 32  

    kradam napisał:
    Wiedzę inteligentny człowiek przyswaja przez całe życie, chciałbym zwrócić uwagę. Studiów bym tu jakoś specjalnie nie wyróżniał.
    Jako to nie warto się zastanawiać? Nie da się przyswoić wszystkiego co byśmy chcieli (o ile mamy odrobinę ambicji) i dlatego trzeba się zastanawiać i podejmować decyzje.

    Trochę nie na temat ale się odniosę.
    Owszem-inteligentny człowiek -zwłaszcza w zawodach które tego szczególnie wymagają musi uzupełniać swą wiedzę regularnie. Dziedziny jak elektronika, informatyka czy automatyka z pewnością do nich należą. Nie mniej jednak studia to okres w życiu człowieka który to okres w szczególny sposób nastawiony jest na zdobywanie wiedzy-zwłaszcza jeżeli są to studia dzienne. Rozumiem, że jeżeli ktoś pracuje zawodowo jednocześnie studiując to z czasem bywa różnie i wtedy należy nim dobrze rozporządzać. Jeżeli zaś studiuje się w trybie dziennym to na brak czasu nie można narzekać -wiem jak jest bo studiowałem. Co do tego zastanawiania- z doświadczenia wiem, że mnóstwo studentów właściwie tylko się zastanawia za co można by się zabrać, co poznać a koniec końców na tym się kończy. Więc lepiej się nie zastanawiać tylko się zabrać za coś póki jest ten czas na studiach -później w pracy zawodowej może nie być już z tym tak wesoło. Nawet jeżeli kolega "liźnie" tego assemblera to i tak będzie wiedział więcej niż ten kto tego nie zrobił.

    0