On monia tapoja erottaa ohjelmointikielet. Aluksi ne jakautuvat erilaisiin paradigmoihin: toiminnallisiin, oliosuuntautuneisiin ja muihin.

Voit myös luokitella ohjelmointikielen sen käännösmenetelmän mukaan, jolla on suuri vaikutus kielen suorituskykyyn. Käännetyt ohjelmointikielet ovat yleensä nopeampia kuin tulkitut. Joten tilanteissa, kuten pelien kehittäminen, jotka vaativat nopeutta, kehittäjät käyttävät yleensä käännettyjä kieliä.

Mikä on kääntäminen?

Käännösprosessi muuntaa ohjelmoijan kirjoittaman koodin konekoodiksi, jonka tietokone voi suorittaa. Konekoodi on eräänlainen matalan tason kieli, jossa on ykkösiä ja nollia. Joten kääntäjä muuntaa ohjelmointikielellä luomasi korkean tason koodin konekoodiksi.

Ilman kääntäjiä joudut koodaamaan konekielellä. Jokainen tuntemasi korkean tason ohjelmointikieli käyttää yhtä kolmesta käännösmenetelmästä: kääntäjää, tulkkia tai näiden kahden yhdistelmää.

Mikä on kääntäjä?

Kääntäjä on ohjelmisto, joka muuntaa korkean tason kielellä kirjoitetun lähdekoodin matalan tason koodiksi suoritusta varten.

Yllä oleva kaavio edustaa kääntäjää sen perusmuodossa. Kääntäjässä on useita vaiheita. Jokainen vaihe muuttaa koodin tilasta toiseen. Jokaisen kääntäjävaiheen tavoitteena on luoda tulos, jota seuraavan vaiheen on helpompi käsitellä. Kääntäjän yleinen rakenne on seuraava:

  • Skanneri: tämä vaihe ottaa merkkivirran ja ryhmittelee ne tunnuksiksi, jotka edustavat tunnisteita, merkkijonoliteraaleja ja niin edelleen.
  • Jäsentäjä: tämä vaihe ryhmittelee tunnukset lähdeohjelmointikielen kieliopin perusteella. Se luo abstraktin syntaksipuun, joka on kokoelma lausekkeita, jotka muodostavat ohjelman.
  • Semantiikka: tämä vaihe suorittaa semanttisen analyysin abstraktille syntaksipuulle (AST). Se lisää merkityksiä lähdekielen sääntöjen avulla määrittämällä AST-lausekkeille tyyppejä ja tarkistamalla niiden oikeellisuuden. AST: sta tulee sitten väliesitys.
  • Intermediate Representation (IR): tämä vaihe muuntaa alkuperäisen ohjelman lähdekoodin konekoodiksi. Se tuottaa yksinkertaistetun version kokoonpanokoodista. IR käyttää yhtä tai useampaa optimoijaa IR-koodin parantamiseen ja tietojen keräämiseen koneelle, jossa se toimii. Optimoija voi tehdä ohjelmasta tehokkaamman, nopeamman tai jopa pienemmän.
  • Koodigeneraattori: tämä vaihe kuluttaa optimoidun IR-koodin ja muuntaa sen konekoodiksi.

Mitkä ohjelmointikielet käyttävät kääntäjiä?

Joitakin suosittuja käännettyjä ohjelmointikieliä ovat:

  • C
  • C++
  • Mennä
  • Ada
  • Fortran
  • COBOL
  • Lisp
  • Tavoite-C
  • Swift

Yksi käännetyn kielen käytön etu on, että se tunnistaa virheet kääntämisen aikana. Tämän avulla voit korjata tällaiset virheet ja yrittää sitten kääntää ohjelman uudelleen. Käännetyt kielet eivät todennäköisesti epäonnistu, kun ne alkavat suorittaa. Nämä kielet eivät edes luo ohjelmaa ajettavaksi, jos lähdekoodissa on syntaksivirheitä. Mutta semanttiset virheet ja muut ajonaikaiset bugit selviävät siitä.

Käännetyt kielet toimivat myös erittäin nopeasti kääntämisen jälkeen.

Mikä on tulkki?

Tulkki on ohjelma, joka kääntää ja suorittaa yhden koodirivin kerrallaan. Tämä prosessi toistuu, kunnes tulkki saapuu annetun ohjelman tai skriptin viimeiselle koodiriville.

Kuten yllä olevasta kaaviosta näkyy, tulkki ottaa kaksi syötettä. Ensinnäkin se vie koko lähdekoodin (ohjelman). Sitten se lukee ohjelman ensimmäisen rivin (syötteenä), kääntää ja suorittaa sen. Jos tämä rivi suoritetaan oikein, se siirtyy ohjelman tai komentosarjan seuraavalle riville.

Toisin kuin kääntäjä, tulkki ei käännä koko ohjelmaa konekoodiksi. Sen sijaan se jäsentää ja analysoi tietyn koodirivin ennen sen suorittamista. Tulkin tulisi aloittaa ohjelman – varsinkin isomman – ajaminen ennen kuin kääntäjä on edes lopettanut sen kääntämisen.

Mitkä ohjelmointikielet käyttävät tulkkeja?

Joitakin suosittuja tulkittuja ohjelmointikieliä ovat:

  • Python
  • JavaScript
  • Perl
  • MATLAB
  • PERUS

Vaikka tulkki aloittaa koodin suorittamisen nopeammin, se epäonnistuu silti, jos se kohtaa virheen. Ohjelmoijana sinun tulee korjata tällainen virhe ja käynnistää ohjelma uudelleen. Tämä tapahtuma tapahtuu aina, kun tulkki kohtaa uuden virheen. Jotkut virheet voivat jäädä lepotilaan, jos ne liittyvät harvinaisiin olosuhteisiin. Sellaisissa tapauksissa, testaus on tärkeämpää kuin koskaan.

Tulkkien kehittäminen on yleensä helpompaa kuin kääntäjien, ja niiden ohjelmat ovat suunnittelultaan kannettavampia.

Mikä on hybridikäännös?

Hybridikäännös työllistää kääntäjän ja tulkin. Hybridikäännös kääntää korkean tason lähdekoodin alemman tason muotoon, kuten tavukoodiin. Se käyttää sitten tulkkia tämän tavukoodin suorittamiseen.

Hybridikäännös voi vaihdella ohjelmointikielistä toiseen, mutta se käyttää tätä yleistä rakennetta. Yksi suosituimmista ohjelmointikielistä, jotka käyttävät hybridikäännöstä, on Java. Java-kääntäjä kääntää sen lähdekoodin kielelle Java Virtual Machine (JVM) -tavukoodi. Tulkki kääntää sitten JVM-tavukoodin konekoodiksi.

Mitkä ohjelmointikielet käyttävät hybridikäännöstä?

Joitakin suosittuja hybridiohjelmointikieliä ovat:

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

Hybridikäännöksen avulla saat molempien maailmojen parhaat puolet. Kääntämällä koodin ensin voit ratkaista virheet mahdollisimman pian. Hybridikääntäjien luoma tavukoodi on helpompi tulkita kuin korkean tason ohjelman lähdekoodi.

Eri käännösmenetelmien tuntemisen arvo

Sinun tulisi ymmärtää tietyn kielen käyttämä käännösmenetelmä, varsinkin jos käytät sitä uudessa projektissa. Kielenkäännösmenetelmä on tärkeä osa ohjelmointikielen identiteettiä. Se voi vaikuttaa siihen, kuinka jaat ohjelmaasi ja kuinka käyttäjät suorittavat sitä.

Jokaisella käännöstavalla on omat etunsa. Suosituimmat ohjelmointikielet, kuten C++, Python ja Java, käyttävät kaikki erilaisia ​​käännösmenetelmiä. Kielen paradigman ohella sen käännösmenetelmä on yksi tärkeimmistä ominaisuuksista, joka sinun tulee olla tietoinen.

Ohjelmointikieli voi käyttää useita paradigmoja. Suurin osa suosituimmista ohjelmointikielistä on moniparadigmakieliä; ne tukevat kahden tai useamman erillisen paradigman käyttöä. Kolme suosituinta paradigmaa ovat pakollinen, olio- ja toiminnallinen ohjelmointi.