Yra daug būdų, kaip atskirti programavimo kalbas. Iš pradžių jie patenka į skirtingas paradigmas: funkcines, į objektą orientuotas ir dar daugiau.
Taip pat galite klasifikuoti programavimo kalbą pagal jos vertimo metodą, o tai daro didelę įtaką kalbos našumui. Sukompiliuotos programavimo kalbos paprastai yra greitesnės nei interpretuojamos. Taigi tokiose situacijose kaip žaidimų kūrimas, kai reikia greičio, kūrėjai linkę naudoti sudarytas kalbas.
Kas yra Vertimas?
Vertimo procesas konvertuoja programuotojo parašytą kodą į mašininį kodą, kurį kompiuteris gali vykdyti. Mašininis kodas yra žemo lygio kalbos tipas, kuriame yra vienetų ir nulių. Taigi, ką vertėjas daro, tai konvertuoja aukšto lygio kodą, kurį sukuriate programavimo kalba, į mašininį kodą.
Be vertėjų tektų koduoti mašinine kalba. Kiekvienoje aukšto lygio programavimo kalboje, kurią žinote, naudojamas vienas iš trijų vertimo metodų: kompiliatorius, vertėjas arba jų derinys.
Kas yra kompiliatorius?
Kompiliatorius yra programinė įranga, kuri konvertuoja aukšto lygio kalba parašytą šaltinio kodą į žemo lygio kodą vykdymui.
Aukščiau pateiktoje diagramoje pavaizduotas paprasčiausias kompiliatorius. Kompiliatorius turi keletą etapų. Kiekviena fazė paverčia kodą iš vienos būsenos į kitą. Kiekvienos kompiliatoriaus fazės tikslas yra sukurti išvestį, kurią sekančiai fazei būtų lengviau manipuliuoti. Bendra kompiliatoriaus struktūra yra tokia:
- Skaitytuvas: ši fazė paima simbolių srautą ir sugrupuoja juos į žetonus, vaizduojančius identifikatorius, eilučių raides ir pan.
- Analizatorius: ši fazė sugrupuoja žetonus pagal šaltinio programavimo kalbos gramatiką. Jis sukuria abstrakčią sintaksės medį, kuris yra išraiškų, sudarančių programą, rinkinys.
- Semantika: šioje fazėje atliekama abstrakčiojo sintaksės medžio (AST) semantinė analizė. Jis naudoja šaltinio kalbos taisykles, kad pridėtų reikšmę, priskirdamas tipus AST išraiškoms ir patikrindamas jų galiojimą. Tada AST tampa tarpiniu vaizdu.
- Tarpinis atvaizdavimas (IR): ši fazė konvertuoja pradinės programos šaltinio kodą į mašininį kodą. Jis sukuria supaprastintą surinkimo kodo versiją. IR naudoja vieną ar daugiau optimizatorių, kad pagerintų IR kodą ir rinktų informaciją apie įrenginį, kuriame jis veikia. Optimizatorius gali padaryti programą efektyvesnę, greitesnę ar net mažesnę.
- Kodo generatorius: ši fazė sunaudoja optimizuotą IR kodą ir paverčia jį mašininiu kodu.
Kurios programavimo kalbos naudoja kompiliatorius?
Kai kurios populiarios kompiliuotos programavimo kalbos:
- C
- C++
- Eik
- Ada
- Fortranas
- COBOL
- Lisp
- Tikslas-C
- Swift
Vienas iš sudarytos kalbos pranašumų yra tas, kad kompiliavimo metu ji nustato klaidas. Tai leidžia ištaisyti tokias klaidas ir vėl pabandyti kompiliuoti programą. Sukompiliuotos kalbos mažiau žlugs pradėjus vykdyti. Šios kalbos net nesukurs programos, kuri būtų paleista, jei šaltinio kode yra sintaksės klaidų. Tačiau semantinės klaidos ir kitos vykdymo trukmės klaidos bus aplenktos.
Sukompiliuotos kalbos taip pat vykdomos labai greitai po kompiliavimo.
Kas yra Vertėjas?
Vertėjas yra programa, kuri vienu metu verčia ir vykdo vieną kodo eilutę. Šis procesas kartojamas tol, kol vertėjas pasiekia paskutinę nurodytos programos ar scenarijaus kodo eilutę.
Kaip matote iš aukščiau pateiktos diagramos, vertėjas įveda dvi įvestis. Pirma, jis užima visą šaltinio kodą (programą). Tada jis nuskaito pirmąją programos eilutę (kaip įvestį), išverčia ir vykdo. Jei ši eilutė vykdoma teisingai, ji pereina į kitą programos ar scenarijaus eilutę.
Skirtingai nei kompiliatorius, vertėjas neverčia visos programos į mašininį kodą. Vietoj to, jis analizuoja ir analizuoja nurodytą kodo eilutę prieš ją vykdydamas. Vertėjas turėtų pradėti paleisti programą, ypač didesnę, dar prieš kompiliatoriui dar nebaigus jos versti.
Kurios programavimo kalbos naudoja vertėjus?
Kai kurios populiarios interpretuojamos programavimo kalbos:
- Python
- JavaScript
- Perl
- MATLAB
- PAGRINDINIS
Nors vertėjas pradeda vykdyti kodą greičiau, jis vis tiek nepavyks, jei įvyks klaida. Jūs, kaip programuotojas, turite ištaisyti tokią klaidą ir paleisti programą iš naujo. Šis įvykis įvyksta kiekvieną kartą, kai vertėjas susiduria su nauja klaida. Kai kurios klaidos gali neveikti, jei jos yra susijusios su retomis aplinkybėmis. Tokiais atvejais, bandymai yra svarbesni nei bet kada.
Vertėjus paprastai sukurti lengviau nei kompiliatorius, o jų programos yra labiau nešiojamos.
Kas yra hibridinis vertimas?
Mišriajame vertime dirba kompiliatorius ir vertėjas. Hibridinis vertimas sukompiliuoja aukšto lygio šaltinio kodą į žemesnio lygio formą, pvz., baitinį kodą. Tada tam baito kodui paleisti naudojamas vertėjas.
Hibridinis vertimas įvairiose programavimo kalbose gali skirtis, tačiau bus naudojama ši bendra struktūra. Viena iš populiariausių programavimo kalbų, naudojančių hibridinį vertimą, yra Java. „Java“ kompiliatorius išverčia savo šaltinio kodą į Java virtualios mašinos (JVM) baitų kodas. Tada vertėjas JVM baitinį kodą išverčia į mašininį kodą.
Kuriose programavimo kalbose naudojamas hibridinis vertimas?
Kai kurios populiarios hibridinio programavimo kalbos:
- Java
- C#
- Visual Basic
- Erlang
- F#
Naudodami hibridinį vertimą gaunate geriausią iš abiejų pasaulių. Pirmiausia sukompiliavus kodą galite kuo anksčiau pašalinti klaidas. Bitkodą, kurį sukuria hibridiniai kompiliatoriai, lengviau interpretuoti nei aukšto lygio programos šaltinio kodą.
Įvairių vertimo metodų pažinimo vertė
Turėtumėte suprasti konkretų vertimo metodą, kurį naudoja kalba, ypač jei jį naudojate naujam projektui. Kalbos vertimo metodas yra pagrindinė programavimo kalbos tapatybės dalis. Tai gali turėti įtakos jūsų programos platinimui ir naudotojų vykdymui.
Kiekvienas vertimo metodas turi savo privalumų. Populiariausios programavimo kalbos, tokios kaip C++, Python ir Java, naudoja skirtingus vertimo metodus. Be kalbos paradigmos, jos vertimo metodas yra vienas iš svarbiausių bruožų, kuriuos turėtumėte žinoti.
Yra keletas paradigmų, kurias gali naudoti programavimo kalba. Dauguma populiariausių programavimo kalbų yra kelių paradigmų kalbos; jie palaiko dviejų ar daugiau skirtingų paradigmų naudojimą. Trys populiariausios paradigmos yra privalomasis, į objektą orientuotas ir funkcinis programavimas.