Postoji mnogo načina za razlikovanje programskih jezika. Za početak, oni spadaju u različite paradigme: funkcionalne, objektno orijentirane i više od toga.

Programski jezik također možete klasificirati prema njegovoj metodi prijevoda, nečemu što ima veliki utjecaj na performanse jezika. Prevedeni programski jezici obično su brži od interpretiranih. Dakle, u situacijama poput razvoja igara koje zahtijevaju brzinu, programeri imaju tendenciju koristiti kompilirane jezike.

Što je prijevod?

Proces prevođenja pretvara kod koji je napisao programer u strojni kod koji računalo može izvršiti. Strojni kod je vrsta jezika niske razine, koji ima jedinice i nule. Dakle, ono što prevoditelj čini je pretvaranje koda visoke razine koji kreirate u programskom jeziku u strojni kod.

Bez prevoditelja, morali biste kodirati u strojnom jeziku. Svaki programski jezik visoke razine koji poznajete koristi jednu od tri metode prijevoda: prevodilac, tumač ili hibrid ova dva.

Što je kompajler?

Prevoditelj je softver koji pretvara izvorni kod napisan na jeziku visoke razine u kod niske razine za izvršenje.

instagram viewer

Gornji dijagram predstavlja kompajler u njegovom najosnovnijem obliku. Kompilator ima nekoliko faza. Svaka faza pretvara kod iz jednog stanja u drugo. Cilj svake faze prevoditelja je stvoriti izlaz kojim je lakše manipulirati sljedećoj fazi. Opća struktura kompilatora je sljedeća:

  • Skener: ova faza uzima niz znakova i grupira ih u tokene koji predstavljaju identifikatore, literale nizova itd.
  • Parser: ova faza grupira tokene na temelju gramatike izvornog programskog jezika. Stvara apstraktno sintaktičko stablo koje je zbirka izraza koji čine program.
  • Semantika: ova faza provodi semantičku analizu apstraktnog sintaksnog stabla (AST). Koristi pravila izvornog jezika za dodavanje značenja dodjeljivanjem tipova AST izrazima i provjeravanjem njihove valjanosti. AST tada postaje posredni prikaz.
  • Intermediate Representation (IR): ova faza pretvara izvorni programski kod u strojni kod. On proizvodi pojednostavljenu verziju asemblerskog koda. IR koristi jedan ili više optimizatora za poboljšanje IR koda i prikupljanje informacija za stroj na kojem radi. Optimizator može učiniti program učinkovitijim, bržim ili čak manjim.
  • Generator koda: ova faza troši optimizirani IR kod i pretvara ga u strojni kod.

Koji programski jezici koriste kompilatore?

Neki popularni kompilirani programski jezici uključuju:

  • C
  • C++
  • Ići
  • Ada
  • Fortran
  • COBOL
  • Lisp
  • Cilj-C
  • Brz

Jedna od prednosti korištenja prevedenog jezika je da identificira pogreške tijekom kompilacije. To vam omogućuje da ispravite takve greške, a zatim ponovno pokušate kompajlirati program. Manja je vjerojatnost da će kompilirani jezici uspjeti nakon što počnu izvršavati. Ovi jezici neće čak generirati program za pokretanje ako izvorni kod ima sintaksičke pogreške. Ali semantičke pogreške i drugi oblici bugova tijekom izvođenja će to preći.

Prevedeni jezici također se izvršavaju vrlo brzo nakon što se prevedu.

Što je tumač?

Tumač je program koji prevodi i izvršava jedan po jedan redak koda. Ovaj se proces ponavlja sve dok tumač ne dođe do posljednjeg retka koda u danom programu ili skripti.

Kao što možete vidjeti iz gornjeg dijagrama, tumač uzima dva ulaza. Prvo, uzima cijeli izvorni kod (program). Zatim čita prvi redak programa (kao ulaz), prevodi ga i izvršava. Ako se taj redak ispravno izvrši, prelazi na sljedeći redak u programu ili skripti.

Za razliku od prevoditelja, tumač ne prevodi cijeli program u strojni kod. Umjesto toga, on analizira i analizira zadani redak koda prije nego što ga izvrši. Tumač bi trebao početi izvoditi program – posebno veći – prije nego što ga prevodilac uopće završi s prevođenjem.

Koji programski jezici koriste tumače?

Neki popularni interpretirani programski jezici uključuju:

  • Piton
  • JavaScript
  • Perl
  • MATLAB
  • OSNOVNI, TEMELJNI

Iako tumač počinje brže izvršavati kod, i dalje neće uspjeti ako naiđe na pogrešku. Kao programer, trebali biste popraviti takvu pogrešku i ponovno pokrenuti program. Ovaj događaj se događa svaki put kada tumač naiđe na novu pogrešku. Neke pogreške mogu ostati neaktivne ako se odnose na rijedak niz okolnosti. U takvim slučajevima, testiranje je važnije nego ikad.

Tumače je obično lakše razviti od prevoditelja, a njihovi su programi po dizajnu više prenosivi.

Što je hibridni prijevod?

Hibridni prijevod zapošljava prevoditelja i tumača. Hibridni prijevod kompilira izvorni kod visoke razine u oblik niže razine, kao što je bytecode. Zatim koristi interpreter za pokretanje tog bajtkoda.

Hibridni prijevod može se razlikovati od jednog programskog jezika do drugog, ali će koristiti ovu opću strukturu. Jedan od popularnijih programskih jezika koji koristi hibridni prijevod je Java. Java prevodilac prevodi svoj izvorni kod u Java virtualni stroj (JVM) bajt kod. Tumač zatim prevodi JVM bajt kod u strojni kod.

Koji programski jezici koriste hibridno prevođenje?

Neki popularni hibridni programski jezici uključuju:

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

S hibridnim prijevodom dobivate najbolje od oba svijeta. Prvo sastavljanje koda omogućuje vam da riješite bugove što je prije moguće. Bajtkod koji stvaraju hibridni prevoditelji lakše je interpretirati nego izvorni kod programa visoke razine.

Vrijednost poznavanja različitih metoda prevođenja

Trebali biste razumjeti konkretnu metodu prijevoda koju jezik koristi, osobito ako je koristite za novi projekt. Metoda prevođenja jezika glavni je dio identiteta programskog jezika. To može utjecati na to kako distribuirate svoj program i kako će ga korisnici pokretati.

Svaki pristup prijevodu ima svoje prednosti. Najbolji programski jezici poput C++, Python i Java koriste različite metode prevođenja. Uz paradigmu jezika, njegova je metoda prevođenja jedna od najvažnijih osobina kojih biste trebali biti svjesni.

Postoji nekoliko paradigmi koje programski jezik može koristiti. Većina vrhunskih programskih jezika su jezici s više paradigmi; podržavaju korištenje dviju ili više različitih paradigmi. Tri najpopularnije paradigme su imperativno, objektno orijentirano i funkcionalno programiranje.