Pređi na sadržaj

Implementacija programskog jezika

S Vikipedije, slobodne enciklopedije

Implementacija programskog jezika je sistem za izvršenje računarskog programa.

Postoje dva opšta pristupa implementaciji programskog jezika:[1][2]

  • Tumačenje: Interpretator uzima kao ulaz u program na nekom jeziku i obavlja radnje napisane na tom jeziku nad nekom mašinom.
  • Kompilacija: Prevodilac uzima kao ulaz program na nekom jeziku, i prevodi taj program na neki drugi jezik, koji može poslužiti kao ulaz sa prevodiocem.

Treba obratiti pažnju da se prevodilac ne izvršava direktno u program. Konačno, u cilju izvršenja programa preko kompilacije, mora prevesti u oblik koji može poslužiti kao ulaz sa prevodiocem.  

Kada se deo hardvera može direktno tumačiti u programskom jeziku, taj jezik se zove mašinski kod. Takozvani izvorni kod prevodioca je onaj koji sastavlja program u mašinski kod. Aktuelna kompilacija je često odvojena u više prolaza, kao i kod generacija(često u asemblerskom jeziku), montiranje(generisanje osnovnog koda), povezivanje, utovar i izvršavanje.

Ako je prevodilac datog jezika na jeziku visokog nivoa, to se zove prevodilac (prevodilac od izvora do izvora). Njime je često korisno dodavati proširenja postojećih jezika ili iskoristiti dobro i prenosno sprovođenje drugog jezika pojednostavljivanjem razvoja (na primer C).

Mnoge kombinacije tumačenja i kompilacija su moguće, i implementacija mnogih modernih programskih jezika obuhvata oba elementa. Na primer, Smalltalk programski jezik konvencialno sprovodi kompilacije u bajt kodove koje su zatim prevođene ili tumačene i sastavljane od strane virtuelne mašine (najpopularniji način je korišćenje JIT ili AOT prevodioca kompilacije). Ova strategija primene je kopirana od strane mnogih jezika još od kad mu je Smalltalk prokrčio put sedamdesetih i osamdesetih godina dvadesetog veka.

Apstraktne mašine[uredi | uredi izvor]

Svaki programski jezik zahteva apstraktne mašine koje će premostiti jaz između visokog nivoa jezika i niskog nivoa prave mašine.

  • Apstraktne mašine za objektivno-orijentisane programske jezike: Ovo su u suštini mašine bazirane na skladištenju za prilaz podacima i metodama programa.
  • Apstraktne mašine za obradu stringa
  • Apstraktne mašine za funkcionalne programske jezike
  • Apstraktne mašine za logičke programske jezike: One su zasnovane na predikatskim jezičkim trenucima.

Reference[uredi | uredi izvor]

  1. ^ Theodore H. Romer, Dennis Lee, Geoffrey M. Voelker, Alec Wolman, Wayne A. Wong, Jean-Loup Baer, Brian N. Bershad, and Henry M. Levy, „The Structure and Performance of Interpreters
  2. [[#cite_ref-2|^]] Terence Parr, Johannes Luber, [http://www.antlr.org/wiki/display/ANTLR3/The+difference+between+compilers+and+interpreters The Difference Between Compilers and Interpreters”.  line feed character u |title= na poziciji 53 (pomoć); Spoljašnja veza u |title= (pomoć); Sukob URL—vikiveza (pomoć) Arhivirano na sajtu Wayback Machine (6. januar 2014)

Literatura[uredi | uredi izvor]