A programozási nyelvek megkülönböztetésének számos módja van. Kezdetben különböző paradigmákba esnek: funkcionális, objektumorientált és még sok más.
A programozási nyelveket a fordítási módszere alapján is besorolhatja, ami nagy hatással van a nyelv teljesítményére. A lefordított programozási nyelvek általában gyorsabbak, mint az értelmezettek. Tehát az olyan helyzetekben, mint a játékfejlesztés, amelyek sebességet igényelnek, a fejlesztők hajlamosak a lefordított nyelveket használni.
Mi a fordítás?
A fordítási folyamat a programozó által írt kódot gépi kóddá alakítja, amelyet a számítógép végrehajthat. A gépi kód egy alacsony szintű nyelvtípus, amelyben egyesek és nullák vannak. Tehát a fordító a programozási nyelven létrehozott magas szintű kódot gépi kóddá alakítja.
Fordítók nélkül gépi nyelven kellene kódolnia. Mindegyik magas szintű programozási nyelv, amelyet ismer, három fordítási módszer egyikét használja: fordítóprogramot, tolmácsot vagy a kettő hibridjét.
Mi az a fordító?
A fordítóprogram olyan szoftver, amely a magas szintű nyelven írt forráskódot alacsony szintű kóddá alakítja végrehajtás céljából.
A fenti diagram egy fordítóprogramot ábrázol a legalapvetőbb formájában. A fordítóprogramnak több fázisa van. Minden fázis átalakítja a kódot egyik állapotból a másikba. Az egyes fordítói fázisok célja egy olyan kimenet létrehozása, amelyet a következő fázis könnyebben kezelhet. A fordítóprogram általános felépítése a következő:
- Szkenner: ez a fázis egy karakterfolyamot vesz fel, és azokat tokenekbe csoportosítja, amelyek azonosítókat, karakterlánc-literálokat stb.
- Elemző: ez a fázis csoportosítja a tokeneket a forrásprogramozási nyelv nyelvtana alapján. Létrehoz egy absztrakt szintaxisfát, amely a programot alkotó kifejezések gyűjteménye.
- Szemantika: ez a fázis szemantikai elemzést végez az absztrakt szintaxisfán (AST). A forrásnyelv szabályait használja, hogy jelentést adjon az AST kifejezésekhez típusok hozzárendelésével és érvényességük ellenőrzésével. Az AST ekkor köztes reprezentációvá válik.
- Intermediate Representation (IR): ez a fázis az eredeti program forráskódját gépi kóddá alakítja. Az összeállítási kód egyszerűsített változatát állítja elő. Az IR egy vagy több optimalizálót használ az infravörös kód javítására és a futó gép információinak összegyűjtésére. Az optimalizáló hatékonyabbá, gyorsabbá vagy akár kisebbé teheti a programot.
- Kódgenerátor: ez a fázis felhasználja az optimalizált IR kódot és gépi kóddá alakítja.
Mely programozási nyelvek használnak fordítókat?
Néhány népszerű lefordított programozási nyelv:
- C
- C++
- Megy
- Ada
- Fortran
- COBOL
- Selypít
- Célkitűzés-C
- Gyors
A lefordított nyelv használatának egyik előnye, hogy a fordítás során azonosítja a hibákat. Ezzel kijavíthatja az ilyen hibákat, majd megpróbálhatja újra lefordítani a programot. A lefordított nyelvek kevésbé valószínű, hogy meghibásodnak, ha megkezdik a végrehajtást. Ezek a nyelvek nem is generálnak futtatandó programot, ha a forráskódban szintaktikai hibák vannak. A szemantikai hibák és a futásidejű hibák egyéb formái azonban túllépnek rajta.
A lefordított nyelvek a fordítás után is nagyon gyorsan lefutnak.
Mi az a tolmács?
Az interpreter egy olyan program, amely egyszerre egyetlen kódsort fordít le és hajt végre. Ez a folyamat addig ismétlődik, amíg az értelmező az adott program vagy szkript utolsó kódsorához nem ér.
Amint a fenti diagramból látható, egy tolmácsnak két bemenetre van szüksége. Először a teljes forráskódot (programot) veszi. Ezután beolvassa a program első sorát (bemenetként), lefordítja és végrehajtja. Ha ez a sor megfelelően fut, akkor a program vagy a parancsfájl következő sorára lép.
A fordítókkal ellentétben a tolmács nem fordít le egy teljes programot gépi kódra. Ehelyett elemzi és elemzi egy adott kódsort, mielőtt végrehajtaná. A tolmácsnak már azelőtt el kell kezdenie futtatni a programot – különösen egy nagyobbat –, mielőtt a fordító befejezte volna a fordítását.
Mely programozási nyelvek használnak tolmácsokat?
Néhány népszerű értelmezett programozási nyelv:
- Piton
- JavaScript
- Perl
- MATLAB
- ALAPVETŐ
Bár a tolmács gyorsabban kezdi meg a kód végrehajtását, akkor is meghiúsul, ha hibát észlel. Programozóként ki kell javítania egy ilyen hibát, és újra kell indítania a programot. Ez az esemény minden alkalommal előfordul, amikor a tolmács új hibával találkozik. Egyes hibák szunnyadhatnak, ha ritka körülményekhez kapcsolódnak. Ilyen esetekben, a tesztelés fontosabb, mint valaha.
A tolmácsokat általában könnyebb fejleszteni, mint a fordítókat, és programjaik tervezésüknél fogva jobban hordozhatóak.
Mi az a hibrid fordítás?
A hibrid fordítás fordítót és tolmácsot alkalmaz. A hibrid fordítás a magas szintű forráskódot egy alacsonyabb szintű formára, például bájtkódra fordítja. Ezután egy értelmezőt használ a bájtkód futtatásához.
A hibrid fordítás programozási nyelvenként eltérő lehet, de ezt az általános struktúrát fogja használni. Az egyik legnépszerűbb hibrid fordítást használó programozási nyelv a Java. A Java fordító lefordítja a forráskódját Java virtuális gép (JVM) bájtkódja. A tolmács ezután a JVM bájtkódot gépi kódra fordítja.
Mely programozási nyelvek használnak hibrid fordítást?
Néhány népszerű hibrid programozási nyelv:
- Jáva
- C#
- Visual Basic
- Erlang
- F#
A hibrid fordítással mindkét világból a legjobbat hozza ki. A kód első fordítása lehetővé teszi a hibák mielőbbi megoldását. A hibrid fordítók által létrehozott bájtkód könnyebben értelmezhető, mint egy magas szintű programforráskód.
A különböző fordítási módszerek ismeretének értéke
Meg kell értenie az adott nyelv által használt konkrét fordítási módszert, különösen, ha egy új projekthez használja. A nyelvi fordítási módszer a programozási nyelv identitásának fő része. Ez hatással lehet a program terjesztésére és a felhasználók futtatására.
Minden fordítási megközelítésnek megvannak a maga előnyei. A legnépszerűbb programozási nyelvek, például a C++, a Python és a Java, mind különböző fordítási módszereket használnak. A nyelv paradigmája mellett a fordítási módszere az egyik legfontosabb tulajdonság, amellyel tisztában kell lennie.
Számos paradigma létezik, amelyet egy programozási nyelv használhat. A legtöbb legnépszerűbb programozási nyelv többparadigmás nyelv; támogatják két vagy több eltérő paradigma használatát. A három legnépszerűbb paradigma az imperatív, az objektumorientált és a funkcionális programozás.