Ügyességi játékok programozása
Pythonnal és Pygame-melChapter 2: 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.
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.
Binary | Decimal | Hexadecimal |
0 | 0 | 0 |
1 | 1 | 1 |
10 | 2 | 2 |
11 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
1000 | 8 | 8 |
1001 | 9 | 9 |
1010 | 10 | A |
1011 | 11 | B |
1100 | 12 | C |
1101 | 13 | D |
1110 | 14 | E |
1111 | 15 | F |
1 0000 | 16 | 10 |
1 0001 | 17 | 11 |
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.
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.
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.
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.
English version by Paul Vincent Craven
Spanish version by Antonio Rodríguez Verdugo
Russian version by Vladimir Slav
Turkish version by Güray Yildirim
Portuguese version by Armando Marques Sobrinho and Tati Carvalho
Dutch version by Frank Waegeman
Hungarian version by Nagy Attila
Finnish version by Jouko Järvenpää
French version by Franco Rossi
Korean version by Kim Zeung-Il
Chinese version by Kai Lin