Jaki język?

0

Mam pytanie odnośnie assemblera......czy język ten jest przydatny w dzisiejszych czasach? Kiedy żądzi c++? Chdziałbym sie dowiedzieć czy na studiach jest wymagana znajomość tego języka??? CZy warto inwestować w niego swój czas?

0

ja nie znam asemblera ale odpowiem Ci na to pytanie :)

Podobno w c++ nie da się zrobić wszystkiego - a to co się nie da zrobić w c++ można zrobić w asemblerze...

Myśle, że na studiach wcale nie potrzeba znajomości asemblera - jest to język niskiego poziomu to wię trudny - jestem prawie pewien że nie ma go na studiach

0

Myśle, że na studiach wcale nie potrzeba znajomości asemblera - jest to język niskiego poziomu to wię trudny - jestem prawie pewien że nie ma go na studiach

a ja w 1000% jestem pewien ze mialem asembler na studiach i to na drugim roku...

0

Assembler nie jest w stanie trudny, nie wiem co ze studiami bo wybieram się na nie dopiero za rok ale jedno wiem, że jak myślisz o poważnym programowaniu to asm musisz znać i musisz umieć interpretować kod. Poza tym IMHO asm powinien znać każdy szanujący się programista, bo prawdziwe programownia to właśnie asm.

0

Dzięki za rady - nie pozostaje nic innego jak rozpocząć edukację...:)

0

Dzięki za rady - nie pozostaje nic innego jak rozpocząć edukację...:)

Ale jesli nie znasz C/C++ to lepiej zaczac od tych jezykow (ew. Pascal / Java).

Poza tym IMHO asm powinien znać każdy szanujący się programista, bo prawdziwe programownia to właśnie asm.

To fakt, ze kazdy szanujacy sie programista powinien znac jakiegos asma, a dokladniej architekture komputerow, ale co do drugiej czesci zdania nie bylbym juz tak pewien.

Asm wykorzystywany jest na pewno w mniej niz 0,1% projektow - wlasciwie jedynie czasem w sterownikach, niewielkich fragmentach systemow operacyjnych, BIOSie, oprogramowaniu mikrokontrolerow jednoukladowych (ale tez b. rzadko - tu rzadzi C i coraz czesciej.... Java). Kiedys asma sie uzywalo do pisania enginow graficznych do gier - teraz przy akceleracji sprzetowej to juz przeszlosc. Rowniez sa juz proby pisania BIOSow calkowicie w C.

Asma trzeba poznac, zeby umiec optymalizowac programy w jezykach wyzszego poziomu takich jak C++ i rozumiec, jakie konstrukcje beda lepiej dzialaly. Poza tym, zeby w ogole rozumiec jak to wszystko dziala. Ale zeby w tym programowac????!

BTW: IA32 (x86) jest bardzo nietypowym assemblerem - jest to chyba jedyna architektura CISC jaka sie ostala. Dlatego zatwardziali programisci asm x86 na ogol tak naprawde nie widzieli prawdziwego assemblera, a zawsze im sie wydaje, ze jest to jedyny i uzywaja slowa "assembler" na "assembler x86", tak jakby to byly synonimy. :-[

0

Asm wykorzystywany jest na pewno w mniej niz 0,1% projektow - wlasciwie jedynie czasem w sterownikach, niewielkich fragmentach systemow operacyjnych, BIOSie, oprogramowaniu mikrokontrolerow jednoukladowych (ale tez b. rzadko - tu rzadzi C i coraz czesciej.... Java). Kiedys asma sie uzywalo do pisania enginow graficznych do gier - teraz przy akceleracji sprzetowej to juz przeszlosc. Rowniez sa juz proby pisania BIOSow calkowicie w C.

a virus writerzy? - asm to podstawa, tak samo jak w firmach antywirusowych bo przecież, trzeba ten kod przaanalizować etc. A łamanie zabezpieczeń pirackich w programach / grach ? A pisanie exploitów etc? i wiele, wiele innych legalnych działalności ;-)

0

Myśle, że na studiach wcale nie potrzeba znajomości asemblera - jest to język niskiego poziomu to wię trudny - jestem prawie pewien że nie ma go na studiach

Buehehe - ja na studiach miałem:
Assembler dla:

  • Motorola 6800
  • 89Cxx51
  • x86 (tryb rzeczywisty) - w tym semestrze bodajże będzie tryb chroniony

Już pomijam fakt, że Asm dla x86 był pierwszym jakiego się 'nauczyłem' (podobno asma uczy się całe życie)

Asma trzeba poznac, zeby umiec optymalizowac programy w jezykach wyzszego poziomu takich jak C++ i rozumiec, jakie konstrukcje beda lepiej dzialaly. Poza tym, zeby w ogole rozumiec jak to wszystko dziala.

Święte słowa...

Ale zeby w tym programowac????!

A dlaczego by nie? Ja np. piszę programik do łamania haseł metodą brute force - tu jest ważny tylko jeden czynnik - prędkość działania. Asm jak najbardziej się nadaje - sam optymalizuję kod, aby działał jak najkrócej (parowanie instrukcji na kanał U i V etc.) - na pewno będę mial lepszy wynik, niż ten sam algorytm (opracowany przeze mnie) napisany np. w C++.

0

marooned wszytko pięknie, tylko ile czasu dłużej będziesz pisał ten program w asmie niż w c/c++?
hobbystycznie to sobie możesz, ale przy pisaniu komercyjnych projektów nie ma szans, nikt nie będzie czekał miesiąc na program w asmie jeśli dużo szybciej może go mieć w c++

0

Ja nie wiem nn...przecież marooned napisał że liczy się szybkość...to może ktoś jednak poczeka...

0

marooned wszytko pięknie, tylko ile czasu dłużej będziesz pisał ten program w asmie niż w c/c++?
hobbystycznie to sobie możesz, ale przy pisaniu komercyjnych projektów nie ma szans, nikt nie będzie czekał miesiąc na program w asmie jeśli dużo szybciej może go mieć w c++

Przy skopmlikowanych projektach to rzeczywiście lipa, niemniej jednak przy zaawansowanych projektach przydaje sięteż czasami prędkość działania, i dlatego twórcy kompilatorów pomyśleli o wstawkach asm. Nie musisz pisać całego programu w asemblerze, wystarczy, że tam, gdzie zależy na szybkości, walniesz wstawkę.

0

marooned wszytko pięknie, tylko ile czasu dłużej będziesz pisał ten program w asmie niż w c/c++?
hobbystycznie to sobie możesz, ale przy pisaniu komercyjnych projektów nie ma szans, nikt nie będzie czekał miesiąc na program w asmie jeśli dużo szybciej może go mieć w c++

Bo nie piszecie w asm zawodowo.
Proponuje wejsc na strone forum FASMa albo przeczytac, co pisze Randall Hyde.
Ci ludzie, ktorzy robia to zawodowo, pisza kod w asm rownie szybko jak zawodowi programisci w C.
Jezeli piszecie program robiac to tak:
"zaczne kodowac, a potem cos mi wyjdzie"
To rzeczywiscie w asm bedziecie pisac dlugo. Jezeli jednak stosujecie tradycyjny proces wytworczy, gdzie najpierw sie projektuje, potem koduje a nastepnie testuje, to wiecie, ze samo kodowanie zajmuje ulamek czas w porownaniu z projektowaniem i testowaniem.
Dodatkowo, stosujac asm, mozna niektore problemy rozwiazac w niekonwencjonalny sposob, zyskujac na tym nie tylko na szybkosci wykonania programu i rozmiarze, ale rowniez na uproszczeniu calego projektu, a co za tym idzie przyspieszeniu powstawania oprogramowania (prostszy projekt - mniej bledow).
Oczywiscie, ze jezeli bedziecie tlumaczyc sobie program w C na program w asm, to malo kiedy uzyskacie lepsze wyniki. A na pewno zajmie to wiecej czasu niz mialby to zrobic kompilator. Ale jezeli piszecie od razu w asm, to patrzycie na to wszystko z innej perspektywy i tworzycie program, wyciskajacy ostatnie poty ze sprzetu.

0

Podsumowując, bo chyba nikt tego nie podsumował tego co możesz zrobić w asm, nie zrobisz w innych językach, tj. są rzeczy które da się zrobić tylko w asm, a wcale nie jest powiedziane, że ma to długo trwać bo doświadczenie, szablony etc robią swoje ( oczywiście napisane przez siebie ), a poza tym jest pseudojęzyk wysokopoziomowy ( chyba tak się to nazywa, chodzi mi o te .IF itd ). Kończąc chciałbym tylko powiedzieć, że dobrze jest znać chociaż podstawy asm, bo można dzięki tej znajomości wychwycić błędy w programie, których nie widać w kodzie języka wysokopoziomowego lub widać je ale słabo.

0

Podsumowując, bo chyba nikt tego nie podsumował tego co możesz zrobić w asm, nie zrobisz w innych językach, tj. są rzeczy które da się zrobić tylko w asm,

Sa rzeczy, ktore mozesz zrobic TYLKO w Javie. Napisz mi komponent EJB w asmie. :p

A tak serio, to wszystko mozna zrobic w C uzywajac gdzieniegdzie jakiejs malej wstawki asma (ale naprawde malej - takiej kilkunastolinijkowej). Jak napiszesz caly duzy program w samym asmie, to bedziesz musial sie niezle nameczyc, zeby byl optymalniejszy od napisanego w C. Wielu zawodowych programistow asma poleglo w starciu z najlepszymi kompilatorami C. A nawet, jesli Ci sie uda, to wygrasz kilka procent.

Pisalem w asmie kiedys program na kilka tysiecy opkodow i skonczylo sie na tym, ze robilem standardowe ustawianie ramki stosu przy wejsciu do funkcji i zachowywanie wszystkich zmienianych rejestrow dokladnie tak jakby to robil kompilator. Powod - wazniejsza czytelnosc i pielegnowalnosc kodu niz jego wydajnosc. Swoja droga moglem tamten projekt napisac w 99% w C (to bylo na kontroler 8051).

Z ta wydajnoscia to tez jest mit, bo jakbys chcial napisac cos w asmie na wiecej niz jeden procek (nawet tej samej rodziny, a przeciez 386 rozni sie od Pentium IV), to musialbys napisac tyle wersji ile masz prockow. Inaczej program szybko bedzie chodzic tylko na jednym, na reszcie kompilatory C wygraja. A tak w C piszesz program raz, kompilujesz kilka razy na rozne procki i masz wszystkie wersje prawie optymalne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1