OT: konecne poriadny piatkovy flame na temu "to C or not to C" Was: Vyctovy typ v C

Ales Prochaska prochaska@alsoft.cz
Pondělí Září 3 10:44:30 CEST 2007


Toto je dosti rozsireny omyl, ze vyssi jazyky musi generovat
neefektivni kod. Spis by bylo lepsi rict, ze efektivni kod se da
ziskat dvema odlisnymi postupy: jedna moznosti je pouziti nizsiho
jazyka s dobrou viditelnosti a ovladatelnosti kodu (tj. lze snadno
odhadnout jaka konstrukce vygeneruje jaky kod) a pak sikovne
programovat tak aby byl vysledek skutecne efektivni. Kdyz prekladac
jeste obsahuje vlastni optimalizace na urovni generatoru kodu, tim
lepe. Typicky priklad je plain C. Druha varianta je pouzit naopak
vyssi jazyk, ponekud nepresne ale zazite oznacovany jako "se silnou
typovou kontrolou", ve kterem jednotlive programove konstrukce nesou
podstatne vetsi mnozstvi informace o tomco programator asi tak
zamysli. Typicky priklad je Ada. V prvnim pripade prekladac "nevi" ze
kopiruju jedno pole do druheho nebo ze spoustim novy thread nebo neco
takoveho, ma jen jakysi cyklus nebo volani jakesi funkce. Muze se
pokusit to poznat z kontextu, ale to funguje jen u skutecne
jednoduchych pripadu, takze obecne mu nezbyva nez co nejlepe prelozit
ten cyklus nebo to volani funkce. V druhem pripade prekladac presne
vi, ze se kopiruje pole (spousti thread, hleda v databazi, ...) a muze
to celkem efektivne prelozit bez ohledu na to, zda mu programator
snazil "pomoct" nebo nikoliv. Tech optimalizacnich prostredku je v
druhem pripade obecne vic a jsou k dispozici ve vsech fazich prekladu.

Ales Prochaska

> Narvěte kód z OOP jazyka do malého nevýkoného mikropočítače a zkuste
> si ho spustit. To tam pak s jazykem který provádí kontroly na každém
> rozhu strávíte na triviální úloze mládí. Když ho rozběhnete.
> Představoval jsem si jádro OS napsaný v nějakém vyšším OOP jazyce a
> raději jsem si to přestal představovat.

> ced








Další informace o konferenci Hw-list