Közzétéve: 2008.11.09.
Milyen nyelven ért a számítógép? – A programozási nyelvek története.
Aki ezt a cikket most olvassa, egy számítógép előtt ül. A gép bejelentkezése után elindított egy böngészőt, amit utasított, hogy ezt a weblapot mutassa neki. Leegyszerűsítve utasította a gépet, és az végrehajtotta a parancsokat. Milyen nyelven ért a gép? A kattintások, szövegbeírások nyelvén, sőt újabban már a beszélt nyelven is! – válaszolhatná bárki. Ez bizony nem így van. A számítógép csak gépi kódon ért, ami 1 és 0 számjegyek tömkelege. Ez a cikk arról szól, hogyan jutottunk el a mostani kényelmes számítógép kezelésig.Miért fejlesztettek az emberek számolni képes gépet? Mert gyorsabb, mint az ember. Mindenkinek van otthon számológépe, akármekkora számokat szoroz össze, egy pillanat alatt kész. A Neumann.elvekig a számítógépek csak számológépekként működtek. Neumann János hívta fel a figyelmet arra, hogy a számítógéppel való munka leglassúbb láncszeme az ember, aki adogatja a feladatokat a gépnek. 1952-ben készítették el az első olyan gépet, amely már a feladatokat is tárolta, így nem kellett várni az emberi beavatkozásra, és az egész program másodpercek alatt lefuthatott.
Ekkor még számokat tápláltak a gépbe, tehát az utasításokat is számformátumban adták meg, nemcsak az adatokat. Ezt gépi nyelvnek hívják, és csak annyi könnyítést tartalmaz, hogy 16-os számrendszert használ, ami tömörebb, mint a 2-es. Nézzünk egy példát: 0B0A 0C0E 0D00. Az első négyjegyű szám az utasítás volt, a 2. és a 3. pedig a két adat memóriacíme. Brrr. Így már érthető, hogy akkoriban a programozók varázslóknak tűntek. Kevesen értettek hozzá.
Sokat javult a helyzet az Assembly nyelvvel. Az utasítások már szavak voltak, és az adatoknak is betűket lehetett választani. Az előző utasítás például: ADD X Y. Ez már kis angol tudással érthető: add össze X-et és Y-t. Ez a nyelv, úgy mint az előző, 1:1 nyelv volt, vagyis a program minden sora a gép egy-egy feladatát tartalmazta. Ezzel véget is ért az alacsony szintű, vagyis az első generációs programozási nyelvek kora. Ma már csak akkor veszik elő, ha nagyon hardver közeli programot kell fejleszteni.
A programozási nyelvek 2. generációja a FORTRAN-nal kezdődött, ez volt az első magas szintű programozási nyelv. Az IBM fejlesztette ki 1957-ben.
Ez már 1:N típusú nyelv volt, vagyis a programozó egyetlen utasítása sok kisebb utasítás végrehajtását jelentette a gépnek. Ez a nyelv emberközelibb volt, tehát a programozó a probléma megoldására koncentrálhatott, nem kellett a gépre figyelnie. Ennél, és ettől kezdve az összes további nyelvnél létezik egy fordító program, amely a programot gépi kódra fordítja., így állítva elő a tényleges programot. A programozó által írt szöveget forrásprogramnak, a fordító programot compiler-nek nevezzük. A FORTRAN-t főleg matematikai problémák megoldására fejlesztették ki, és bármily meglepő, még ma is használják, az utolsó verziója a FORTRAN 2000 volt.
Hasonló fejlettségű volt az ALGOL, de annyival többet tudott, hogy egy-egy programrész önmagát is újra végrehajttathatta (szakszóval:rekurzív lehetett a program). Bár fejlettebb volt a FORTRAN-nál, mára teljesen eltűnt.
Az eddigi két nyelv a matematikára koncentrált. Hamar szükségessé vált olyan nyelv, amely a nagy adatbázisokkal való munkát könnyíti meg. 1963-ban született ötlet szinten, 1968 hozta az első verzióját, 1974-ben szabványosították a COBOL nyelvet. Minden gépen futott, kiváló lehetőségeket kínált adatállományok létrehozására, karbantartására, lekérdezésére. Ennek a nyelvnek is lett még folytatása, 1989-ben született a strukturált, nem sokkal később az objektum-orientált változata. Legfőbb hátránya a nagy programméret, és a matematikai függvények szűkössége volt.
A 60-as évek elején már egyre több embert érintett meg a számítástechnika, így igény formálódott egy könnyen megtanulható és kipróbálható nyelvre. 1963 a BASIC születési éve. A magyar származású Kemény János és munkatársa, Thomas Kurtz kidolgoztak egy olyan nyelvet, amellyel a programozás könnyen oktatható és tanulható. A könnyű kipróbálhatóságot segítette, hogy interpreter típusú lett a nyelv.
Interpreter: Azok a nyelvek, amelyek nem interpreter típusúak, szöveg formátumban készülnek a programozó gépén. Ha a programozó ki akarja próbálni, elindítja a fordító programot, amely előállítja a gépi kódú változatot, amely ezután teljes egészében működik (vagy nem, ha hibás). Ezzel ellentétben az interpreter soronként fordít és azonnal végrehajt, tehát rögtön látszik az eredmény, vagy kiderül a hiba.
Ezt a nyelvet nem tekintették „komoly” nyelvnek, főleg a GOTO utasítás miatt, amely megengedi az ugrálgatást a program egyes részei között (ez egyébként tényleg nagyon „bugyuta” megoldás). A nyelv tovább fejlődött, sok iskolás gyerek tanulja, és Visual Basic néven ma is használatban van. Hogy mennyire él még, azt bizonyítja, hogy a Microsoft Office programcsomag makronyelve a VBA, amely a Visual Basic for Application rövidítése. A programnyelvek második generációja ezzel le is zárult.
A harmadik generációt az általános nyelvek jelentik. Az eddigieket mindig valamilyen célra fejlesztették ki: matematikai számítások, adatkezelés, oktatás. A harmadik generációs nyelvekkel bármelyik cél kivitelezhető. A kezdeti PL/1 és APL nem lett meghatározó, mert megjelenésekor már széles körben elterjedt a FORTRAN és a COBOL. Az ezután megjelent PASCAL viszont már teljes siker volt. Niklaus Wirth a Zürichi Műszaki Főiskola professzora fejlesztette ki az ALGOL-ból kiindulva, de általános célokra. Ez annyira jól sikerült, hogy még a mai könyvekben is pl. a programok logikai szerkezetét (szakszóval az algoritmusokat) a PASCAL segítségével írják le. Szabad formátumú, kevés utasítást tartalmaz és strukturált, támogatja a moduláris programozást. Aki ezt megtanulja, az már könnyen sajátít el bármilyen más nyelvet.
Ebben az időben jelent meg a MODULA2, amely, mint a neve is mutatja, a moduláris programozást helyezte előtérbe, és először lehetett egymással versengő programszálakat létrehozni, valamint az ADA, amely a GENERIC és NEW kulcsszóval az egymáshoz hasonló programrészeket egymásból engedte származtatni. Ez tekinthető az objektum-orientált programozás ősének. Külön érdekessége, hogy ezt az első programozónőről Augusta Ada Byron-ról (1815 – 1852) nevezték el.
1972-ben Dennis Ritchie alkotta meg a mérföldkőnek számító C nyelvet. Eredetileg a UNIX fejlesztő programjának szánta, de hamar megírták más operációs rendszerekhez is. Mindent tud, amit a PASCAL, de hatékonyabb, egyszerre lehet alacsony szinten, hardver közeli, és magas szintű programot írni vele. Természetesen azóta megjelent a C++, a C objektum-orientált változata is. Ma is az egyik legkedveltebb nyelv.
A fejlődés újabb vargabetűje, hogy a programnyelvek megint az általános felől a speciálisak felé változnak. A mai világban, ha adatkezelésre van szükség, akkor SQL, ha Internetes alkalmazásra, akkor PHP, vagy Java platformot használnak a programozók.
Talán a programfejlesztés könnyítése terén lezajlott fejlődést sem árt megemlíteni. Én 1990 táján kezdtem programozni, és mindent (a menüket, ablakokat, stb.) külön-külön meg kellett alkotnom. Ma a vezérlő elemekkel egyáltalán nem kell foglalkozni, azokat készen nyújtja helyettem a fejlesztő rendszer. A munka tényleg a program tartalmi részére fordítódhat. És ez még nem a fejlődés vége. Kidolgozás alatt vannak azok a fejlesztő rendszerek, amelyek grafikus felületen, egyszerű egérkezeléssel vezérelve fejlesztik a kívánt programot (tehát én csak teszek-veszek a monitoron, és közben íródik a forrásnyelvű program). Valószínűleg nincs már messze az az idő, amikor mikrofonba beszélve utasíthatjuk a gépet. Most még nem tudom elképzelni, mi jöhet majd azután?