Ügyességi játékok programozása
Pythonnal és Pygame-mel

Chapter 2: Mi az a számítógépes nyelv?

Videó: Mi az a számítógépes nyelv?

Mi alkotja a számítógépes nyelveket? Miért rendelkeznek ilyennel a számítógépek? Miért van olyan sokféle nyelv?

A motor működését nem szükséges megérteni az autóvezetéshez. Hasonlóan nem szükséges megérteni a fenti a kérdéseket a programozáshoz. Mindazonáltal, ahhoz, hogy magasabb szintre juthassunk, már szükséges megérteni azt, ahogyan a számítógép működik. Szélesebb látókört biztosít számunkra.

2.1 A programozás rövid története

A számítógépek elektromosak és digitálisak. Egy számítógép számára minden dolog csupán azt jelenti, hogy van-e vagy nincs feszültség a vezetékben. A feszültség hiánya nullát jelent. Bármilyen feszültség megléte egyet jelent. A számítógépek nem is képesek tovább számolni, efelett már a nullák és egyesek többszöröseit veszik figyelembe.

Korábban, kapcsolókat használtak arra, hogy egyeseket és nullákat juttassanak el a számítógép memóriájába. Ábra 2.1, A Wikimedia Commons jóvoltából, íme egy Altair 8800. A szemközti panel kapcsolók arra voltak használatosak, hogy betöltsenek valamit a programba. A fények jelezték a kimenetet. Nem volt még monitor.

fig.altair
Figure 2.1: Altair 8800

Minden be/ki kapcsoló egy számot jelképezett. Minden szám egy adatot vagy egy végrehajtandó utasítást a számítógép számára. Ez a rendszer csak egyeseket és nullákat használt a számok megjelenítésére, ezt bináris vagy kettes számrendszernek hívjuk. Ezt a számítógépes nyelvet "1GL"-nek hívják, vagy első generációs programnyelvnek.

A bináris számok gyakran vannak négyes csoportokban ábrázolva. Például:

1010 0010 0011

Mind az adat és a számítógép utasításai binárisan vannak kódolva. A gépnyelv bináris számokból áll, melyek olyan utasításokat tartalmaznak, amiket a számítógép előbb lefordít. Nem minden bináris adat gépnyelv persze. Adatok, mint például a dokumentumok, adatbázisok, pénzügyi grafikonok is bináris formában vannak a gépen tárolva. Ez az adat, természetesen, nem feltétlenül futtatható egyből a számítógépen.

Már a haladás jele volt a kapcsolókkal kódolt programokhoz képest, a hexadecimális kódok megjelenése. Az emberek többsége a decimális számokat használja, melyek a 0-9 jelekből állnak. A hexadecimális számok a 0-9 és A-F használhatóak, és négy kapcsolót jelentenek, vagy a 0-15 számokat.

BinaryDecimalHexadecimal
000
111
1022
1133
10044
10155
11066
11177
100088
100199
101010A
101111B
110012C
110113D
111014E
111115F
1 00001610
1 00011711
Videó: Tízes, bináris, és hexadecimális számrendszerek

Annak reményében, hogy a programok bevitelét könnyebbé tegyék, később a számítógépek elkezdték használni az assambly nyelvet. Minden parancs egy kódszó, és egy program, amit fordítónak (compiler) nevezünk, átfordította a kódszót számokra, a parancs értelmezése közben. Ezt a típusú nyelvet "2GL" nyelvnek, vagy második generációs nyelvnek hívjuk.

Ez az ábra 2.2 egy példát mutat egy assembly nyelven megírt programból, lásd még: A Wikimedia Commons jóvoltából.

fig.assembly
Figure 2.2: Példa assembly nyelvre

Miközben ez egy előrelépés volt, még mindig nem volt elég könnyű programot írni. A következő nyelvi generáció már magasabb szintű absztrakciót is megengedett. A harmadik generációs nyelvek úttörői: (COBOL, FORTRAN and LISP) Ezekkel már sokkal könnyebb volt programozni.

A második és harmadik generációs nyelvek fordítókat használtak. Az fordító fogja a felhasználó által begépelt programot (nevezzükforráskódnak) és lefordítja gépi kóddá. A programozó ezután ezt a gépi kódot futtatja. Az eredeti forráskód nem fut valójában.

Ha sok forráskód részlet van egy programban, akkor összekapcsolják őket egy programmá, egy programmal, amit szerkesztőnek (linker) neveznek. A szerkesztő a gépi kódon fut, amit a fordító generált, hogy az generáljon egy végső programot. A végső program az, amit a felhasználó lefuttat, és az eredeti forráskód már nem kell.

fig.compiler_and_linker
Figure 2.3: Fordítók és szerkesztők

A hátránya a gépi nyelv lefordításának, hogy a program csak egy adott típusú gépen tud futni. Azok a programok, amiket Windowsra fordítottak le, nem fognak Apple Macintoshon futni, vagy Linuxon.

Mivel a teljes fordítási és szerkesztési lépések túl bonyolultak az új programozók számára, ezért néhány nyelv értelmezőt(interpreter) kezdett el használni. Ezek a programok ránéznek a forráskódra, és azon nyomban lefordítják gépikódra. Emiatt lehetséges, hogy a program fut Windows, Mac, vagy Unix alatt is, mivel egy fordító dolgozik minden platform alatt.

A hátulütője az értelmezők használatának az, hogy lassabbak, mivel az értelmező lassabban fordít a számítógép anyanyelvére.

fig.interpreter
Figure 2.4: Értelmező

A Python is egy példa az értelmező nyelvekre. Könnyebb fejleszteni Pythonban, mint C-ben, de a Python lassabban fut, és egy értelmezőnek kell még a háttérben futnia.

Azok a nyelvek, mint például a Java olyan rendszert használnak, ahol a program lefordítódik gépi kódra, és elfut a Java Virtuális gépen. (a JVM-n), vagyis nem az adott gépen. Másik népszerű nyelv, mely hasonlóan működik, a C#, a Közös Nyelvi Infrastruktúra (CLI) nevű nyelven, ami a virtuális végrehajtási rendszeren fut, vagyis a (VES) virtuális gépen. Ezekről teljes képet alkotó leírást adni nem ennek a könyvnek a célja, de nyugodtan olvass utána, ha érdekel.

Ma már sokféle különböző számítógépes nyelv létezik. Mivel a számítógépek is különféle feladatokra szakosodtak, ezért a különböző nyelvek is hozzá vannak rendelve egy-egy ilyen feladathoz. Az olyan nyelv, mint a C, jól működik együtt az operációs rendszerekkel, és kisebb számítógépekkel. Más nyelvek, mint például a PHP arra specializálódtak, hogy weboldalakat lehessen velük létrehozni. A Python egy általános célú nyelv, ami arra specializálódott, hogy könnyű legyen használni.

A Tiobe nevű cég nyomonköveti a különböző programnyelvek népszerűségét, és az ő indexükön frissítik is az adatokat minden hónapban. Jó ötlet ellátogatni ide, és a munkahely-toplistákhoz, mint amilyen aDICE, hogy az ember képben legyen, milyen nyelveket keresnek a munkáltatók.

Szerencsére, majdnem az össze nyelv osztozik közös elemeken, és ha egyszer egy nyelvet megtanultunk, akkor a hasonló elméleteket használhatjuk a másik nyelven is.

Ajánlanám megnézésre az alábbi számítástechnika történetével foglalkozó, szórakoztató videót: A kockák diadala/Triumph of the Nerds Robert X Cringley-től, ami egy háromrészes sorozat a számítástechnika eredetéről. A mozik elég szórakoztatóak ahhoz, hogy akár az egész család megnézhesse. Ajánlanék még egy könyvet: Véletlenszerű birodalmak/Accidental Empires, ha jobban szeretnél olvasni, mint videózni.

Mi történik a videók után? Még nem tárták fel az internet születésének történetét! Nézd meg az alábbi sorozatokat: Nerds 2.0.1 szintén Robert X Cringely-től.

2.2 Áttekintés

2.2.1 Többválaszos tesztkérdések

Click here for a multiple-choice quiz.

2.2.2 Rövid válaszos munkafüzet

Click here for the chapter worksheet.

2.2.3 Laborgyakorlatok

Click here for the chapter lab.


You are not logged in. Log in here and track your progress.