De nadelen van programmeertalen op hoog niveau

In computerprogrammeerterminologie worden programmeertalen vaak gescheiden in "high-level" en "low-level" talen. Het verschil tussen de twee is een kwestie van hardware-interactie. Simpel gezegd, talen op een laag niveau bevinden zich "lager" op het computersysteem, dichter bij de daadwerkelijke hardware-interactie. Talen op hoog niveau worden geabstraheerd van de hardware. Het resultaat van deze abstractie kan resulteren in snellere, beter leesbare code, maar lagere snelheidsvoordelen en minder toegang tot systeembronnen.

Abstractie

Wat talen op hoog niveau anders maakt dan talen op laag niveau, is het abstractieniveau dat een taal heeft van systeembronnen. Dagelijks omgaan met systeembronnen kan traag en pijnlijk worden. Talen op hoog niveau zijn gemaakt om dit probleem aan te pakken door het systeem voor de programmeur te beheren, waardoor haar om meer geavanceerde taken uit te voeren terwijl ze de kleinste details van het systeem negeert, zoals geheugen beheer. Dit heeft echter het nadeel dat een programmeur zich in een situatie kan bevinden waarin systeemtoegang vereist is, en een taal op hoog niveau kan die toegang niet geven. Een taal op hoog niveau is doorgaans niet geschikt voor systeemprogrammering.

Video van de dag

Snelheid

Talen op hoog niveau zijn doorgaans "geïnterpreteerde" talen in plaats van de "gecompileerde" talen op laag niveau. "Geïnterpreteerd" betekent eenvoudigweg dat een taal een tolk gebruikt die de broncode regel voor regel uitvoert, in plaats van een binair bestand te compileren. Tolken zijn echter vaak programma's die in gecompileerde talen zijn geschreven. Hierdoor draait de geïnterpreteerde taal -- Python, als voorbeeld -- alleen bovenop de Python-interpreter, die is geschreven in C. Dit verhoogt het geheugen en de tijdoverhead voor geïnterpreteerde programma's, en ze worden vaak langzamer uitgevoerd.

Systeem eigenaardigheden

Een schijnbare kracht van code op hoog niveau is de draagbaarheid. Code op hoog niveau kan worden uitgevoerd op elk systeem waarop de juiste tolk is geïnstalleerd. Wanneer een programma echter voor een computer wordt gecompileerd, houdt het bij de compilatie rekening met de volledige omgeving van dat systeem. Een geïnterpreteerde taal is al zodanig geabstraheerd van het systeem dat het geïnterpreteerde programma niets over het systeem weet, behalve wat de tolk het kan leveren.

Programmeerlimieten

Vanwege de aard van talen op hoog niveau zijn er bepaalde taken waarvoor ze niet geschikt zijn, of in ieder geval nog niet geschikt zijn. Zonder toegang tot systeembronnen is het moeilijk om snelle, OS-native applicaties te ontwikkelen. Bovendien wordt zelfs het ontwikkelen van een besturingssysteem problematisch. Naarmate er meer software online gaat, wordt dit feit minder zorgwekkend, maar voor commercieel en industrieel gebruik kunnen geïnterpreteerde talen te langzaam werken of te ver verwijderd zijn van hardware-interactie.