Programsírás

Kipróbálható a mesterséges intelligencia, ami megírja helyettünk kódjaink  nagy részét - Prog.Hu

A mérnöki munka igazi sikerévei a múlt században voltak. A mérnökökre úgy néztek, mint a jövő építőire, a civilizáció nagy reménységeire. Akkor még úgy tekintették, hogy a mérnökök a világ problémáinak megoldói, mert mi, mérnökök konvertáljuk az álmokat valósággá.

Hogy megváltoztak azok az idők! Bár minden kétséget kizáróan, a mi problémamegoldó készségünk végső soron az egyedüli remény, hogy megoldjuk azt a gazdasági és ökológiai krízist, ami a következő generációkat érinteni fogja, megértük, hogy már nem kapjuk meg a korábbi megbecsülést.
Igaz, hogy pár év egyetem még nem csinál szükségszerűen szakértőt belőlünk, de ahogy a fejlődünk, az általunk megszerzett bölcsesség és eredményesség növekedésével kiérdemelnénk a fokozódó társadalmi elismerést. Csakhogy ez a trend felborult. Az ismeretek egyre magasabb hányada testesül meg a gépekben, ami oda vezetett, hogy kevesebb képzett műszaki emberre van szükség. Nő a termelékenység, közben az alkalmazottak egyre kevésbé értik, hogy mit is végeznek pontosan. Mind több olyan terület létezik, ami túl gyorsan fejlődik, a felsőoktatás pedig nem tudja tananyag szinten követni a változásokat. Megváltoztak a tanuló igények is, sokan nem tudnak, vagy nem akarnak éveket igénylő oktatási folyamatban részt venni, helyette instant karrier megoldásokat választanak. A tanulás látszólagos értelmetlenségének és nehézségeinek vállalása és a késztetés, hogy hirtelen keressünk egy csomó pénzt, a mérnöki fakultásra való jelentkezések számát nagyon megnyirbálta. Megváltoztak a fizetések is. Mára egy jó szakmunkás magasabb fizetést vihet haza, mint egy többdiplomás kutató. Szóval kijelenthetjük, hogy a mérnöki diploma ma már nem rendelkezik olyan értékkel, mint jó pár évtizeddel ezelőtt, a szakma társadalmi elismertsége csökkent.
Vegyük például a számítástechnikát. Az informatikai munkák jelentős részében az egyetemi mérnöki diplomának alig van hozzáadott értéke. Egy tanulmány szerint, az alig 6 hónapos tapasztalattal rendelkező programozók ugyanúgy teljesítenek, mint a több évtizedes múltú mérnök szakemberek. A programozók újabb generációját megvédték a programozás valóságától a „magas szintű” objektum orientált nyelvek, meg a "barátságos" operációs rendszerek. Sokan közülük nem is láttak még ipari számítógépet, beágyazott rendszereket, vagy legalább egy "élő" mikroprocesszort. Manapság szinte egyikük sem tud hexában számolni és nem ismerik a gépi kódú programozás assembler nyelvét. Ez a programozási nyelvek között a legalsó szinten található, ami nem az egyszerűségére utal, hanem éppen ellenkezőleg, a fő nehézsége. Ennél a nyelvnél tisztában kell lenni a kontroller legutolsó részletével is, az utasítás-végrehajtástól kezdve a regisztereken át a perifériákig. Babra munka, de megvan az a nagy előnye, hogy így lehet megírni a legrövidebb, leggyorsabban futó, leghatékonyabb programokat, segítségével nem csak a hardvert, de saját képességeinket, kreativitásunkat is a legteljesebb mértékben tudjuk kihasználni. Ehhez elmélyült tudásra van szükség, amit egy átlag halandó hosszú éveken keresztül sem tud behozni felsőfokú iskolázás nélkül.
            Valaha olyan alkotások születtek tisztán assemblerben néhány kilobájtból, hogy szinte katarzisélményt jelentett csak megnézni is őket. Meg kell érteni a gépi kódolás filozófiáját.  Ez tehetséget feltételez. Művészet. Érzék kell hozzá nem tárgyi tudás. Ennek ellenére, nem az emberi gondolkodáshoz áll közelebb, hanem a “gépi gondolkodáshoz”. A bonyolultság a részletekben van, viszont a lényeget megértve a részleteket szorgalommal el lehet sajátítani tisztes mesterember szinten.  Akik ezen túllépve rendelkeznek művészi adottságokkal is, bizony nagyon kevesen vannak. Pedig számos okunk van arra, hogy a gépi kód nyelvét, az assemblert válasszuk a magas szintű programozási nyelvekkel szemben egy adott feladat megoldására.*    
Az első gépi kódú programok megjelenése után a számítástechnikusok első dolga az volt, hogy olyan programokat készítsenek, amelyek megkönnyítik a további programok írását. Olyan programozási nyelveket vezettek be, amelyekben az utasítások könnyen érthető kulcsszavak, szerkezetük az ember számára jól áttekinthető és nem kell tudni szinte semmit a hardver működéséről. Ezzel elérték, hogy a kreativitás és a kimagasló intelligencia egyáltalán nem meghatározó abban, hogy valaki programozóvá képezze magát. Csakhogy ennek ára van. A folyamat komplexitását el kellett rejteni valamilyen absztrakciós szoftverréteg mögé azoknak, akik nem akarnak, vagy nem tudnak elmélyedni a gép közeli programozásban.
Azok a programozási feladatok, amelyek magas szintű nyelvekkel könnyen megoldhatók, assembler nyelven sokkal több utasítást igényelnek, ezáltal idő és munkaigényesebbek, nehezebben áttekinthetőek és ráadásul csak egy adott típusú processzoron fognak futni. Tanácsos tehát a nagyobb bonyolultságú és számítási igényű programokat magas szintű nyelven írni? Igen, azokra a problémákra, amik megoldhatók ezen a szinten. A többiekre nem!
Amit nem lehet Pythonban megírni, azt C++-ban meg lehet. Amit nem lehet C++-ban megírni, azt Assemblerben meg lehet. Amit nem lehet Assemblerben megírni, azt nem lehet megírni!
Előbb-utóbb mindent számítástechnika fog működtetni, ehhez pedig jó programozók és jó fejlesztő technológiák kellenek. De észre kell venni, hogy a társadalmunk inkább szoftverkódolókat termel, a nemzetgazdaságunknak viszont fejlesztő mérnök informatikusokra lenne szüksége. Ehelyett csak a humán erőforrások kihelyezését ösztönözzük, nem hozunk létre elég kutató-fejlesztői munkahelyet, a multik sem kreálnak hozzáadott értéket nálunk, csak elszívják a potenciális szakembereinket a magasabb fizetés reményével. Nyers-agyat exportálunk. A piacról ugyanis ma már nem a zsenik, még csak nem is a mérnök informatikusok hiányoznak. Lényegében kódolók kellenek, amiből hiány van és amiből meg lehet élni, és akiknek ehhez gyakran még egyetemi diplomára sincs szükségük. De a legtöbb kódolónak csak homályos elképzelése van, hogy egy-egy magas szintű nyelven kiadott utasítás kb. mit okoz a gépben, amikor végrehajtódik. Mert ilyenkor nem a gép szabályait követjük, hanem egy értelmező és egy fordító program szabályait, amelyek aztán a gép számára is értelmezhető formára alakítják a kódot, számunkra nem igazán átlátható módon.
Nem engedhetjük, hogy elveszítsük az alapvető kapcsolatot a géppel. Aki tudja a gépi kódolást, az tudja az alapokat. Ha tudja az alapokat akkor bármit megtehet, mert ura a rendszernek.  Lehet, hogy egy gépi program bonyolult, de akkor is csak véges számú gépi utasítás. Ha lemondunk az assemblerről, akkor önként adjuk át a hatalmat, egy kiváltságos kisebbségnek, akik a Gauss görbe 1%-os abszcisszánál koptatják a statisztikát. Vagy akár a mesterséges intelligenciának. Amelyik mindig az optimális megoldást választja. Például azt, hogy a malária remekül megszüntethető az összes emlős kiirtásával. 
______________________________________________
*  Mire jó az assembler? Pontosan tudni akarjuk, hogy mi történik program futása közben, mert mi akarjuk eldönteni, hogy mi kerüljön a kódba és mi ne. Elengedetlen nagy biztonságú, meghekkelhetetlen rendszerek tervezése. Méretre, memóriakihasználtságra akarjuk optimalizálni a kódot. Sebességre akarjuk optimalizálni a kódot. Teljesítménykritikus algoritmusok implementálása, ahol minden nanomásodperc számít. Szinkronizálásra akarjuk optimalizálni a kódot, olyan komplex vezérlőjelek generálása esetén, amelyek fázisigényesek. Meghajtóprogramok írása. Önmódosító kódok írása. Reverse engeneering. Új processzortípusra írandó meghajtó programok írása. Beágyazott rendszerek önállóan futtatható állományainak írása. Vírusok kódjának visszafejtése. Vírusirtó algoritmusok kidolgozása. Vírusok írása. Magas szintű programozási nyelvek fordítóprogramjainak írása. Kis memória méretű eszközök, mikrokontrollerek programozása. Firmver hardver-közeli részeinek megírása. Vezérlőprogramok komolyabb szintű hibajavítása. Operációs rendszerek kényesebb részeinek implementálása. Még sorolhatnám.

Megjegyzések

Megjegyzés küldése

Írd meg a véleményed: