Mis on programmeerimiskeele põlvkonnad?

Programmeerimiskeelte põlvkonnad on viis arvutiprogrammeerimiskeelte klassifitseerimiseks vastavalt nende üldisele kaugusele tegelikust genereeritavast masinkoodist ja mõnes mõttes nende kasutamise lihtsuse järgi programmeerija poolt. On kolm üldtunnustatud programmeerimiskeelte põlvkonda ja mõned, mille määratlustes pole selgelt kokku lepitud. Esimese põlvkonna programmeerimiskeel on sirge masinkood, millel puudub abstraktsioon. Teise põlvkonna keeled on abstraheeritud masinkood, näiteks komplekteerimiskeel, mis on seotud kindla süsteemiarhitektuuriga, kuid on inimesele loetavad ja vajavad kompileerimist. Kolmanda põlvkonna keeled on kõige levinumad vormid, sealhulgas standardkeeled, nagu C ja Java®, samas kui neljanda põlvkonna või uuemate keelte määratlused on erinevad.

Kui programmeerimiskeelte põlvkonnad loodi esmakordselt keelte kirjeldamiseks, kasutati seda terminit enamasti kolmanda põlvkonna keelte tähistamiseks. See tähendab, et esimese ja teise põlvkonna keeli klassifitseeriti ainult selleks, et rõhutada kolmanda põlvkonna keelte võimalusi. Neljandat ja viiendat programmeerimiskeele põlvkonda kasutati suures osas terminitena seoses arendamisel olevate keelte turundusega. Turunduses ja mõnes akadeemilises valdkonnas kasutatakse suurema numbriga keelepõlvkondi ebastandardsel viisil, et näidata, et üks keel on uuem või sellel on rohkem funktsioone kui teine.

Esimene programmeerimiskeele põlvkond tähistab masinkoodi. See tähendab programmi kirjutamist baitide või äärmisel juhul bittide jadana, mida arvuti saab otse käivitada. Enamikul juhtudel viitab see süsteemile, mis aktsepteerib sisendit kõvakodeeritud lülitite või muude füüsiliste mehhanismide kaudu.

Teise põlvkonna programmeerimiskeeli peetakse assembler-stiilis keelteks. Need on keeled, mis on kirjutatud inimloetava koodi ja käskudega, mis on endiselt seotud konkreetse süsteemiarhitektuuriga, kuid pakuvad lihtsamat arenduskeskkonda ja mõningast abstraktsiooni. Alates 2011. aastast ei lakanud montaažikeelte kasutamist ja need pole mitte ainult äärmiselt võimsad, vaid neid saab kasutada ka sisemiste lausetena kõrgema taseme programmeerimiskeeltes, muutes vääraks arusaama, et keele genereerimine võrdub selle kiiruse või võimsusega.

Kolmanda põlvkonna programmeerimiskeeled lahutasid koodi protsessorist veelgi suuremal määral, võimaldades arendada koodi, mis kasutas paremini loetavaid avaldusi. Lisaks töötati välja kompilaatorid, mis suutsid muuta ühe koodirea mitmeks montaažilauseks mitmel platvormil ja lõpuks kümneteks või enamaks masinkoodijuhisteks. Peaaegu kõiki arvutikeeli, mis suudavad kompileerida binaarseid täitmisfaile ja teeke, peetakse kolmanda põlvkonna keelteks.

Üldiselt vaadeldakse neljanda põlvkonna keelt kui keelt, mis on mõeldud teatud tüüpi programmeerimiskeele kasutamiseks, mis on kasutaja jaoks väga loomulik. Seda saab määratleda ka keelena, mis kasutab lõpliku programmi koostamiseks visuaalseid elemente. Kolmas määratlus on programmeerimiskeel, mis on loodud konkreetseks otstarbeks, näiteks andmebaasi programmeerimiskeel või kiirrakenduse arenduskeel (RAD).
Viienda põlvkonna arvutikeele lahtine määratlus on see, mis võimaldab programmeerijal esitada arvutile probleemi, mida see seejärel lahendada püüab. Enamik keeli, mis on loetletud viienda põlvkonna keeltena, on enamasti akadeemilised. Kommertskeelte arendajad on turunduseesmärkidel kasutanud teisi programmeerimiskeelte põlvkondi, näiteks kuuendat ja seitsmendat.