A fordítók típusai

A processzorok (gépi kód) nyelve általában alacsony szintű. Vannak olyan platformok, amelyek magas szintű nyelvet alkalmaznak gépi nyelvként (például iAPX-432), de a komplexitás és a magas költségek miatt kivételt képeznek a szabálytól. Az olyan fordítót, amely programokat konvertál egy gépi nyelvbe, amelyet a processzor fogad és hajt végre közvetlenül, fordítónak nevezik.

A fordító előnye: a program egyszer össze van állítva, és nincs szükség további konverziókra minden végrehajtásnál. Ennek megfelelően nincs szükség a fordítóra a célgépen, amelyre a program összeáll. Hátrány: egy külön fordítási szakasz lelassítja az írást és a hibakeresést, és megnehezíti a kis, egyszerű vagy egyszeri programok végrehajtását.

Egy másik végrehajtási módszer az, amikor a programot a tolmács segítségével végzik fordítás nélkül. A tolmács szisztematikusan szimulálja a gépet, a minta-végrehajtási ciklus a magas szintű nyelveken lévő parancsokkal működik, nem pedig gépi utasításokkal. Az ilyen szoftver modellezés virtuális gépet hoz létre, amely a nyelvet valósítja meg. Ezt a megközelítést tiszta értelmezésnek hívják. A tiszta értelmezést általában az egyszerű struktúrájú nyelvekre alkalmazzák (például egy tengeralattjáró vagy egy Lisp). A parancssori tolmács a parancsokat UN-parancsfájlokban vagy batch fájlokban (.bat) az MS-DOS-ban, rendszerint, tiszta értelmezési módban kezeli.

A tiszta tolmács előnye: a fordítási műveletek közbenső hiánya leegyszerűsíti a tolmács végrehajtását, és használatának megkönnyítésére, beleértve az interaktív módot is. Hátrány - a tolmácsnak elérhetőnek kell lennie a célgépen, ahol a programot végre kell hajtani.

Vannak kompromisszumok között összeállítása és tiszta értelmezés a megvalósítási módok, a programozási nyelvek, a tolmács végrehajtása előtt a program lefordítja egy köztes nyelvre (pl byte-kódot vagy p-kód), kényelmesebb értelmezési (azaz beszélünk a shell beépített fordító) . Ezt a módszert vegyes végrehajtásnak nevezik. A Perl példa egy nyelv vegyes végrehajtására. Ez a megközelítés előnyeit egyesíti mind a fordító és tolmács (nagy végrehajtási sebességet és az egyszerű használat) és hátrányai (broadcast és raktározási programok, további forrásokra van szükség egy köztes nyelvet, tolmácsot kell biztosítani a program végrehajtásához a célgép). Továbbá, mint abban az esetben a fordító, vegyes végrehajtása megköveteli, hogy a kivégzés előtt a forráskód nem tartalmaz hibákat (lexikai, szintaktikai és szemantikai).

A fordítás és a tolmácsolás különböző folyamatok: a fordítás az egyik nyelvről a másikra fordítja a programokat, és a tolmácsolás felelős a programok végrehajtásáért. Mivel azonban a fordítás célja általában a tolmácsolási program előkészítése, ezeket a folyamatokat általában együttesen vizsgálják. Például, a programnyelveket gyakran "összeállítottnak" vagy "értelmezve" jellemzik, attól függően, hogy a fordítás vagy a tolmácsolás a nyelvhasználat során érvényesül-e. És szinte minden alacsony szintű programozási nyelvek és harmadik generációs, például szerelő, C vagy Modula-2, összeállítják, és egy magas szintű, mint a Python vagy SQL, - értelmezni.

Másrészt ott van az átjárhatóságot a folyamatok a fordítási és tolmácsolási: tolmácsok lehet összeállítani (beleértve a dinamikus összeállítása), és a fordító lehet szükség tolmácsolás meta-programozási konstrukciók (például makrók assembly nyelven, feltételes fordítási a C vagy sablonok C ++).