Nekada sam koristio 8031 (samo u jednom projektu), a onda duze vreme HC11, pa nesto krace vreme PIC,
a sada MC9S08 i mislim da sam pogodio pravu stvar. Potrebu za pokretnim zarezom nisam imao, sve sam
resavao u fiksnom zarezu i vodio sam racuna da ne izgubim ni jedan bit rezultata. Ali sam bio razvio
zbirku procedura za rad u pokretnom zarezu za HC11. Za ovaj mikrokontroler to nije bilo skupo jer
pored mnozenja (8x8 bita) ima i deljenje 16 sa 16 bitam i to celobrojno i posebno frakciono. To je
bilo idealno za pokretni zarez sa 16-to bitnom mantisom i dobra zamena za 16-to bitnu celobrojnu
aritmetiku. Ali za duze mantise to nije bio slucaj. Mislim da ako mikrokontroler ima deljenje 32 sa 32
bita bila bi steta da ne postoji aritmetika u pokretnom zarezu jer ne bi bila skupa.
Da zakljucim, pokretni zarez nije neophodnost, ali moze da ustedi vreme i trud.
Za
sdurut,
oduvek koristim PASCAL, ali koristim i C kada moram (samo ako musterija to trazi). Radije koristim
asembler nego C. Ko poznaje istorijat nastanka C-a zna da je on nus proizvod u razvoju UNIX-a. Kada
kazem PASCAL mislim na Borlandovu verziju u koju su ubacene neke stvari iz Module2 (koji je bolji
od PASCAL-a i C-a zajedno). Vidim, svi koriste C, probam i ja, pa napravim neke testove uporedjenja:
u C nisam dobio ni kraci ni brzi kod, ali sam vise vremena potrosio zbog uzasne sintakse i mnostva
izuzetaka u pravilima. I opet se vratim na PASCAL.
PASCAL je napravljen kao prg. jezik visokog nivoa i nije usmeren ni na jednu vrstu aplikacija. PASCAL
ne zavisi od nekakvih linkera (koji su danas zaboravljeni jer vise nisu potrebni), ali C se zbog
kompatibilnosti i dalje oslanja na linkere razvijene 50-tih godina proslog veka. Upravo zbog toga
postoji zbrka u prijavljivanju gresaka. Koliko vam se puta desilo da C kompajler (uz svesrdnu pomoc
linkera) prijavi gresku koja to nije i naravno na neodredjenom mestu.
Jos 1977 god. je Barron postavio 3 osobine koje mora da zadovolji dobar programski jezik. To su:
1. Ekonomija pojmova: postizanje maksimalne snage sa sto manje pojmova. Tu spadaju Algol68, PASCAL i
Occam, a ne spada C, dok je kontra primer PL/1.
2. Uniformnost: nepostojanje posebnih slucajeva i izuzetaka oslobadja programera da ih pamti i olaksva
mu analizu programa. Tu spadaju opet predhodna 3 jezika bez C-a, a kontra primer je COBOL.
3. Ortogonalnost: postojeci pojmovi su nezavisni i za njih vaze ista pravila u svim situacijama. Kada
ovo vazi, onda se od jednostavnih pojmova mogu graditi slozeniji pojmovi koji prate nit logickog
razmisljanja programera. I ovo zadovoljavaju pomenuta tri gezika, ali ne i C, dok su u ovom smislu
najgori FORTRAN, COBOL i BASIC.
Da su ova pravila na svom mestu mnogo puta sam se uverio. Na primer:
a = a+b; i a += b
postoje dva pojma za istu stvar, a ima takvih slucajeva mnogo.
PASCAL ima jasnu strukturu. Program ima zaglavlje sa imenom programa, zatim sledi blok i na kraju
znak tacka. Procedura i funkcija imaju zaglavlje iza kojeg sledi takodje blok. Iz ovoga proizilazi
da se mogu procedure i funkcije gnezditi, sto nije slucaj sa C-om. Ovo je primer osobine ortogonalnosti.
Eksplicitna konverzija tipa:
Code:
PASCAL: imeTipa(varijabla)
C: (imeTipa)varijabla
ili PASCAL a := b
C a = b
ako su a i b nizovi istog tipa, PASCAL ce stvarno vrednost niza b dodeliti nizu a, a C ce adresu niza b
dodeliti adresi niza a, odnosno promenice adresu niza a koju joj je dodelio kompajler dok je prevodio
deklaracije (katastrofa). Ovo su primeri ispunjenja osobine uniformnosi (PASCAL) i neispunjenja (C).
Ovakvih primera ima sijaset, a ja sam naveo one koji su mi trenutno pali na pamet.
Zasto je C nadmocan u primeni: ne zato sto je najbolji, vec zato sto sve tehnoloske inovacije dolaze
iz USA. PASCAL je nastao u Svajcarskoj, i ni na koji nacin nije vezan za profit. Razgovarao sam sa
menedzerima u inostranstvu zasto traze da njihovi programeri pisu u C-u. Najcesci odgovor je: svi tako
rade i zaradjuju pare. Medjutim nisu znali da kazu zasto skoro svi imaju grupu programera za dibagiranje.
Oni misle da je to normalno, a ja kazem da program pisan u C-u nije pouzdan pa zato i imaju te grupe.
Na kraju krajeva engleski je svetski jezik ne zato sto je najbolji vec zato sto je siren koloniziracijom
i zato sto je on jezik USA. Cak sta vise, engleski jezik je jedan od najmladjih jezika (danasnji
engleski se konacno formirao u Sekspirovo vreme), vrlo je neprecizan i njime dobro vladju samo skolivani
ljudi (iako im je on maternji jezik).
Mnogo sam se raspisao, dosta je.
Pozdrav.