Alacsony szintű programozási nyelv
A számítástechnikában alacsony szintű programozási nyelveknek nevezik az olyan programozási nyelveket, amelyekben a CPU nyelvétől való elvonatkoztatás kis mértékű – ha egyáltalán van.
Az alacsony szó nem azt jelenti, hogy a nyelv alacsonyabbrendű a magas szintű nyelvekhez képest, hanem arra utal, hogy a gépi kódtól való elvonatkoztatás mértéke alacsony. Emiatt az alacsony szintű nyelveket néha hardverközelinek is nevezik.
A „magas szintű” és „alacsony szintű” jelzőket viszonyításra is használhatjuk. Egy Java-programozó számára a C nyelv viszonylag alacsony szintű nyelvnek tűnhet.
Az alacsony szintű nyelveken belül megkülönböztethetünk első és második generációs nyelveket.
Első generációs nyelv
[szerkesztés]Az első generációs programnyelv (1GL) a processzor gépi kódja. Ez az egyetlen olyan nyelv, amelyet a CPU közvetlenül képes értelmezni. Manapság szinte soha senki nem ír programot közvetlenül gépi kódban, mivel ekkor számos olyan részletre kellene odafigyelni, melyeket egy magasabb szintű nyelv automatikusan kezelne, valamint minden egyes utasításhoz számkódokat kellene megjegyezni vagy kikeresni egy listából.
Második generációs nyelv
[szerkesztés]A második generációs nyelvek (2GL) a különböző assembly nyelvek. Azért nevezik őket második generációsnak, mert jóllehet nem a CPU saját nyelve, a programozónak mégis ismernie kell a mikroprocesszor egyedi architektúráját (pl. a regisztereket és az utasításokat). A gépi kóddal leírható programokat assembly nyelven a programozó számára sokkal olvashatóbb alakban lehet leírni. A különbség csak az írásmódban van a gépi kódhoz képest, illetve az assembler fordító átvehet néhány adminisztrációs feladatot a programozótól, például a kezdőcím allokációját és a program címkéinek innen számított címeit. Az assembly által használt szavakat, aminek a processzor egy-egy utasítása megfeleltethető, Mnemoniknak nevezzük.
Előnyök-hátrányok
[szerkesztés]A gépi kódú, illetve assembly programok előnye – a magasabb szintű programnyelvekhez képest – a kis méretű, gyorsan futó kód (akár 50-szer gyorsabb, mint a magas szintű nyelveken írott programok), illetve a rendszerarchitektúrához jobban igazítható működés.
Hátrányuk, hogy a programozás sokkal több rendszerspecifikus ismeretet követel, illetve a programban a hibakeresést sokkal kevesebb eszköz támogatja. Általában sokkal több munkával érhető el ugyanaz az eredmény, mint magas szintű programozási nyelven.