Имплементација програмског језика
Имплементација програмског језика је систем за извршење рачунарског програма.
Постоје два општа приступа имплементацији програмског језика:[1][2]
- Тумачење: Интерпретатор узима као улаз у програм на неком језику и обавља радње написане на том језику над неком машином.
- Компилација: Преводилац узима као улаз програм на неком језику, и преводи тај програм на неки други језик, који може послужити као улаз са преводиоцем.
Треба обратити пажњу да се преводилац не извршава директно у програм. Коначно, у циљу извршења програма преко компилације, мора превести у облик који може послужити као улаз са преводиоцем.
Када се део хардвера може директно тумачити у програмском језику, тај језик се зове машински код. Такозвани изворни код преводиоца је онај који саставља програм у машински код. Актуелна компилација је често одвојена у више пролаза, као и код генерација(често у асемблерском језику), монтирање(генерисање основног кода), повезивање, утовар и извршавање.
Ако је преводилац датог језика на језику високог нивоа, то се зове преводилац (преводилац од извора до извора). Њиме је често корисно додавати проширења постојећих језика или искористити добро и преносно спровођење другог језика поједностављивањем развоја (на пример C).
Многе комбинације тумачења и компилација су могуће, и имплементација многих модерних програмских језика обухвата оба елемента. На пример, Smalltalk програмски језик конвенциално спроводи компилације у бајт кодове које су затим превођене или тумачене и састављане од стране виртуелне машине (најпопуларнији начин је коришћење ЈИТ или АОТ преводиоца компилације). Ова стратегија примене је копирана од стране многих језика још од кад му је Smalltalk прокрчио пут седамдесетих и осамдесетих година двадесетог века.
Апстрактне машине
[уреди | уреди извор]Сваки програмски језик захтева апстрактне машине које ће премостити јаз између високог нивоа језика и ниског нивоа праве машине.
- Апстрактне машине за објективно-оријентисане програмске језике: Ово су у суштини машине базиране на складиштењу за прилаз подацима и методама програма.
- Апстрактне машине за обраду стринга
- Апстрактне машине за функционалне програмске језике
- Апстрактне машине за логичке програмске језике: Оне су засноване на предикатским језичким тренуцима.
Референце
[уреди | уреди извор]- ^ 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
- [[#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 у
|title=
на позицији 53 (помоћ); Спољашња веза у|title=
(помоћ); Сукоб URL—викивеза (помоћ) Архивирано на сајту Wayback Machine (6. јануар 2014)
Литература
[уреди | уреди извор]- Knuth, Donald E. (1997). The Art of Computer Programming, Volume 1, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89683-4.
- Knuth, Donald E. (1997). The Art of Computer Programming, Volume 2, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89684-2.
- Knuth, Donald E. (1997). The Art of Computer Programming, Volume 3, 3rd Edition. Boston: Addison-Wesley. ISBN 0-201-89685-0.