Neumann – emléke örök, elvei múlandóak

Technológia - szerző: Kacsúr Tamás

110 éve született Neumann János, akit leginkább a számítógéppel kapcsolatos munkásságáról ismerünk. Itt azonban néhány apróságot helyre kell tenni. Talán mára idejétmúltak és nem is olyan egyértelműek azok a híres alapelvek. Talán nem is talált fel semmit, kiváltképp nem az első számítógépet. Sokan pedig azt hiszik.  

 

A közhiedelemmel ellentétben Neumann nem találta fel az első számítógépet. A másodikat sem. Az első számítógép az 1943 és 46 között épült ENIAC volt, Neumann 44-ben fordult az elektronikus számítástudomány felé, amikoris nyilvánvalóvá vált számára, hogy a hagyományos módszerekkel végzett számításai – melyek a lökéshullám tudományára (atombomba akkoriban mindennél nagyobb figyelmet és prioritást kapott) vonatkoztak – nem elegendőek. Az első számítógép nem felelt meg számára, ezért megfogalmazott néhány alapelvet, amik munkájához alkalmassá tennének egy gépet. Ezek jónéhánya azonban már akkor sem volt helytálló. Az, hogy a második számítógép, a Mauchly és Eckert által 44 és 48 között épülő és 51-52-ben üzembe helyezett EDVAC kifejlesztésében a tanácsadóként megjelölt és kétségtelenül nagyra értékelt tudós mennyire volt jelen, sajnos kevés feljegyzés őrzi. Vegyük hát sorra a magyar származású, 1937-ben amerikai állampolgárságot kapott matematikus elveit. Mivel minden szakirodalom máshogy csoportosítja őket, mi daraboljuk fel tételekre:  

 

1: A számítógép legyen soros működésű. Jelentése szerint a számítást végző központi egység az adatokat egymás után, sorban hajtja végre. Nem kell hozzá sok magyarázatot fűzni, hogy a szuperskalár processzorok párhuzamosan végzett műveletei évtizedek óta meghatározóak a számítástechnikában és hogy egyetlen processzoron belül is minél több párhuzamos szál futtatására törekszenek. De beszélhetünk a számítógép egészének vizsgálatáról, habár az alaplev a központi számítást végző egységet jelöli meg: a különböző perifériák azonos memóriát és tárat használó processzorainak párhuzamos működése igen meghatározó. Leglátványosabb példa erre az általában külön kártyán helyet kapó grafikai processzor, mely a CPU-t tehermentesíti ezen célfeladatok alól. A bitek egymás után jönnek, de a központi egységről szól a fáma, így ez az alapelv régen bukott, Neumann azonban még helyesen határozta meg.  

 

2: A számítógép kettes számrendszert használja. Minden művelet binér logikai ítéletekből épül fel, tudományos fejtegetéseken elrugaszkodnak ugyan tőle, de ez igaz még ma is, Neumann megközeléítése azonban más volt. Az alapelvével kimondta, hogy 0 és 1, mint alacsony és magas szint különböztetik meg, így végezvén el a műveleteket. Valójában nem ilyen egyszerűen határozunk meg sem tárolt, sem továbbított adatot, így az alapelv a magyarázata miatt téves, de minimum szakmailag vitatható. Mivel kizárólagosan a bit elemi létét, azt viszont teljes mértékben igazolja ez az ítélet, az alapelv címsorának jelentésére korlátozva helytálló. Fél pont.  

 

3: Teljesen elektronikus működés. Nem, és soha nem s volt igaz, tekintve, hogy a részegységekre is keiterjesztette a feltételt. A korabeli gépek lyukkártyái is meglehetősen mechanikus alaktrészek voltak, de gondoljunk csak merevlemezeinkre, melyeket csak évek múlva válthatnak fel és juthatnak a szinte kihalt, mechanikán alapuló CD/DVD meghajtók sorsára. A számítógép működésében az adattárolás fontosnak mondható, így az ehhez kapcsolódó alapelv is érvénytelen már csak ezen aspektusában is.  

 

4: A számítógépnek legyen belső memóriája: teljes mértékben helytálló a felvetés, miszerint a számítógép gyors műödése miatt nincs lehetőég arra, hogy minden lépés után a kezelő beavatkozzon a számítás menetébe. A belső memóriában tárolhatók az adatok és az egyes számítások részeredményei, így a gép bizonyos műveleteket onnan kiolvasva el tud végezni. Igaz.  

 

5: Tárolt program elve. Vitathatatlan, hogy a programot alkotó utasítások, azok készlete adatként kezelhető. Ezek egy belső memóriában (végülis..) tárolhatóak, mint bármelyik más adat. Ezáltal a számítógép önállóan képes működni, hiszen az adatokat és az utasításokat egyaránt a memóriából veszi elő. Nem szállunk vitába, valamilyen formában minden elemi adat és utasítás tárolva van.  

 

6: A számítógép legyen univerzális: A különféle feladatok elvégzéséhez nem kell speciális berendezéseket készíteni – Neumann szerint. Turing bebizonyította, hogy egy olyan gép, amely el tud végezni néhány alapvető műveletet, az elvileg bármilyen számítás elvégzésére is alkalmas. Az akkori működés és koncepció szerint még igaz volt. Az univerzális feladatvégzés azonban nem definiálható ilyen könnyen, ugyanis a számítási sebesség és az utasításkészlet is egy-egy határvonalat húz, mely sokszor nem elég éles. A processzorok a 80386 óta tartalmaznak matematikai társprocesszort, mely bizonyos lebegőpontos számítások elvégzésére képes. Idővel a CPU-kban egyre több célfeladatra fejlesztett mag kapott helyet, manapság a feladatvégzés már nem is centralizált. Elvileg minden a kettes számrendszer alkalmazásán múlik ugyan, így – megintcsak elvileg – minden általános processzornak tekinthető. Ezesetben minimum a soros működés elve bukik ismét. Az egy gépen belül működő processzorok közötti különbség működési elveiken túl az utasításkészletükben rejlik, így az alapelv szerint működésileg azonosak és képesek bármire, gyakorlatilag például lebegőpontos számításokra vagy sebesség/alkalmazás tekintetében célfeladatok ellátására nem minden esetben. Kimondhatjuk, hogy a számítógép ugyan univerzális, de csak a legtöbbször integrált ámde elkülönülő speciális egységeivel együtt. Lesarkítva: attól, hogy egy majom le tudja ütni az írógép billentyűit, még nem képes megírni a Háború és békét. Bár ELVILEG de…  

 

Ádámhoz és Évához visszavezetve mind rokonok vagyunk. Elemi szintre visszavezetve a számítógép még ma is bitekkel működik. Gyakorlatilag a majom egyetlen mondatot sem gépel le a Háború és békéből. Elméletileg akárhányszor megírja még a folytatást is.