Programozás
Bevezetés - A hardver és a szoftver jelentőségének változása A számítástechnika hajnalában (1950-es évek) a hardvernek sokkal nagyobb volt a jelentősége. Akkoriban csak a hozzáértő szakemberek jutottak számítógép közelébe, így nem is volt cél, hogy kimondottan felhasználóbarát programokat írjanak. Ahogy a technológia fejlődött, úgy a számítógép (a hardver) egyre megbízhatóbbá és olcsóbbá vált. Tehát a felhaszánlók köre megváltozott: profi szakemberek helyett most gyermekek, tanárok, orvosok, titkárnők, pékek, és takarítónők ülnek a gépek előtt, és minden joggal elvárják, hogy a számítógépet a saját különböző céljaikra a lehető legkényelmesebben lehessen felhasználni. A számítógép önmagától semmi értelmes dologra nem képes ezért a felhasználói igényeket a programoknak (szoftvereknek) kell biztosítani. A számítástechnika története során tehát a hangsúly áthelyeződött a hardverről a szoftverre. Mára a szoftvergyártás (vagyis a programozás) jelentős iparággá nőtt.
A Neumann-elvű számítógépek lényege, az adatok és az elvégzendő feladat (kódolt utasítások formájában) a memóriában van eltárolva. A ma körülöttünk lévő számítógépek mind ilyen elven működnek, legyen az PC, Macintosh, nagygép, laptop, palmtop, vagy akár mobiltelefon, CD játszó, vagy mikrohullámú sütő processzora. Ezért amikor programozásról beszélünk, számítógépen Neumann-elvű digitális számítógépet értünk.
A programvégrehajtás menete A memória minden rekesze sorszámmal (címmel) rendelkezik, így a memória bármely rekesze megcímezhető, és így a processzor által közvetlenül elérhető. a processzor feladata, hogy végighaladjon a program utasításain, és az előírt sorrendben végrehajtsa azokat. Az utasítások műveleteket végeznek az adatokon
1. Az utasítás gépi kódja lehívódik a memórióból a CPU-ba A programvégrehajtás menete: 1. Az utasítás gépi kódja lehívódik a memórióból a CPU-ba 2. dekódolás: megállapítja, hogy milyen adatokkal milyen műveletet kell elvégezni 3. beolvassa a memóriából a szükséges adatokat, végrehajtja az előírt utasítást 4. az eredményt pedig visszaírja a memóriába
Fordító,értelmező A programozó munkáját minél jobban meg kell könnyíteni. Ennek érdekében programozási nyelveket dolgoztak ki, hogy ne számokkal kelljen programozni, hanem sokkal emberközelibb módon, olyan nyelven, amelyben számok (kódok és címek) helyett angol szavak szerepelnek. Egy ilyen nyelvet azonban nem ,,ért meg'' a gép, ezért ezt le kell fordítani a gép nyelvére. Ehhez szükség van egy olyan segédprogramra, amely az általunk megírt programot gépi kóddá alakítja (ez a fordító, compiler) , vagy lépésenként végrehajtja (ez az értelmező, interpreter).
Tehát: fordító (compiler): a program forrásszövegéből egy gépi kódú, futtatható programot (pl. EXE) állít elő, vagyis a programot lefordítja a gép nyelvére értelmező (interpreter): a program forrásszövegét sorról sorra értelmezi, ellenőrzi, és (ha tudja) végrehajtja
A programozási nyelvek csoportosítása, jellemzésük A megoldandó probléma alapján: leíró jellegű nyelvek (egy állandó állapotot (tényeket) fogalmazhatunk meg bennük, nem pedig cselekvést. pl. HTML, VRML) (procedurális) programnyelvek (algoritmikus cselekvést (tennivalók sorozatát) fogalmazunk meg bennük. Programozási nyelven elsősorban ilyen programnyelvet értünk.)
A nyelv absztrakciós szintje alapján: alacsony szintű nyelvek (ehezebb a programírás, de a lefordítandó program közelebb áll az gép nyelvéhez (a gépi kódhoz pl. assembly ) magas szintű nyelvek (könnyebb programot írni (pontosabban egy emberközeli probléma megfogalmazása könnyebb) pl. Java )
fontosabb programnyelvek
ma is élő, legelterjedtebb általános nyelvek: Assembly (gépi kódú programozást segítő nyelv, ma már csak az operációs rendszerek készítői, ill. a hardvergyártók programoznak ilyenben ) PASCAL (redetileg a struktúrált programozás tanulónyelvének szánták ) DELPHI (alapja az objektum-orientált Turbo Pascal ) C (alacsony és magas szintű nyelvként is szokták emlegetni, mert hatékony is, könnyű is programozni ) C++ (a C nyelv objektum-orientált továbbfejlesztése ) Java (egy képzeletbeli (virtuális) Java-gép programnyelve, szintaktikája nagyon hasonlít a C++ -éhoz )
néhány régebbi programnyelv, amelyek elterjedtek voltak, de ma már csak elvétve találkozni velük: FORTRAN (FORmula TRANslator) COBOL PROLOG ( = PROgramming in LOGic) LISP ( = LISt Processing) SMALLTALK