Програмски језик високог нивоа — разлика између измена

Садржај обрисан Садржај додат
Autobot (разговор | доприноси)
м Уклањање сувишних унутрашњих веза
Autobot (разговор | доприноси)
м Бот: исправљена преусмерења
Ред 1:
{{loš seminarski}}
'''Програмски језик високог нивоа''' је [[програмски језик]] са јаком апстракцијом у односу на базично коришћење [[компјутеррачунар|компјутера]]а. У поређењу са [[Програмски језик ниског нивоа|програмским језиком ниског нивоа]], програмски језик високог нивоа може користити елементе из [[Природни језици|природних језика]], бити лакши за коришћење и тако чинећи процес израде програма једноставнијим и разумљивијим у односу на језик ниског нивоа. Количина апстракције дефинише на колико „високом нивоу“ је програмски језик.
 
Први програмски језик високог нивоа који је дизајниран за рачунаре је [[Plankalkül|Планкалкул]], креиран од стране [[Конрад Цузе|Конрада Цузеа]].<ref>Giloi, Wolfgang, K. (1997). "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language". IEEE Annals of the History of Computing, vol. 19, no. 2, pp. 17–24, April-June, 1997. [http://doi.ieeecomputersociety.org/10.1109/85.586068 (abstract)], Приступљено 24. 4. 2013.</ref>
 
== Карактеристике ==
"Језик високог нивоа“ односи се на виши ниво апстракције од машинског језика. Уместо да се манипулише [[Регистар (рачунарство)|регистрима]], меморијским адресама и позивима [[Стек (апстрактни тип података)|стека]], на високом нивоу програмски језици раде са [[Променљивапромјенљива (рачунарствопрограмирање)|променљивим]], [[Низ (структура података)|низовима]], [[Објекат (рачунарство)|објектима]], сложеном аритметиком и [[Булова алгебра|Буловим изразима]], потпроцедурама и [[Функција (програмирање)|функцијама]], петљама, [[Нит (рачунарство)|нитима]] и њиховом синхронизацијом, [[Regularni izraz|регуларним изразима]] и другим апстрактним појмовима рачунарске науке, са фокусом на употребљивост у односу на оптималану програмску ефикасност. За разлику од програмских језика ниског нивоа, високи језици имају мало, или нимало, језичких елемената који се директно преводе у [[Машински језик|нативни машински код]]. Остале карактеристике, као што су рутине за руковање [[Ниска|нискама]] и [[Објектно-оријентисано програмирање|објектно-оријентисане]] одлике језика као и процедуре за упис/читање из [[датотека]], могу бити присутне у овим језицима.
 
== Цена апстракције ==
Ред 17:
Појмови ''висок ниво'' и ''низак ниво'' (апстракције програмских језика) су у суштини релативни. Пре неколико деценија, [[C (програмски језик)|програмски језик С]], и слични језици, су најчешће сматрани језицима на „високом нивоу“, јер подржавају концепте као што су евалуација израза, параметаризонане рекурзивне функције, и типове података и структуре, док је [[Асемблер|асемблерски језик]] сматран за језик „ниског нивоа“. Многи програмери данас сматрају програмски језик С као језик ниског нивоа, јер нема разне карактеристике многих модерних језика (нема [[Објектно-оријентисано програмирање|објектно-оријентисан приступ]], [[Сакупљач смећа|систем за сакупљања смећа]], итд), у основи подржава само скаларне операције, и пружа [[Меморијско адресирање|директно меморијско адресирање]]. То се лако уклапа са [[Асемблер|асемблерским језиком]] и машинском нивоу [[Процесор|процесора]], а и [[Микроконтролер|микроконтролера]].
 
[[Асемблер|Асемблерски језик]] се може сматрати за виши ниво представљања [[Машински језик|машинског кода]], јер подржава концепте као што су константе и (делимично) изразе, понекад чак и [[Променљивапромјенљива (рачунарствопрограмирање)|променљиве]], [[Процедуралнирадни језик|процедуре]] и [[структура података|структуре података]]. [[Машински језик|Машински код]], са своје стране, је на нешто вишем нивоу него микро-код или микро-операција које се користе интерно у многим [[Процесор|процесорима]].
 
== Начини извршавања ==
Ред 23:
; Интерпретирани ({{јез-ен|Interpreted}}): [[Интерпретиран језик]] се чита, а потом директно извршава. Програм назван [[Интерпретатор (рачунарство)|интерпретатор]] врши ово извршавање. У овакве језике се обично убрајају: [[Пајтон (програмски језик)|Пајтон]], [[Руби (програмски језик)|Руби]], [[Перл (програмски језик)|Перл]], [[Бејсик]], ...
; Компилирани ({{јез-ен|Compiled}}): [[Компилиран језик]] се трансформише у извршни облик пре него што се покрене. Програм који то обавља зове се [[компилатор]] (програмски преводилац). Постоје две врсте компилације:
:; Стварање машинског кода ({{јез-ен|Machine code generation}}): Неки компилатори претварају [[изворни код]] директно у [[Машински језик|машински код]]. Ово је првобитни начин компилације, а језици чији се код директно и потпуно трансформише у машински код, могли би се назвати „прави“ компилирани језици. Пример оваквих језика су: [[ЦC (програмски језик)|Ц]], [[Ада (програмски језик)|Ада]], [[Модула-2]], [[Фортран|FORTRAN]], ...
:; Стварање међукода ({{јез-ен|Intermediate representations}}): Када се изворни код претвори у међукод, у том облику може бити оптимизован или сачуван за касније извршење без потребе да се поново учитава изворна датотека. Ако се међукод чува у датотеци, он се често налази у облику [[бајт-код]]. Међукод затим мора да се интерпретира или да се даље компилира да би се избршио. [[Виртуелна машина]] тада извршава бајт-код директно или га трансформише у машински код. Пример: [[Јава (програмски језик)|Јава]], Icon, [[R (програмски језик)|R]]...
; Преведени ({{јез-ен|Translated}}): Код написан у језику високог нивоа може се превести у језик нижег ниво за који постоје већ развијени компилатори. [[C (програмски језик)|Програмски језик С]] је типичан избор циљног језика за такве преводиоце.