Nižší programovací jazyk (též nízkoúrovňový programovací jazyk) je v informatice označení pro programovací jazyk, který poskytuje malou nebo žádnou abstrakci od toho, jak funguje procesor počítače. Označení „nižší“ odkazuje na velmi malý nebo žádný rozdíl mezi daným programovacím jazykem a strojovými instrukcemi procesoru (resp. jeho instrukční sadou). Proto bývají nízkoúrovňové programovací jazyky označovány jako „těsně spjaté s hardwarem“.
Charakteristika
Nižší programovací jazyk může být snadno převeden do strojového kódu procesoru. Jsou typicky považovány za jednoduché, avšak za obtížněji osvojitelné, protože je pro jejich efektivní používání nutné seznámit se s technickými detaily fungování hardware. Programy napsané v nižším programovacím jazyce mohou být rychlé a mít jen malé nároky na paměť (např. Volkov Commander). Ekvivalentní programy napsané ve vyšším programovacím jazyce jsou typicky pomalejší a mají větší paměťové nároky, avšak oddělují sémantiku počítačové platformy od zápisu programu, což by mělo zjednodušit jeho vývoj.
Rozdělení nižších jazyků
Nižší programovací jazyky jsou často rozdělovány na první generaci a druhou generaci.
První generace
První generace programovacích jazyků, nebo také 1GL, je strojový kód. Je to jazyk, který dokáže mikroprocesor zpracovat přímo, bez předchozího překladu. Psaní programů ve strojovém kódu vyžaduje velkou pozornost ohledně spousty detailů, které vyšší programovací jazyky zvládají automaticky. Programátoři si musí pamatovat nebo vyhledávat číselné kódy pro každou instrukci, kterou chtějí použít. Proto se v dnešní době programy ve strojovém kódu téměř nepíší. Z tohoto důvodu druhá generace poskytuje abstraktní vrstvu nad strojovým kódem.
Příklad: Funkce v 32bitovém kódu procesorů x86 pro výpočet n-tého prvku Fibonacciho posloupnosti:
8B542408 83FA0077 06B80000 0000C383
FA027706 B8010000 00C353BB 01000000
B9010000 008D0419 83FA0376 078BD98B
C84AEBF1 5BC3
Druhá generace
Druhá generace programovacích jazyků, nebo také 2GL, je jazyk symbolických instrukcí neboli assembler. Je považován za druhou generaci programovacího jazyka, ačkoli to není nativní jazyk mikroprocesoru. Programátor musí rozumět jak jedinečné architektuře mikroprocesoru, tak i jeho registrům a instrukční sadě. Tyto jednoduché instrukce jsou překládány pomocí assembleru přímo do strojového kódu.
Příklad: Ten samý kalkulátor Fibonacciho posloupnosti, jako v příkladu nahoře, ale v jazyku symbolických instrukcí pro x86, využívající MASM syntaxi:
fib:
mov edx, [esp+8]
cmp edx, 0
ja @f
mov eax, 0
ret
@@:
cmp edx, 2
ja @f
mov eax, 1
ret
@@:
push ebx
mov ebx, 1
mov ecx, 1
@@:
lea eax, [ebx+ecx]
cmp edx, 3
jbe @f
mov ebx, ecx
mov ecx, eax
dec edx
jmp @b
@@:
pop ebx
ret
Jazyk C
Programovací jazyk C je často považován za nízkoúrovňový, avšak na rozdíl od výše uvedených jazyků je nezávislý na počítačové platformě. Poskytuje pouze nízkoúrovňový přístup k operační paměti a programové konstrukce, které je snadné přímo převést do strojového kódu procesorů.
Reference
V tomto článku byl použit překlad textu z článku Low-level programming language na anglické Wikipedii.
Související články