Elméleti alapozás

A programozási nyelvek

 

Először is gyorsan tisztáznunk kell a hardver és szoftver közti fogalomkülönbséget.

 

A hardver a számítógép teste, annak minden megfogható alkatrésze:

www.informatika-programozas.hu

Ebben a minőségében azonban tökéletesen élettelen. Nem számítva a kötelező áramellátást, a szoftver az, ami „életet lehel” belé, azaz ami működteti. A szoftver valamilyen célra előre megírt programot jelent. A szoftver mozgatja a hardvert, hasonlóan a régi latin mondáshoz:

 

Mens agitat molem – A szellem mozgatja az anyagot.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A szoftver tehát a hardver „lelke”.

 

A szoftverek valamilyen programozási nyelven íródnak, ám ezek a nyelvek különböző szintűek. Lássuk a legalsó, gépi szintet!

 

A számítógép 0 és 1 jelértékek felhasználásával működik (ezek a bitek). A számítógép gépi szintű működése nem más, mint nagyon gyors és szinte végtelen bitfolyam. Úgy is mondhatjuk, hogy a számítógép kettes (bináris) számrendszert használ fel számításai során, amely azonban számunkra rendkívül nehezen értelmezhető és követhető:

 

…0001110010101111000111010101111…

 

A számítógép legfontosabb része a (mikro)processzor, ez a számítógép agya, ez hajtja végre a szoftveres utasítások túlnyomó részét.

 

www.informatika-programozas.hu

 

A processzor azonban csak 0 és 1 bitek sorozatából ért, ez a gépi (natív) kód szintje. Ez a kódszint az átlag felhasználó számára nem elérhető és értelmezhetetlen, jogos tehát az igény olyan, magasabb szintű kommunikációs felületek használatára, amelyek segítségével a felhasználó már képes kommunikálni (programot írni) a számítógép számára. Ehhez az első lépés az alacsony szintű programozási nyelvek régiója, a legismertebb közülük az Assembly-nyelv.

 

Egy Assembly-utasítás (mnemonic) már több gépi kódú utasítást foglal magába, de a programok írása még így is eléggé nehézkes (az alábbi képen a mnemonikok balról a 2. oszlop nagybetűs utasításai):

 

www.informatika-programozas.hu

 

Az alábbi képen néhány mnemonik-utasítást tanulmányozhatunk magyarázataival együtt (bal oszlop), azonban az érdekesség az, hogy a jobb oldali oszlopban az utasítás gépi kódja is látható:

 

www.informatika-programozas.hu

 

A rövid utasítások miatt egy Assembly-kód –mivel szintben nagyon közel helyezkedik el a processzort működtető gépi kódhoz-, rendkívül gyors. Egy Assembly-kódot azonban már nem lehet közvetlenül futtatni, előtte le kell fordítani egy úgynevezett assembler programmal:

 

www.informatika-programozas.hu

 

Az assembler tehát az Assembly-ben megírt utasítássorozatot (programot) gépi kóddá alakítja át (vagy visszafejti: a kódfeltöréseket általában ilyen programokkal végzik). Nézzük meg az alacsony szintű programozás előnyeit és hátrányait:

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

A fejlesztői felület kialakítása később általános eljárás lesz a programozási nyelvek esetében: mindig kell majd egy fordító (compiler-linker) vagy interpreter, amelyik a megírt programot átfordítja gépi kódra.

 

Ezt a programozási nyelv megírására, szerkesztésére szolgáló különleges program (editor) legtöbbször már tartalmazza; ez a szoftveregyüttes a programozók legfontosabb munkaeszköze, bármilyen nyelvről is legyen szó.

 

Az Assembly-mnemonic tehát adott szinten összefoglal néhány gépi kódú utasítást, azonban már viszonylag hamar felmerült az igény még magasabb szintű programozási nyelvek megalkotására. Például: mi volna, ha a nyelv már beépítetten (natívan) tartalmazna egy olyan lehetőséget, amely megkeres valamit valahol?

 

Írjuk le ezt a jogos igényt álkódban (pszeudokód):

 

Keress(valamit, valahol){

Keresésindítás();

HA (megtaláltad){

    Listázd ki a tartalmat a képernyőre();

}

MÁSKÉNT

    Küldj hibaüzenetet a képernyőre();

}

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Vegyük észre, hogy ez az utasítás itt csupán néhány gépelt sor, az Assembly-ben néhány 100, míg gépi kód szintjén akár több 1000 sor lehet!

 

Ilyen és ehhez hasonló gondolatok, szándékok, valójában a programozási ötletek egyre mélyebb és bonyolultabb tárháza, illetve a valós élet kihívásai hívták életre a magas szintű programozási nyelveket. A cél az volt és a jövőben is az fog maradni, hogy a programozási nyelvek minél közelebb kerüljenek emberi gondolkodás paneljeihez. Mivel azonban az emberi gondolkodás sokféle és komplex, valamint legtöbbször cél-, és feladatorientált, a magas szintű programozási nyelvek fejlődése is hasonló jelleget öltött.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Teljesen logikus, hogy a programozás fejlődése egyértelműen maga az emberi gondolkodás fejlődését jelenti.

 

Ebben az evolúcióban a Java-nyelv az egyik aktuális intellektuális csúcsot képviseli. Minden megtalálható benne, ami a rendkívül magas szintű programozási szemlélet fellegváraiban egyáltalán kialakulhatott, ezért kezdők számára viszonylag nehéz a megértése. Aki viszont rászánja az időt, a pénzt és az energiát, az cserébe egy csodálatos, valóban kreatív szakmát és vele versenyképes fizetést kap ajándékul. Ráadásképpen jelzem: ez a jövő. Előbb-utóbb mindent számítógép fog működtetni, ehhez pedig jó programozók kellenek…