e-mail    Debatní kniha    Mapa stránek    Hlavní  
 Pascal 
 
Na této stránce jsem se pokusil napsat přehled překladačů pascalu. Ne všech, ale těch pro mě zajímavých, tzn. schopných překládat pro DOS. Snažím se informace udržovat jakžtakž aktuální, ale ne vždy se to daří, proto omluvte určité zastarávání informací.

FreePascal (FPC) je v současnosti asi dvojkou v překladačích pascalu. Nejsilnější ve smyslu s nejsilnějším zázemím a nejpoužívanější je pořád ještě Delphi. (nyní, v 4/2010 ve verzi Delphi 2010). Oproti Delphi umí překládat i pro jiné operační systémy než Windows a dokonce pro jiný hardware. Podrobný přehled cílových platforem najdete na oficiálních internetových stránkách. Kolem Freepascalu je dost aktivní komunita a k dispozici je hodně spoustu rozšiřujících knihoven. Týkají se ale převážně různých rozhraní windows, což pro DOSaře není až tak zajímavé, ale přesto je fajn, že přes Freepascal lze používat DirectX, SDL, OpenGL a mnoho dalších moderních rozhraní.
Co se týká syntaxe jazyka, tak podporován je celý dialekt Turbo pascalu a kromě něj téměř všechna rozšíření Object pascalu, potažmo Delphi. Množství záváděných nových prvků postupně roste, tak jak se nově objevují v nových verzích Delphi. Určitou stinnou stránkou je fakt, že i když se zprvu zdá, že stále zůstává zachována zpětná kompatibilita, tak se některé věci mění pod kapotou, což může vést k obtížím při používání vkládaného assembleru.
Pokud se zaměříme na systém DOS (32.bitový protekt), tak je třeba hned poznamenat, že podpora DOSu se velmi liší v první a druhé generaci Freepascalu. Poslední oficiální verze 1. generace je verze 1.0.10. Poté vyšlo ještě několik updatů (tzv. snapshotů), které byly číslovány jako 1.0.11, ale vývoj byl ukončen. Podpora DOSu je v této řadě vynikající a velmi se mi líbí chování IDE i Debuggeru. Otázkou je téma chybovosti této řady. Je fakt, že IDE, ač jinak moc pěkné, se občas chová trochu nestabilně a čas od času je ho potřeba vypnout a zase zapnout. Důležitější ale je, jestli nejsou chyby v generovaném kódu. Já jsem našel dvě věci, která se dají klasifikovat jako jednoznačná chyba a kromě toho mám čas od času podezření na chování paměťového manageru ve chvílích kdy intenzivně alokuju a uvolňuji větší množství paměti.
Jinak se dá ale říct, že mě nic zásadně netlačí k definitivnímu přechodu na druhou generaci.
Druhá generace FPC prodělala velké množství interních změn. Dá se říct, že celý překladač byl přepsán. To na jednu stran autorům umožnilo snazší přidávání podpory nových platforem, ale na druhou stranu neproběhlo důkladné testování pro systém DOS. První verze byly pro DOS nepoužitelné a vývojový tým velmi vážně uvažoval nad tím, že jeho podporu úplně ukončí. Naštěstí se tak ale nestalo a jeho podpora se, sice jen velmi zvolna, ale přesto zlepšuje. Zpočátku byly chyby přímo i v generovaném kódu. To se již ale vyřešilo a nyní jsou nepříjemné obtíže s podpůrnými jednotkami, což sebou obnáší i určité problémy v IDE. Největší problém vidím nyní v tom, že debugger chybně uchovává stav obrazovky v grafických aplikacích. Dokud jsme v textovém módu, tak se debugger chová velmi pěkně. Jakmile ale náš program přepne do grafiky, tak se po prvím přerušení programu smaže obsah obrazovky. Taky občas zmizí kurzor myši v IDE.
Každopádně se dá říct, že i přes dílčí nesnáze jsou poslední verze v DOSu použitelné. V době psaní tohoto textu (12/2010) je poslední verze 2.4.2. Já osobně jsem ale zůstal u 2.2.4. Co se týká verzí, tak mě vadí přístup vývojového týmu, kdy z webu postupně stahují staré verze překladače. Odůvodňují to tím, že snad starší verze obsahovaly části s uzavřeným kódem či co, ale příjde mi to jako neadekvátní krok. Na oficiálních stránkách tedy nelze stáhnout verze 1.0.10 ani rané dvojkové verze.
Byl bych moc rád, kdyby vývoj DOSové větve probíhal lépe než dosud. Je spousta věci, které mohou býz zlepšeny. Stav unitu Graph rozhodně není uspokojivý, dále mi chybí zvuková knihovna (i při vědomí, že je pořád větší a větší problém sehnat Soundblaster kompatibilní hardware), pro DOS by se dal adaptovat pascalovský port jednotky Allegro a pro DOS by se daly adaptovat i jiné knihovny. A IDE by mělo navázat na aktuální verze podpůrných jednotek a oprostit se od jejich duplicitních a neudržovaných ekvivalentů
Ale je to o motivaci. Kmenovým vývojařům těžko mít za zlé, že DOS je pro ně na okraji zájmu. Smutné je, že slabá podpora je i od externistů - DOSařů. To se týká i mně. Dříve jsem přispěl několika patchi, ale od té doby co pracuji, je těžké pustit se do tak velkého projektu, jakým FPC je.

TMT pascal - dříve šlo o velice pěkný, rychlý a schopný překladač. Mnohé jeho vlastnosti byly lepší než vlastnosti FPC z té doby. Z hlediska DOSu bylo příjemné, že pro přístup k paměti je použit tzv. "flat mode", kdy celá paměť počítače, včetně DOSové oblasti, je adresovatelná jediným selektorem. Toto pojetí usnadňovalo DOSové programování a také umožňovalo poměrně snadnou tvorbu DLL knihoven. (to je věc, kterou DOSové verze Freepascalu neumějí). Myslím si, že projektu uškodila absence IDE a laxní přístup vývojáře. Doplňujících jednotek a různých doprovodných zdrojáků bylo vždy dost málo. A nejspíše došlo k prodeji značky jiné společnosti, což také překladači ublížilo. TMT pascal je možné získat ve dvou verzích. Jednak verze 3.90, která je pouze DOSová, už hodně stará, ale nadruhou stranu zdarma a víceplatformní a platná verze, v současnosti (4/2010) verze 6.1
Verze 6.1 je z roku 2009, což by svědčilo o tom, že projektu se daří dobře. Spíše si ale myslím, že TMT pascal dodělává. Webové stránky jsou zmatečné, není ani jasné, jestli se produkt nadále nazývá TMT pascal, nebo zda se přešlo na označení Framework pascal. A podle výčtu změn to vypadá, že od prastaré verze 4.0 se nic podstatného nepřidalo. A krokem zpět je, že ačkoliv je verze 3.9 zdarma, tak nyní ze stránek nejde jednoduše stáhnout. A taky zmizela informace o ceně multiplatformní verze. Ale já si pamatuju, že stávala 349 dolarů. Pro amatéra moc. Na internetu jsem nikdy nenašel žádnou warezovou multiplatformní a tedy novější verzi TMT pascalu (což mnohé vypovídá o jeho rozšířenosti), takže jsem zkoušel jenom verzi 3.90. Pokud oželíte IDE a prakticky neexistující podporu, tak je dobře použitelný a potěší malá velikost přeložených programů. Kompatibilita s Turbo pascalem je velmi dobrá, přepisovat je třeba jenom assemblerovké pasáže, což je zapříčiněno tím, že TMT pascal překládá pro 32.bitový protekt. Podporována jsou i některá rozšíření raných verzí Delphi.
V krátkém období, kdy jsem TMT používal, jsem náhodně zjistil, že verze 3.90 nesnese u cyklů změnu řídící proměnné cyklu, jak je to u placených verzí, nevím.

Virtual pascal je další velice schopný překladač. Oficiálně už není dále vyvíjen a z internetu zmizela i stránka projektu. Celý Virtual pascal by se asi byl vypařil, kdyby ho nedržel nad vodou Stefan Weber a jeho program Necromancer's DOS navigator. Ten je právě ve VP psaný a když začal původní sajt odumírat, tak Stefan vzal Virtual pascal pod svá křídla a dokonce do něj doplnil některé patche. Jde o multiplatformní překladač a kromě 32.bitového DOSového protektu překládá i pro Windows, Linux a OS/2. Abych byl přesný - tak pro DOS původně podpora nebyla a byla doplněna až pozdějším patchem. Program samotný je konzolová windowsí aplikace, ale pomocí triku, DOSového extenderu HX-DOS, může běhat i pod čistým DOSem. Stejně jako TMT pascal používá pro DOSové programy extendery operující s flat režimem. Na rozdíl od TMT je ale možné vybrat si mezi více extendery: DOS4GW, WDOSX, PMODE a Zurenava. Přesto, že Virtual pascal původně DOS nepodporuje, tak fungují i DOSové nízkoúrovňové konstrukce, vestavěný assembler, pole port a mem. Virtual pascal podporuje konstrukce Borland pascalu 7 a Delphi 2. Součástí VP jsou všechny standardní jednotky i vynikající port Turbo vision.

GNU pascal Je dosti tajuplný překladač. Je to jakýsi doplněk GNU C, tedy céčkového kompilátoru, v DOSovém prostředí nazývaném DJGPP. Sdílí s ním většinu kompilačního kódu, konkrétně backend. Překladače z rodiny DJGPP totiž fungují ve dvou krocích, které se nazývají frontend a backend. Frontend provádí překlad z úrovně programovacího jazyka na jakýsi pseudoasembler a backend překlad z pseudoassembleru a normální assembler a potažmo strojový kód. GNU pascal podporuje mnoho platforem, nicméně jeho domovské prostředí je Linux. Je kompatibilní s borlandem, s ISO a s extended pascalem. Rovněž má nějaké vlastní rozšíření.
V současnosti se dá říct, že GNU pascal je mrtvá větev, projekt byl pohlcen Freepascalem a další vývoj již pravděpodobně neprobíhá. Přesto prosím o zprávy z bojiště.

Irie pascal Je další multiplatformní překladač. Mrzuté ale je, že podpora DOSu byla ukončena a poslední verze 2.6 podporuje už jenom Winsows, Solaris, Linux a FreeBSD. Ale starší verze, tuším že ještě 2.1, DOS podporovaly. Jestli se nic nezměnilo, tak Irie nekompiluje do strojového kódu ale do jakéhosi bytekódu (soubory mají koncovku .IVM), který právě zajišťuje přenositelnost.
Překladač není plně kompatibilní s Turbo pascalem.

Delphi (32.bitové verze) Co, že Delphi je jenom pro Windows ? No, existuje způsob, jak delphi ošálit a vyvíjet pod ním DOSové aplikace. Delphi totiž využívá jenom velmi málo windowsích služeb, které se navíc dají emulovat. A tím emulátorem je DOSový extender WDOSX. Program vyvíjíte jako konzolovou aplikaci a na zkompilovaný exáč pak prsknete patch, který ji přemění na DOSovou v chráněném režimu. Můžete tak využít všech možností jazyka delphi. Tento postup by měl fungovat na verzi 2 a všechny pozdější. Původní stránky projektu už neexistují. Odkaz míří na skupinu na Yahoo, kde přežívá, či spíše skomírá, podpůrná skupina tohoto projektu. Jsou tam i nějaké soubory ke stažení, ale hlavní balík tam chybí.
Naštěstí ho ale mám ve svých archívech, takže jsem ho nahrál sem

Delphi 1 se prezentuje jako vývojové prostředí pro 16.bitová windows, ale pomocí skrytých přepínačů ho lze navolit, aby produkovalo kód i pro DOS. Důležité je, že (kromě 16-bitového protektu) umí překládat i pro reálný režim. Z výčtu překladačů výše je zřejmé, že existují dobré 32-bitové DOSové kompilátory, ale je problém s alternativami pro reálný režim. A právě v tom jsou Delphi 1 jedinečné. Je to nejpokročilejší pascalovský překladač pro reálný mód. Umožňuje používat nové prvky jazyka object pasval v realmódových programech včetně konstrukcí try-except-raise. Je to nicméně zcela neoficiální použití Delphi a uspůsobit je pro překlad DOSových programů je obtížné. Pod odkazem najdete kompletní balík, kde už je vše připraveno. Určitým zklamáním pro mě ale je, že ani Delphi 1 nepodporují ve vkládaném assembleru přímý přístup k 32-bitovým registrům. Nadále je třeba používat otravné db 66h;xor ax,ax místo xor eax,eax


 
To by byly ty nejdůležitější překladače. Ještě jednou opakuji, že existují i další, ale ty nepodporují DOS, tak je do tohoto přehledu nezařazuji. Závěr je ale jasný - kromě komerčních Delphi v současnosti jasně dominuje Freepascal.

Dále existovaly ještě několik jiných DOSových překladačů, ale ty byly tak nedokonalé, že v praxi nešly použít. Všechny byly pro 32.bitový DOS. Jejich internerové stránky jsou již mrtvé, ze sítě se nejspíše úplně vypařily a zbyly po nich jenom názvy:
Dpas, P32, Pascal Pro.

I když úplně všechno to ještě není.
Z nějakého důvodu je jazyk pascal oblíbený u ametérských tvůrců překladačů a existuje poměrně dost studentů, kteří si jako diplomovou práci zvolili napsání jednoduchého překladače pascalu. A také málokdo ví, že i Microsoft kdysi dávno napsal svůj kompilátor pascalu. Pak ale stáhnul ocas a nechal se zcela vytlačit firmou Borland a jejich Turbo pascalem.
Laacovy archávy jsou ale hluboké, takže tady máte dávku exotiky a v archívu najdete Quick pascal od Microsoftu a několik studentských projektů. Těch studentských projektů je pochopitelně víc, ale znovu mě zajímaly jenom ty, které podporují DOS.

 
Visual Basic 1.00 pro DOS

Jasně, já vím, že na stránkách o pascalu nemá basic co dělat, ale Visual Basic pro DOS mi přijde jako taková bomba, že ho sem umístit prostě musím. Velmi pěkné. Podobně jako ve verzích pro windows i tady prostě vizuální navrhujete vzhled oken a umisťujete na ně různé grafické prvky. Funguje to výborně, program je sice možná trochu nemotorný, ale to jsou detaily. Oproti například QBASICu tu je i kompilátor do EXE. Výsledný program běží v textovém módu - v 80x25, ale tahá z něj opravdu maximum, může se klidně měřit s Turbo vision.
Pro začátek doporučuji shlédnout vynikající tutorial Learn.
Kdysi jsem našel stránku, která se tomuto programu věnuje podrobněji.
V roce 2010 jsem bohužel odkaz musel přesměrovat na www.archive.org, nebude fungovat lokálně stahování :-(

Sehnal jsem ještě jednu prima věc. Je to teda další překladač BASICu, a to Turbo Basic. Vypadá to, že je úplně kompatibilní s QBASICem, ale umí kompilovat do EXE !
Jo, tak ještě do třetice, freewarový Power Basic. Je podobný předešlému, ale je novější a takový příjemnější.



Přehled překladačů
ČLÁNKY
Věci na stáhnutí
Odkazy k tématu
BP7 buglist
Chyba Run-time 200

BASIC






WebZdarma.cz