Programmeerimiskeelte eristamiseks on palju võimalusi. Alustuseks jagunevad need erinevatesse paradigmadesse: funktsionaalsed, objektorienteeritud ja palju muud.

Programmeerimiskeelt saate klassifitseerida ka selle tõlkemeetodi järgi, millel on keele jõudlusele suur mõju. Kompileeritud programmeerimiskeeled on tavaliselt kiiremad kui tõlgendatud. Nii et sellistes olukordades nagu mänguarendus, mis nõuab kiirust, kipuvad arendajad kasutama kompileeritud keeli.

Mis on tõlkimine?

Tõlkeprotsess teisendab programmeerija kirjutatud koodi masinkoodiks, mida arvuti saab täita. Masinkood on madala taseme keele tüüp, milles on ühed ja nullid. Niisiis, tõlkija teisendab programmeerimiskeeles loodud kõrgetasemelise koodi masinkoodiks.

Ilma tõlkijateta peaksite kodeerima masinkeeles. Igas kõrgetasemelises programmeerimiskeeles, mida te tunnete, kasutatakse ühte kolmest tõlkemeetodist: kompilaator, tõlk või nende kahe hübriid.

Mis on kompilaator?

Kompilaator on tarkvara, mis teisendab kõrgetasemelises keeles kirjutatud lähtekoodi täitmiseks madala tasemega koodiks.

Ülaltoodud diagramm kujutab kompilaatorit selle kõige elementaarsemal kujul. Kompilaatoril on mitu faasi. Iga faas muudab koodi ühest olekust teise. Iga kompilaatori faasi eesmärk on luua väljund, mida järgmisel etapil on lihtsam manipuleerida. Kompilaatori üldine struktuur on järgmine:

  • Skanner: see faas võtab märkide voo ja rühmitab need märkideks, mis esindavad identifikaatoreid, stringi literaale ja nii edasi.
  • Parser: selles etapis rühmitatakse märgid lähteprogrammeerimiskeele grammatika alusel. See loob abstraktse süntaksipuu, mis on programmi moodustavate väljendite kogu.
  • Semantika: see faas viib läbi abstraktse süntaksipuu (AST) semantilise analüüsi. See kasutab lähtekeele reegleid tähenduse lisamiseks, määrates AST-avaldistele tüübid ja kontrollides nende kehtivust. AST muutub siis vahepealseks esituseks.
  • Intermediate Representation (IR): see faas teisendab algse programmi lähtekoodi masinkoodiks. See loob koostekoodi lihtsustatud versiooni. IR kasutab üht või mitut optimeerijat, et parandada IR-koodi ja koguda teavet selle masina kohta, milles see töötab. Optimeerija võib muuta programmi tõhusamaks, kiiremaks või isegi väiksemaks.
  • Koodigeneraator: see faas kasutab optimeeritud IR-koodi ja teisendab selle masinkoodiks.

Millised programmeerimiskeeled kasutavad kompilaatoreid?

Mõned populaarsed kompileeritud programmeerimiskeeled on järgmised:

  • C
  • C++
  • Mine
  • Ada
  • Fortran
  • COBOL
  • Lisp
  • Eesmärk-C
  • Swift

Üks kompileeritud keele kasutamise eelis on see, et see tuvastab kompileerimise ajal vead. See võimaldab teil sellised vead parandada ja seejärel proovida programmi uuesti kompileerida. Kompileeritud keeled ebaõnnestuvad väiksema tõenäosusega, kui need käivitatakse. Need keeled ei genereeri isegi käivitatavat programmi, kui lähtekoodis on süntaksivigu. Kuid semantilised vead ja muud käitusaja vead saavad sellest mööda.

Kompileeritud keeled käivituvad ka pärast kompileerimist väga kiiresti.

Mis on tõlk?

Tõlk on programm, mis tõlgib ja täidab korraga ühe koodirea. Seda protsessi korratakse seni, kuni tõlk jõuab antud programmi või skripti viimase koodireale.

Nagu ülaltoodud diagrammil näha, võtab tõlk kaks sisendit. Esiteks võtab see kogu lähtekoodi (programmi). Seejärel loeb see programmi esimese rea (sisendina), tõlgib ja käivitab selle. Kui see rida täidetakse õigesti, liigub see programmi või skripti järgmisele reale.

Erinevalt kompilaatorist ei tõlgi tõlk tervet programmi masinkoodiks. Selle asemel parsib ja analüüsib see antud koodirida enne selle käivitamist. Tõlk peaks alustama programmi – eriti suurema – käivitamist enne, kui kompilaator on selle tõlkimise isegi lõpetanud.

Millised programmeerimiskeeled kasutavad tõlke?

Mõned populaarsed tõlgendatud programmeerimiskeeled hõlmavad järgmist:

  • Python
  • JavaScript
  • Perl
  • MATLAB
  • BASIC

Kuigi tõlk hakkab koodi täitma kiiremini, ebaõnnestub see ikkagi, kui tal tekib tõrge. Programmeerijana peaksite sellise vea parandama ja programmi taaskäivitama. See sündmus toimub iga kord, kui tõlk avastab uue vea. Mõned vead võivad olla passiivsed, kui need on seotud harvaesinevate asjaoludega. Sellistel juhtudel, testimine on olulisem kui kunagi varem.

Tõlke on tavaliselt lihtsam arendada kui kompilaatoreid ja nende programmid on disainilt paremini kaasaskantavad.

Mis on hübriidtõlge?

Hübriidtõlkes kasutatakse kompilaatorit ja tõlki. Hübriidtõlge kompileerib kõrgetasemelise lähtekoodi madalama taseme vormiks, näiteks baitkoodiks. Seejärel kasutab see baitkoodi käitamiseks tõlki.

Hübriidtõlge võib programmeerimiskeeleti erineda, kuid kasutab seda üldist struktuuri. Üks populaarsemaid programmeerimiskeeli, mis kasutavad hübriidtõlget, on Java. Java kompilaator tõlgib selle lähtekoodi keelde Java virtuaalmasina (JVM) baitkood. Seejärel tõlgib tõlk JVM-i baitkoodi masinkoodiks.

Millised programmeerimiskeeled kasutavad hübriidtõlget?

Mõned populaarsed hübriidprogrammeerimiskeeled on järgmised:

  • Java
  • C#
  • Visual Basic
  • Erlang
  • F#

Hübriidtõlkega saate mõlemast maailmast parima. Koodi esmalt koostamine võimaldab teil vigu esimesel võimalusel lahendada. Hübriidkompilaatorite loodud baitkoodi on lihtsam tõlgendada kui kõrgetasemelist programmi lähtekoodi.

Erinevate tõlkemeetodite tundmise väärtus

Peaksite mõistma konkreetset tõlkemeetodit, mida keel kasutab, eriti kui kasutate seda uue projekti jaoks. Keeletõlkemeetod on programmeerimiskeele identiteedi oluline osa. See võib mõjutada seda, kuidas te oma programmi levitate ja kuidas kasutajad seda käitavad.

Igal tõlkeviisil on oma eelised. Parimad programmeerimiskeeled, nagu C++, Python ja Java, kasutavad erinevaid tõlkemeetodeid. Keele paradigma kõrval on selle tõlkemeetod üks olulisemaid tunnuseid, mida peaksite teadma.

Programmeerimiskeeles saab kasutada mitut paradigmat. Enamik populaarsemaid programmeerimiskeeli on mitme paradigma keeled; nad toetavad kahe või enama erineva paradigma kasutamist. Kolm kõige populaarsemat paradigmat on kohustuslik, objektorienteeritud ja funktsionaalne programmeerimine.