(k prvnímu odstavci se nebudu vyjadřovat, ostatně rok narození Javy je taky relativně malý :-)
ad rychlost překladu: Wirth navrhl Pascal tak, aby se pro jeho zpracování mohl používat LL parser (proto se LL parserům říkalo "evropské", Wirth se těmito parsery zabýval a snad všechny jeho jazyky jsou na něm postaveny). A LL parser je možné napsat hodně efektivně, prakticky (teď přeháním) s okamžitým generováním výsledného objektového kódu. Taky se Pascal moc nezdržoval nějakým velkým preprocesingem (i když TP měl include apod.), překlad byl z velké části hotov v prvním průchodu atd.
Těch vychytávek tam bylo několik, ale základem byl Pascal jako formální jazyk založený na LL gramatice. Zajímavé bylo, že Borland vydával i obdobu C/C++, jak pro Turbo Pascal (Turbo C), tak i pro Delphi (Borland C++ Builder), ale ta rychlost byla možná i řádově jinde (i přesto, že tam dělali triky s předzpracovanými headery atd.). Ono jen pitomé #include <windows.h>, nebo co tam bývalo, si vzalo spoustu času.
Jde hlavně o to, že je to byl jednoprůchodový překladač navíc bez větších optimalizací. V podstatě je to Pascal -> exe
C je na parsování také poměrně jednoduchý jazyk, možná ještě jednodušší než Pascal, ale je tam několik etap, které dříve vyžadovaly zápis na disk a start dalšího překladače nebo linkeru. Navíc u Cčka bude dost náročná evaluace (interpretace) maker. U Cčka je preprocesor -> C -> asm -> stroják -> linker.
Pascal je novější jazyk, který reflektuje silnější počítače a snaží se o rychlejší vývoj (a rychlost běhu aplikací není absolutní kritérium). Cčko byl systémový jazyk (tudíž přirozený bottleneck), a navíc vznikal na starších mašinách, kde šlo vůbec o to dokončit překlad. Rychlost vývoje v Cčku se porovnávala s assamblerem (tudíž pro Cčko super, i když to bylo výrazně pomalejší než v Pascalu). Ale z té perspektivy se na Cčko nikdo nedíval.
Pascal byl aplikační jazyk, Cčko byl systémový jazyk. Ve starých učebnicích se píše něco ve smyslu - v shellu máte extrémně rychlý a jednoduchý vývoj, ale výsledek je pomalejší, a pokud by byl extrémně pomalý, tak to napište v Cčku. A Pascal byl výrazně lepší alternativou shellu (nebyl alternativou Cčka).
6. 1. 2022, 19:53 editováno autorem komentáře
jojo, jednoprůchodový překladač, co prakticky hned generoval objektový kód, je v tomto super.
Jinak k tomu, že C je jednodušší - v C je problém, že se parser (pokud je top-down, což právě není) musí často vracet, protože "strašně dlouho" neví, co vlastně má na vstupu. Třeba takové "int **foobar" (a můžeme tady mít pole atd.) - překladač stále v tento okamžik neví, co vlastně má na vstupu, protože to může být jak deklarace proměnné, tak i deklarace funkce.
Nebo často ukazované "a * b;" - tady musí mít parser tabulku symbolů, aby dokázat rozhodnout, jestli je to násobení dvou proměnných nebo deklarace proměnné typu "ukazatel na a". Pascal je strašně ukecanej mj.i proto, aby toto dokázal rozhodnout dopředu (resp. dopředu věděl, co se vlastně překládá).
Tady si možná nerozumíme. Myslím si, že náročnost parseru Cčka a Pascalu je stejná. Co je jiné - parser Pascalu může generovat strojový kód, případně p kód. Z Cčkového parseru mi vypadne AST, které se pak dál zpracovává. To další zpracování už ale nepovažuju za parsování.
Jinak ta realita byla jiná - Wirthův Pascal překládal do pcodu - takže z dnešního pohledu by to byl spíš interpret, a co si vzpomínám, tak M-Pascal byl také více průchodový. Turbo pascal by revolucí (a co mne dostalo, a i jsem ho používal, tak byl běh na 8bit CP/Mku). Nicméně pokud se používaly unity nebo overlaye, tak to na jeden průchod také nebylo. 4kový Turbo Pascal uměl uložit unity v paměti (tam se dalo zapínat/vypínat linkování).
Na ZX Spectru byl velice slušný český microbáze Pascal. Ten byl tuším také jednoprůchodový, ale překládal do pcodu. Co mne mrzelo, že tam nedopsali podporu pro Didaktik Gamu, který měl navíc 32KB RAM. Dneska už bych možná dokázal nějak ohackovat (protože to "IDE" podporovalo streamy), ale před těmi 35 roky jsem na to neměl (a ani mne to nenapadlo).
Pak mi známy zabudoval 272 KB RAM s podporou CP/M od Lamače s ramdiskem (disketovou mechaniku jsem neměl - ta už byla příliš drahá, a tehdy jsem ještě neměl přístup k nějakým zbytkům). Jsem stavař, nejsem elektrikář. Turbo Pascal tam fungoval hodně dobře. V prváku jsem na tom napsal jednu semestrálku. Bohužel to byla ale labutí píseň mého didaktika. Ty český (slovenský) tišťáky po pájení se začaly odlepovat, a byl konec :-/.
btw viděl jsi AMOS? To byl hodně dobrý SW pro špatný HW (tady nebylo z čeho brát) http://iq151.net/download/Amos_Pascal.pdf U nás to chvíli běželo na průmyslovce, potom to nahradila PCčka.
S AMOSem jsem se těsně minul - dělal jsem stavební průmyslovku v Mělníce - škola to byla fantastická, byli tam fajn lidi jako lidi i jako učitelé, a bylo to tak nějak i na pohodu. Ale ohledně IT to byla bída (asi lepší to bylo na gymplech, ale já nejsem univerzitní typ) - měli jsme tam učebnu s IQ, možná i nějak zasíťovanou, mám pocit, že tam byla i nějaká 8" disketa, ale tehdejší učitel, co nás učil informatiku, to učil asi jen proto, že byl ze sboru nejmladší a počítačů se bál nejmín. Ale pro všechny tehdy to byla dost neuchopitelná technologie. Jestli tam AMOS byl, netuším, ale Pascal nás nikdo neučil. A ve čtvrťáku už se přecházelo na PC. Nějak si vybavuju, že jsem s tím fyzikářem (co nás učil informatiku) zprovozňoval autocad, což bez znalosti PC, a bez internetu byl porod. Zápolili jsme s úplnou blbostí - jako, že se musí restartnout PC po změně config.sys atd.
O AMOSu jsem pak četl relativně nadšený články - z IQ to dostávalo maximum (něco o tom vyšlo v speciálech VTM), ale na živo si nevynavuju, že bych s tím dělal. Vím, že ten Pascal v AMOSu je tentýž jako v Microbáze Pascal, resp.Microbáze Pascal je snad port AMOSe z IQ na ZX Spectrum. Detaily asi znají jen pamětnicí - byl to projekt MatFyzu.
Ale assembler v něm ještě nebyl, pouze možnost pomocí INLINE psát přimo hexakód. Což bylo pořád fajn. Když jsem si psal prográmek pro tisk na Merkur Alfi, tak většina byla v Pascalu (čtení souboru, definice znakové sady apod.) A pouze rutiny pro ovládání krokových motorků byly ve strojáku. A s Bity do bytu od L. Zajíčka se to nakonec podařilo dát dohromady.
8. 1. 2022, 20:14 editováno autorem komentáře
V TP3 na CP/M (Sharp) ještě nebyl assembler, pouze možnost pomocí INLINE psát přímo hexakód. Což bylo pořád fajn. Když jsem si psal prográmek pro tisk na Merkur Alfi, tak většina byla v Pascalu (čtení souboru, definice znakové sady apod.) A pouze rutiny pro ovládání krokových motorků byly ve strojáku. A s Bity do bytu od L. Zajíčka se to nakonec podařilo dát dohromady.
8. 1. 2022, 20:31 editováno autorem komentáře
FEL měla na Karlově náměstí v Praze učebnu vybavenou počítači IQ 151 zapojenými do sítě, fungoval na tom nějaký Pascal, ovládání podobné jako TP (možná to byl ten AMOS). Překlad byl tradičně okamžitý, výpočet elektrického pole pak už trval asi 20 min :-). Jinou verzi Pascalu jsme ještě používali na počítačích PP06, zde ovšem v režimu uložit - přeložit - spustit, vše manuálně.
Ono i mezi 8bit CPU byly rozdíly. Ale i dost možná, že ten Pascal v Amosu negeneroval asi nejlepší kód (pokud je něco zmíněno, tak komplikovanější implementace rekurze). Je otázkou, jestli pro 8080 se dalo něco vymyslet. Vzpomínám si na článek, kde si někdo pochvaloval rychlost HiSoft Pascalu (v celočíselných operacích) vůči XT