Magyar zseni újította meg a programozást
További Tudomány cikkek
- Megtalálták a másnaposság felelősét, de nem az, amire eddig gyanakodtak
- Ha nincs vérfrissítés, jönnek a bajok
- Magas rangú katonatiszt tűnt fel a világ legnagyobb hadseregében, de még mindig rejtély, ki irányítja őket
- Végre tényleg megoldódhatott Stonehenge rejtélye
- Még mindig mérgező az 1916-os verduni csata helyszíne
BASIC, mint alapvető – nem is lehetne kifejezőbb neve egy programnyelvnek, amit az ősrégi mainframe számítógépektől a legmodernebb windowsos programokig mindenhol használtak. Pedig ez egy betűszó, a Beginner's All Purpose Symbolic Instruction Code rövidítése. A BASIC rengeteget tett azért, hogy a programozás ne absztrakt, csak a szakértők számára felfogható feladat, hanem a kezdőket is segítő, hatékony módszerré válhasson.
A korszakalkotó találmány egy merikába emigrált magyar zseni, John George Kemeny (Kemény János György) és Thomas E. Kurtz közös projektje. A két tudós a Dartmouth Főiskolán, Amerika egyik legpatinásabb intézményében találkozott. Közös munkájuknak forradalmi hatása volt az informatikára: demokratikussá, közérthetővé tették a programozást, és évtizedeken átívelő szabványt teremtett.
A Berzsenyitől a Princetonig
Kemeny budapesti belvárosi zsidó családba született. A jó hírű Rácz magániskolába járt, majd a Berzsenyi gimnáziumban tanult tovább. Nagy reményeket fűztek hozzá: matematikatanára már gimnazista korában is látta benne a matematikust, aki megnyerheti az Eötvös-versenyt.
1938-ban viszont Hitler bevonult Bécsbe. Kemeny apja, aki kereskedő és bankár volt, megsejtette, hogy Hitler mekkora veszélyt jelent, így elkezdte megszervezni a család emigrációját. Kemeny apja az USA-ba ment, hogy megalapozza a család jövőjét; a többiek 1940-ben, a második zsidótörvények bevezetése után követték. Kemeny nagyapja, nagybátyja és nagynénje úgy döntöttek, ők inkább Magyarországon maradnak. Mind a haláltáborokban végezték.
A család megmaradt tagjai New Yorkba költöztek. Kemény három év alatt kitűnő eredménnyel végezte el a középiskolát, majd a Princetonra ment. Később úgy emlékezett vissza: a Berzsenyi óta ez volt az első iskolája, ahol valóban jó tanárai voltak.
Húszéves kora előtt az atombombán dolgozott
Kemeny 1945-ben szerzett amerikai állampolgárságot, azonban a második világháború alatt, 19 éves korában behívták katonának. Szerencsére nem egy kaszárnyában kellett töltenie a szolgálati idejét, hanem a Los Alamos National Laboratoryben – itt folyt a híres Manhattan-terv, az atombomba elkészítése.
Kemeny felettese Richard Feynmann volt, de együtt dolgozhatott más híres magyar tudósokkal, például Neumann Jánossal is, akinek a gondolkodása nagy hatással volt rá. Kemény Los Alamosban találkozott először elektromos számítógépekkel, amik bonyolult számításokat végezhettek – valószínűleg innen eredt a vonzódása a számítógépek iránt.
1947-ben lediplomázott, a Ph.D. fokozatot két évvel később szerezte meg. Előtte azonban Robert Oppenheimer, az atombomba atyja kinevezte tanársegédnek Albert Einstein mellé. Később ő ajánlotta be Kemenyt a Dartmouth matematika tanszékére, ahol először professzor lett, de két év múlva kinevezték a matematika tanszék vezetőjének.
Mainframe gépet mindenkinek
Kemeny 1956-ban találkozott Tom Kurtzcal a Dartmouthban. Együtt szerezték be az első számítógépet az egyetemre. Ez még igen primitív eszköz volt, mindössze 16 kilobájt memóriával, és csupán 60 műveletet tudott elvégezni másodpercenként. Bár még ez is messze meghaladta az emberi agy számítási képességeit, az eszköz még nem demokratizálta az informatikát. Sőt, Kemeny úgy látta, az operátorok inkább arra törekedtek, hogy a gépet elválasszák a felhasználóktól.
Óriási és drága bestiák voltak ezek. A számítógépközpontok igazgatói azt tekintették fő feladatuknak, hogy gépeiket megóvják a használóktól. Az ember lyukkártyákra gépelte a programot és benyújtotta az operátornak. Az operátornál mindennap összegyűlt vagy száz ilyen köteg (batch), ő ezután sorra mindegyik csomagot betáplálta a számítógépbe. A gép végrehajtotta az utasítássorozatot, a végén egy kis lapra kinyomtatta az eredményt. Sorra kerülhetett a következő köteg. Másnap a használó megkapta az eredménylapot, amin rendszerint valami ilyen volt olvasható: HIBA A 27. KÁRTYÁN. Vagy nem volt olvasható semmi, mert a használó elfelejtette a program végére odaírni: PRINT X. Jött a hibakeresés, lyukasztás, sorban állás, az új nap.
– idézi a Fizikai Szemle 1993. májusi száma.
Az időelosztásos számítógép (DTSS – Dartmouth Time Sharing System) alapgondolata Kurtztól származik. A hallgatók használhatták a kollégium számítógépét, de egyszerre csak egy számítást végezhettek rajta, a fentebb idézett körülményes módon. Az időelosztásos számítógépet viszont több terminálról is lehetett használni: a gép a programok komplexitása alapján csoportosította az erőforrásokat. Amikor valaki nyomtatott, vagy új programsort gépelt be, a processzor nem végzett semmilyen munkát, a DTSS-sel viszont optimalizálni lehetett a gép erőforrásait.
Életem egyik legboldogabb pillanata volt, amikor nem kellett többé kártyákat lyukasztgatnom.
– foglalta össze a módszer jelentőségét Kemeny.
Programnyelvében él a nemzet
A gépi nyelv azonban nem volt elég interaktív - ahhoz semmiképpen, hogy a fiatalabbak is elsajátíthassák vele a programozás alapjait. Az akkoriban használt Fortran ehhez nem volt elég szájbarágós.
Miután szembesültek a fenti problémákkal, Kemeny és Kurtz úgy döntöttek, szükség lesz egy új programnyelvre. Kemeny úgy látta, a programozás legfőbb problémája, hogy nem demokratikus, inkább kirekesztő, és nem érthető, hanem feleslegesen sokat követel. Pedig ő tanárként, igazgatóként és rektorként is ebben látta a tudomány jövőjét: a megfelelő oktatásban, az információk minél közérthetőbb átadásában.
A BASIC nyelvet nem azért találtuk ki, hogy egy újabb számítógépnyelvet csináljunk. Azért találtam ki, mert úgy éreztem, hogy a számítógépet hozzáférhetővé kell tenni minden egyetemi hallgató számára.
– magyarázta Kemeny, akinek a logika volt a szakterülete, és látta, hogy egy új struktúrájú számítógépre, és egy ahhoz tartozó, könnyen elsajátítható új nyelvre van szükség.
A Nemzeti Tudományos Alap nem osztotta Kemeny nézeteit. Amikor benyújtották a pályázatot egy új programnyelv megírására, azt kifogásolták, hogy nem számítógép-szakértőket, hanem egyetemi hallgatókat akartak bevonni a programozásba.
A Tudományos Alap ebben alaposan tévedett. Ma azt mondom, hogy épp azért sikerült elsőként nekünk, mert amíg mások komputer-szakértőket használtak, mi egyetemi hallgatókkal dolgoztunk! A hallgatók képesek órákat dolgozni vég nélkül, telve új ideákkal, kreatívan belevágnak a leglehetetlenebb feladatokba is.
– emlékezett vissza Kemeny.
A BASIC nyelv fő kritériumait nyolc pontban fektették le; ezekből kiderül, hogy tulajdonképpen az addig összegyűlt hibák és akadályok kiküszöbölése volt az elsődleges szempont a tervezésnél.
- Általános célú felhasználásra is alkalmas. Nem célhardverre tervezett nyelvet akartak írni, hanem egy sokoldalú, könnyen elsajátítható, logikus nyelvet, amivel bármilyen célra készíthető program.
- Könnyen megtanulható és használható. Sokan rosszallóan nézték, amiért Kemeny és Kurtz nem a számítógép-szakértőket, hanem a fiatalabb hallgatókat célozta meg a BASIC nyelvvel. Kemeny viszont úgy látta, a kísérletező kedvű fiatalok sokkal jobb eredményeket érhetnek el, mint a kevésbé nyitott, idősebb szakértők.
- Bővíthető. A BASIC egyik legnagyobb előnye volt, hogy az alapjait könnyen el lehetett sajátítani; nem a kezdő, hanem a haladó felhasználóval fizettették meg a tanulópénzt. A korabeli programnyelvekkel ez épp fordítva volt, és ez senkit nem bátorított a programozásra.
- Interaktív. A gép azonnal reagált az utasításokra, így rögtön visszacsatolást adott az elkövetett hibákról. Ez felgyorsította a munka menetét, ami viszont kísérletezésre bátorította a felhasználókat.
- Világos, érthető hibaüzenetek. Szakértő csak úgy lehet valaki, ha már minden hibát elkövetett. A BASIC nem büntette a hibázást - vagyis nemcsak a program lefuttatása után szólt, ha hibát talált a kódban -, hanem jelezte azt, így azonnal javítani is lehetett.
- Hatékony. Az időelosztásos számítógép lényege pont az volt, hogy a futtatást nem lineárisan végezte, hanem gyorsan válaszolt a kis programokra is, így mindennél hatékonyabban dolgozhatott.
- Hardverfüggetlen. A BASIC általános nyelv volt, nem egy adott számítógéphez kötötték. Fontosabb azonban, hogy a gép szerkezetének ismerete nélkül is használni lehetett.
- Oprendszer-független. A felhasználónak nem kellett törődnie a számítógép operációs rendszerével, illetve annak problémáival, elég volt csak a programnyelvet ismernie.
PRINT 2+2
A BASIC nyelv kiindulópontja az IBM Fortranja volt (illetve a Fortran hiányosságait kijavító ALGOL). A BASIC-programok sorait számokkal jelölték: így előre meg lehetett határozni, hogy fusson le a program, és a szerkesztése is könnyebbé vált. Az egyes programsorokat úgy is lehetett törölni, hogy egy új utasítást gépeltek be a hozzá tartozó számmal: a régi programsor ilyenkor automatikusan felülíródott.
A végleges programnyelvet Dartmouth BASIC-nek nevezték. Persze, ennek is megvoltak a maga korlátai: például soronként csak egy utasítást lehetett megadni, és ezeknek mindig egy adott paranccsal kellett kezdődnie. Ennek ellenére a maga korában, 1964-ben meglehetősen összetett és gyors programnyelvnek számított, a későbbi hatásait pedig nem lehet alábecsülni.
Kemeny és Kurtz 1964. május 1-jén, hajnali négy órakor futtatták le az első BASIC nyelven írt programokat a General Electric mainframe számítógépén. Hogy az első program mi volt, arra már senki nem emlékszik; csak annyi biztos, hogy szerepelt benne a PRINT 2+2 parancs is.
Az alapvető BASIC parancsok
- HELLO — bejelentkezés a DTSS-be
- BYE — kijelentkezés a DTSS-ből
- BASIC — a BASIC mód elindítása
- NEW — új program elnevezése, programírás megkezdése
- OLD — egy korábban elnevezett program visszaállítása a háttértárból
- LIST — az aktuális program megjelenítése
- SAVE — a futó program mentése háttértárra
- UNSAVE — a futó program törlése a háttértárról
- CATALOG — az elérhető programok listájának megjelenítése
- SCRATCH — a futó program törlése, de a név megtartásával
- RENAME — a program átnevezése, törlés nélkül
- RUN — az akutális program futtatása
- STOP — a futó program leállítása
- FRI — Friden-mód bekapcsolása (így elektromechanikus írógépet is lehetett adatbevitelre használni)
- NFR — a Friden-mód kikapcsolása
- EXP — a segítség (help) menü elérése, ezzel lehetett lekérni a parancsokat
- REPLACE — más néven menti el az éppen futó programot
A nyílt forráskód őse
Fontos: a tervezők nem védették le vagy jegyeztették be a BASIC nyelvet. Azt szerették volna, ha mindenki megismeri és használni kezdi; ez elősegítette a program terjedését, az újabb verziók megjelenését.
A terv bevált. A mainframe gépeket gyártó General Electric a hetvenes években már saját BASIC-nyelvjárásokat talált ki, mivel nem volt türelmük kivárni az új verzió megjelenését. A BASIC ötödik iterációját már maguk készítették el. Ez a módszer a mai napig visszaköszön a nyílt forráskódú fejlesztéseknél: az alapok adottak, és csak a programozókon múlik, hogy mit hoznak ki belőle.
A BASIC nyelv annyira népszerű lett, hogy 1974-ben az Amerikai Szabványügyi Hivatal (ANSI) arra kérte a fejlesztőket, hogy adják meg a BASIC nyelv általános jellemzőit. Egy bizottság dolgozni kezdett az ügyön, és végül kétféle modellt különítettek el: a minimál és a standard BASIC-et. Erre viszont már csak azután került sor, hogy a BASIC az egész világon elterjedt, és a standard BASIC szép lassan kikopott a használatból. Az ANSI mindenesetre kétféle szabványt jegyzett be.
Bill Gates is ebből dolgozott
1975-ben Bob Albrecht és Dennis Allison elkészítették a TinyBASIC-et, ami 2 kilobájt memóriával is futtatható volt. Még ugyanebben az évben Bill Gates és Paul Allen átírták a BASIC-et az AMITS Altair gépére. Ennek az volt a különlegessége hogy ez volt az első, interpretált BASIC. Az interpretált (értelmezett) nyelvek lényege, hogy egy értelmező program fordítja gépi kódra a forráskódot.
Gates és Allen ezzel a módszerrel próbálták megoldani a számítógépek memóriagondjait, méghozzá sikerrel: 4 kilobájtba sikerült mindent belezsúfolniuk. Egy kompilált nyelv esetében nem maradt volna elég memória a program futtatásához, de így marad hely a programnak és az adatoknak is. Kemeny és Kurtz nem voltak elragadtatva az interpretált nyelvtől, de ennek később további előnyei is megmutatkoztak. Az pedig azonnali haszon volt, hogy a hibakeresés sokkal gyakorlatiasabb lehetett.
Innentől fogva számos gyártó beépítette a számítógépébe egy ROM csipen a BASIC-et. A hetvenes évek végére minden fontosabb gyártónak volt saját BASIC-je: a Radio Shacknek, az Apple-nek, a Sinclairnek, az Atarinak, a Texasnak és persze a Commodore-nak is (generációs poén a "10 GOTO 10"). A technológiát a legnagyobb cégek kapták föl – csak természetes, hogy ezután végképp megkerülhetetlenné vált.
A nyelv népszerűsége a nyolcvanas években is töretlen maradt. Bár az újabb számítógépek gyakran saját BASIC értelmezővel egybeépítve jelentek meg, a különböző, BASIC-ben írt programok szinte mind inkompatibilisek voltak egymással; csak azzal a BASIC-kel működtek együtt, amelyben írták őket.
A DOS (és vele a Qbasic) ezen szerencsére valamennyit segített. Ugyancsak a Microsoft volt az, aki a Visual Basickel ismét megújította a nyelvet; ennek két változata, a VBA és a VBS később a Windows-verziókkal párhuzamosan terjedt el.
A modern BASIC-verziók már csak nevükben emlékeztetnek a régire, de a hatásuk épp úgy érződik a mai napig, mint a Neumann-elveké; egyaránt megkerülhetetlenek az informatikában.
Mindenki programozzon!
Kemeny nemcsak a programozóknak, hanem a bölcsészeknek is szánta a számítógépet. Ő maga sem csak matematikával foglalkozott; épp úgy foglalkoztatták a társadalomtudományok és a filozófia is. Érdemes megjegyezni, hogy nemcsak a programozást demokratizálta, hanem a mélyen republikánus-konzervatív Dartmouth-t is: ő érte el, hogy nők, feketék és indiánok is járhassanak a főiskolára.
Az oktatással még akkor sem hagyott föl, amikor később rektorrá nevezték ki, pedig a kollégiumi szabályzat szerint ekkor már nem taníthatott volna. Mégis kiharcolta, hogy megtehesse; lemondása napjáig megtartotta az összes óráját.