2. A programozás alapfogalmai
A memóriában lévõ programot a processzor (CPU) értelmezi és végrehajtja (a program lefut). Ez a program gépi kódú, a processzor számára közvetlenül feldolgozható. A gépi kód byte-ok sorozata, és ezért az ember számára nehezen érthetõ. A gépi kód alacsony szintû programnyelv.
Az assembly programnyelv úgy keletkezik, hogy a gépi kódú utasításokat néhány (többnyire 3) betûs rövidítéssel, úgynevezett mnemonikkal helyettesítjük. Példa:
gépi kód assembly jelentése
187,7,0 MOV AX,7 az
A regiszterbe 7-et tölt
144,9,144 MOV [9009],AX A tartalmát
a 9*4096+9-edik memóriacímre másolja
187,8,0 MOV AX,8 A-ba
8-at tölt
5,9,144 ADD AX,9009 A-hoz
hozzáadja a 9*4096+9-ik memóriacím tartalmát
stb...
Ez az nyelv egy kicsit megkönnyíti a gépi kódú programozást, de a CPU által elvégzendõ feladatot ugyanúgy vissza kell vezetnünk a legalapvetõbb tevékenységekre (összeadás, adatok mozgatása a regiszterek és a memóriacímek között, a program folytatása másik memóriacímen stb.), mint a gépi kódnál.
A magas szintû programozási nyelvek megengedik az emberközelibb utasítások használatát, így sokkal érthetõbbek és könnyebben kezelhetõek a gépi kódnál. Ezek használatához már nem kell ismernünk a processzor mûködését, és magára az elvégzendõ feladatra összpontosíthatunk. Például
PRINT 7+8
kiírja a képernyõre a számítás eredményét. A magas szintû nyelven írt programszöveget forráskódnak nevezzük. A processzor viszont nem érti ezeket a nyelveket, valahogyan gondoskodni kell a forráskód fordításáról.
Az interpreter (értelmezõ) típusú nyelvek esetén a gépen fut egy gépi kódú program, mely értelmezi és végrehajtja a forráskód utasításait.
A compiler (fordító) típusú nyelveknél egy fordítóprogram gépi kódra fordítja a forráskódot, így keletkezik a tárgykód. A tárgykódot a CPU ezután már közvetlenül végrehajthatja.
A compiler elõnye az interpreterhez képest, hogy míg a forráskód utasításonkénti értelmezése idõigényes, és szükséges hozzá az interpreter program jelenléte a memóriában, a lefordított tárgykód minden segítség nélkül futtatható, tehát gyors és memóriatakarékos.
Az interpreter elõnye viszont, hogy futás közben nyomon követhetjük, hogy a forrásprogram melyik utasítását dolgozza fel az értelmezõ, a programot megállíthatjuk, folytathatjuk, mûködés közben beavatkozhatunk, így a hibakeresés is könnyebb.
Léteznek általános és speciális programnyelvek. Elõbbiekkel tetszõleges programozási feladat megoldható, utóbbiakat egy bizonyos feladat hatékony elvégzésére készítették. Természetesen elég lenne egyetlen általános programozási nyelvet használni, de azok a különleges feladatokat nem végzik el olyan gyorsan és egyszerûen, mint a megfelelõ speciális programnyelv. Az amatõr nyelveken egyszerû a programozás, a professzionális nyelveken nehezebb, viszont a kész program minõsége jobb lehet.
Végül néhány nyelv jellemzése:
Basic amatõr általános
interpreter
Pascal amatõr általános compiler
C profi általános
compiler
LOGO amatõr speciális interpreter
DOS batch speciális interpreter
Prolog profi speciális interpreter