Assembler - początek programowania

Witam. Chciałbym się poradzić czy assembler do dobry wybór języka by zacząć przygodę z programowaniem? Czytałem na różnych forach, że może to być Assembler, ale inni mówili, że jest on za trudny dla początkujących i lepiej zacząć od C++, C# czy Java’y, więc chcę się dowiedzieć czy warto zaczynać od Assemblera.

Z góry dziękuje i pozdrawiam.

PS: Jeżeli zna ktoś jakiś kurs warty uwagi to proszę podajcie link.

Zły pomysł. Na 90% nic ci z tego Asemblera nie przyjdzie, a istnieje bardzo duże prawdopodobieństwo, że się odbijesz i zniechęcisz do programowania. Naprawdę lepiej zacznij od C#, Javy albo Pythona. Jeżeli koniecznie chcesz pisać aplikacje niskopoziomowe (sterowniki, systemy wbudowane) najpierw podłap trochę czystego C i dopiero wróć do podstaw ASM-a.

Assembler nie jest taki trudny, wystarczy wiedzieć mniej więcej jak działa komputer :wink:

http://rudy.mif.pg.gda.pl/~bogdro/index.php

Ta wiedza może być przydatna, jednak dużych programów nie pisze się w asmie. Jakbyś się zdecydował np. na C++ to polecam http://xion.org.pl/productions/texts/coding/megatutorial/ :slight_smile:

Jeśli jesteś na tyle ambitny, żeby chcieć zaczynać ad asemblera (co raczej nie jest najlepszym pomysłem wg mnie), to radzę zacząć od C i w międzyczasie poczytać jak są działa procesor - i po tym spróbować asma.

Zgadzam się z przedmówcami. Assembler jest kiepskim pomysłem, żadnego większego programu w tym nie napiszesz, nie mówiąc o czymkolwiek z interfejsem graficznym. Po to wymyślono języki programowania wysokiego poziomu, żeby programista nie musiał zawracać sobie głowy rejestrami procesora, tylko mógł skupić się na funkcjonalności. Chyba, że chcesz napisać super wydajne sortowanie albo sterownik… Ale raczej nie od tego się zaczyna naukę programowania.

Ja polecam nauczyć się Javy albo C#. Te języki nie są bardzo trudne dla początkującego, a jednocześnie są wykorzystywane na całym świecie w tysiącach projektów komercyjnych i open source. Dzięki temu w sieci jest mnóstwo poradników, tutoriali i for, gdzie znajdziesz rozwiązania typowych problemów i różne wskazówki. Zresztą zobacz sobie ile jest ofert pracy dla programistów Java, C# czy C++, a ile dla osób znających Assemblera :wink:

Np. młotek i śrubokręt.

Jak zwykle brak statystyk i źródeł.

No tak, bo Red Hat, to wcale nie jest open source, a jego suport wcale nie jest płatny.

Żeby być konkurencyjnym trzeba zrobić coś w sprawdzonym środowisku pozwalającym na szybkie tworzenie softu, a nie w ciekawostkach i efemerydach.

Niektórzy tutaj nie potrafią czytać ze zrozumieniem i argumentować swoich wypowiedzi, ale to na szczęście tylko ich problem.

Tak a w technikum elektronicznym dalej uczą assemblera przez 2 lata najpierw 1 rok teorii i później praktyka, która się później do niczego nie przydaje. :?

Nadal 8051 albo inne intelowskie kontrolery? A na studiach, jak mi mówili znajomi, podobne rzeczy oprogramowuje się w wysokopoziomowych językach albo DSL-ach.

Wątek na stackoverflow, do którego podlinkowałeś, mówi tylko o tym, że operacja i++ (oraz ++i) nie jest atomowa. Co zresztą jest zgodne ze standardem języka (i zdrowym rozsądkiem). Nie widzę tam niczego o nieużywalności kodu wypluwanego przez kompilatory. Więc nie rób ludziom wody z mózgu.

To oczywiste, że kompilator nie wygeneruje kodu tak optymalnego, jak napisany w Assemblerze. Ale również oczywiste jest, że nie da się w rozsądnym czasie napisać żadnej większej aplikacji w Assemblerze, np. aplikacji serwerowej korzystającej z bazy danych. Więc jeśli ktoś chce pisać sterowniki, albo jakieś super wydajne programy obliczeniowe do zastosowań naukowych czy inżynieryjnych, to może mu się ASM przyda. Ale to są raczej bardzo rzadkie przypadki.

Z tego co wiem to dalej na 8051 się uczą w technikum i przez cały 1 rok się właśnie ich uczy… i powiedzcie mi po co?

No fakt, że jest to troszkę staroć, ale jak szkoły nie stać na nowsze (ja mam nowsze kontrolerki, ale głowy nie daję jakie modele), to lepsze to niż nic. Różnią się architekturą, ale generalnie uczą cię programowania, a nie do końca samej komunikacji. Zawsze tak było, tak jest i tak będzie. Ja co prawda jestem na mechatronice, a nie na elektronice, więc inna branża trochę, ale w tej kwestii różnice są niewielkie.