Mozda teoretski, ali sumnjam i da je teoretski.
Analogija ti je ista kao i kad bi rekao da kompjuter teoretski moze da igra sah samo onoliko dobro koliko i covjek koji ga je programirao, mejdjutim svi znamo da to nije tako.
Kompajliranje nije nikakvo vece mozganje od igranja saha, cak naprotiv. Imas odredjen broj nacina na koji se nesto moze uraditi, iteriras xyz-puta kroz moguce kombinacije i odaberes onu koja ti je najpodesnija. To isto radi i covjek, samo milion puta sporije, jednako kao i u sahu.
Mozda na planeti ima 1-2 covjeka koji ce pobijediti neki osrednji sahovski kompjuter, ali to uopste ne znaci da ce ga svako pobijediti, isto kao sto ni svako ne moze napisati optimalniji kod od prosjecno dobrog kompajlera. Pisanje koda u asembleru, samo po sebi, uopste ne garantuje da ce to sto dobijes biti brze ili krace od kompajlerski generisanog.
Nema teorije da pobijedis moderne C-kompajlere u optimizaciji koda, osim u neravnopravnim uslovima kada ti je za slucaj za C-om dato pola sata na raspolaganju, a za asembler mjesec dana. A i to samo do odredjenog nivoa netrivijalnosti, jer preko nekog nivoa (koji nije toliko visoko) ne bi ti pomoglo da imas 10 godina na raspolaganju, jer bi na kraju prve godine poceo da zaboravljas od cega si poceo...
Ne radi se tu o poredjenju performansi izmedju asemblera i C-ovog kompajlera, jer asembler i nema nikakve performanse - iza asemblera stoji covjek, a ne kompajler, prema tome to nije C versus asembler nego masina vs ljudski mozak u primitvnoj disciplini kombinavanja i permutovanja, a zna se koliko kompjuteru treba da isproba 3 miliona kombinacija, a koliko covjeku.
Tvrditi da je asembler bolji od C-a nije nista drugo nego tvrditi da ce svaki covjek napisati bolji kod od kompajlera, sto nema veze sa zivotom, a pogotovo nema veze sa mozgom kad se radi o pocetnicima, odnosno, cak stavise, o bilo kome ko nije izuzetno uverziran profesionalac.
Dalje, optimalniji rucni asemblerski kod od C-ovog kompajlera mozes da dobijes ako se namjerno trudis da pises neoptimizovani kod u C-u. Ako se ni u C-u ne raspistoljujes sa megalomanskim preorganizovanjem koda u nebrojne layere i medjuslojeve i module i funkcije koje pozivaju funkcije koje pozivaju funkcije koje pozivaju..... onda ce ti i najbudjaviji besplatni C-kompajler izgenerisati asemblerski listing ravan tvom koga si rucno napisao.
Drugim rjecima, nije zabranjeno misliti ni kad se pise kod u C-u, i nije zabranjeno optimizovati C-source kod.
Jedno pitanje:
Sta bi ti radio da ti je neko, prije nego si ti napravio taj usb driver, dosao i zatrazio da mu napravis nesto sto ima usb, can i profibus, a pri tom treba nesto i da radi, recimo loguje saobracaj sa tih magistrala na SD-kartu ili hard disk, prikazuje to na 480x320 grafickom displeju i moze da se upravlja preko touchscreen-a?
Eto to je jedan onako, straight-through uredjaj, pravolinijski, nema sta mnogo da se misli niti kakvih silnih mozganja i nepoznanica.
Koliko mislis da bi ti trebalo za to u asembleru?