Ebben a fejezetben a tiszta nyelvi sajátosságok helyett a nyelv egyes megvalósításait jelentő fordítóprogramokkal (esetleg értelmezőkkel) kapcsolatos szempontokat sorjázzuk, illetve a programozási nyelvek és fejlesztői környezetek egymástól nehezen elválasztható jellemzőit.
A több operációs rendszeren futás képessége előnyös lehet, hiszen támogatja az operációs rendszer esetleges váltását. De valódi problémamentességet csak akkor jelent, ha a különböző platformokon működő fordítóprogramok használatának eredménye szintaktikusan és szemantikusan ekvivalensek (és persze a fejlesztői környezetektől is ugyanezt várjuk el). Sajnálatos, hogy a Lazarus Linux környezetben bizonytalanul működik, szemben a viszonylagos Windows-os stabilitással. [HGy] Az egyik elterjedőben levő programozási nyelven, a C#-ban írt alkalmazások többplatformúságát hivatott támogatni a mono projekt, ami azonban nem minden esetben nyújt tökéletes megoldást. Ugyanez a helyzet a fejlesztői környezetek tekintetében, a Linux alá készített MonoDevelop messze kevesebbet tud jelenleg a Visual Studio-nál. Hasonló problémával szembesülünk, ha webes alkalmazást készítünk, az operációs rendszer helyébe – természetesen – a böngésző lép, amely képes futtatni egy ilyen nyelvű kódot. Sajnos a szemantikus ekvivalencia messze nem teljesül ma még. A szintaktikában is vannak váratlan különbségek.
A fordítási stabilitás alatt azt értjük, hogy a fordítás sikeressége nem függ a fordító verziószámától, azaz felülről kompatibilisek. Negatív példaként említhető a C++ fordító (gcc) egyes verzióváltása során tapasztalt jelenség: a rendszerkönyvtár fájljainak tartalma némileg megváltozott, így egy korábban szintaktikusan helyes programot az újabb fordító hibásnak jelez. (Bizonyos nyelvi elemek egy olyan header-állományba kerültek át, amely korábban nem volt include-álandó.) Hasonló probléma Visual Basic esetében is említhető: két verzió között megváltozott a default paraméterátadási mód.
Végrehajtási stabilitás azt jelenti, hogy a választható végrehajtó környezet milyenségétől, vagy a fordítóprogram verziószámától függetlenül azonosan fut-e a készített program. Ebből a szempontból kritikusak a szkript nyelvek. A JavaScript programok hajlamosak másként működni pl. Explorerben, mint FireFox böngészőben. Helyenként a szintaxis is más.
Sajnos nem csak a szkript nyelvek szolgálnak említhető példával. Ui. a FreePascal 1.0.10 verzió számú fordítójával készült tárgykód végtelen ciklusba esett textfájlolvasás közben, ha az utolsó sor végén hiányzott a sorvégjel, míg az őssel, a TP7-tel (Turbo Pascal 7-es verziójával) fordítva helyesen futott le.
![]() ![]() |
![]() |
![]() |
A tananyag az ELTESCORM keretrendszerrel készült