Kõrgkeel

Kõrgkeeleks nimetatakse arvutiteaduses programmeerimiskeelt, mis konkreetse arvuti ülesehitusest ja operatsioonisüsteemist ei sõltu. Erinevalt madalkeeltest võib kõrgkeeltes esineda loomuliku keele elemente ning neid võib olla tunduvalt kergem kasutada. Kõrgkeeled võivad automatiseerida või isegi täielikult varjata olulisi arvutisüsteemide alasid (näiteks mäluhaldust), tehes programmi arendamise protsessi arusaadavamaks ja lihtsamaks. Abstraktsioonitaseme suurus näitab, kui kõrgetasemeline vaadeldav programmeerimiskeel on.
Esimene arvutite jaoks välja töötatud kõrgkeel oli Konrad Zuse loodud Plankalkül. Kuigi Plankalkül ei leidnud tema ajal rakendust, mõjutas see Heinz Rutishauseri keelt Superplan (ja mõnel määral ka ALGOLit). Esimene tõeliselt levinud kõrgkeel oli Fortran. 1958. ja 1960. aastatel Euroopa ja Ameerika arvutiteadlaste määratletud keel ALGOL võttis esimesena kasutusele rekursiooni ja plokkstruktuurid ning oli esimene keel, mis tegi selget vahet väärtustel, nimeparameetritel ja nendele vastaval semantikal. Samuti võttis ALGOL kasutusele codice_1-tsüklid ja codice_2-konstruktsiooni. Umbes samal ajal võttis COBOL kasutusele kirjed ja Lisp hakkas esimese programmeerimiskeelena kasutama lambda-arvutust.
Iseärasused.
"Kõrgkeel" viitab masinkeelest kõrgemale abstraktsioonitasemele. Registrite, mäluaadresside ja pinudega tegelemise asemel käsitlevad kõrgkeeled muutujaid, objekte, massiive, keerukaid aritmeetilisi või kahendmuutujatega avaldisi, alamprogramme ja funktsioone, silmuseid, harusid, lukke ja muid abstraktseid infotehnoloogia mõisteid, keskendudes programmi optimaalse tõhususe asemel kasutatavusele. Erinevalt madalatasemelistest assemblerkeeltest ei oma kõrgkeeled palju elemente, mis oleksid otse masina operatsioonikoodidesse tõlgitav. Võib esineda ka muid omadusi, nagu sõnede käsitlemise rutiine, objektorienteeritud keelte funktsioone ja failide sisendeid ja väljundeid.
Suhteline tähendus.
Mõned tänapäeval kasutatavad kõrgkeeled on Python, Visual Basic, Delphi, Perl, PHP, ECMAScript, Ruby, Ada, ALGOL, BASIC, COBOL, C, C++, Fortran, Lisp, Pascal, Prolog ja paljud teised.
Terminid "kõrgkeel" ja "madalkeel" on olemuselt suhtelised. Mõne aastakümne eest peeti C programmeerimiskeelt ja muid sarnaseid keeli kõrgetasemelisteks ning assemblerkeelt madalkeeleks. Tänapäeval võivad paljud programmeerijad viidata C-keelele kui madalkeelele, kuna sellel puudub käitusajateek ning see toetab põhimõtteliselt ainult skalaaroperatsioone ja mälu otseaadresse. Seega seguneb see kergesti assemblerkeelega ja masina tasemel protsessorite ja mikrokontrolleritega.
Assemblerkeelt ennast võib pidada masinkoodi kõrgema taseme esindajaks, sest see võib pooldada lisaks konstantidele ka (piiratud) avaldisi, muutujaid, protseduure ja andmestruktuure. Masinkood on omakorda oma olemuselt veidi kõrgemal tasemel kui mikrokood või paljudes protsessorites sisemiselt kasutatavad mikrotehted.
Täitmisviisid.
Nüüdisaegsetel kõrgkeeltel on kolm üldist täitmisviisi:
; Masinkoodi genereerimine : Mõned kompilaatorid viivad lähtekoodi otse masinkoodi. See on kompileerimise originaalviis. Keeli, mis tõlgitakse otse ja täielikult masinkoodi, võidakse kutsuda "täielikult kompileeritavateks" keelteks. Vaata näiteks assemblerkeelt.
; Vahekeelde tõlkimine : Mõnikord võidakse lähtekood tõlkida esmalt vahekeelde ja alles seejärel masinkoodi. Vaheetapil võib programm olla näiteks baitkoodi kujul. Seejärel tuleb vaheetapi tulemus enne programmi täitmist interpreteerida või täiendavalt kompileerida. Virtuaalmasinad, mis täidavad baitkoodi või viivad selle täiendavalt üle masinkoodi, on hajustanud kord selge piiri vahekeelte ja täielikult kompileeritavate keelte vahel.
Kõrgkeele arhitektuur.
Alternatiivselt on arvutil võimalik kõrgkeelt otseselt rakendada. Arvutiarhitektuuri, mis on välja töötatud konkreetse kõrgkeele jaoks, kutsutakse kõrgkeele arhitektuuriks.