Az igazi programozók nem használják a PASCAL-ot
A programozók ma elosztott alkalmazásokat és mesterséges neurális hálózatokat építenek. Funkcionális reaktív programozást, nyílt forráskódú webkereteket és szerver nélküli környezeteket használnak. Az impostor szindróma azonban valóságos, és a programozók még mindig kritizálják egymást, hogy nem „valódi programozók”.
Évekig dolgoztam docensként a Számítástörténeti Múzeumban. Az „igazi programozó” trópusa a szoftver kezdete óta létezik. És egy történettel be tudom bizonyítani.
A történet egy Ed Post által írt 1983-as levéllel kezdődik: A valódi programozók nem használják a PASCAL-t. A levelet a Datamation folyóiratban tették közzé, és a program „macho” oldalát taglalta. Olyanokra volt szükség, akik a felsőbb szintű nyelvhasználókat becsmérlik, nem pedig „igazi programozóként”.
A Mel története online válasz erre a levélre. Ed Nather 1983. május 21-én tette fel a Usenetre.
Mel és Ed egy írógép-társaság munkatársai voltak, amely számítógépek építésével ágazott ki. Kitörő sikerük az LGP-30 volt: dobmemória számítógép Flexowriter billentyűzettel és papírszalag olvasóval. (A cikk fejlécképe egy LGP-30 műszerfala.) Mel-t arra bízták, hogy írja át az utód számítógép népszerű programját, az RPC-4000-et.
Kikötő? Az mit jelent?Miután Mel elhagyta a céget, Ed feladata volt, hogy írja át ennek a programnak egy részét. A történetben egy végtelen hurkot fedez fel a kódban, amely valahogy nem akadályozza a program működését:
Talán a legnagyobb megdöbbenésem az volt, amikor egy ártatlan hurkot találtam, amelyben nem volt teszt.Nincs teszt. Egyik sem.
A józan ész szerint zárt huroknak kell lennie, ahol a program örökké, végtelenül körözni fog.
A programvezérlés azonban átment rajta, és biztonságosan kijött a másik oldalon.
Ed felfedezte, hogy a zárt hurok túlcsordulást okoz, ami átírta az utasítás kódot. A túlcsordulás eredménye egy ugrási utasítás volt, amely a program vezérlését egy másik memóriahelyre helyezte át.
Nagyszerű történet. De megnézi?
Törvényszéki kódelemzés: Megnézi a történetet?
Első lépésként keressük a gép műszaki adatait, amelyre a programot írtuk. Míg a történet széles körben említi az LGP-30-at, a program valójában RPC-4000-en futott. (Ne feledje, hogy újra kellett írni ehhez az új géphez.)
Mindkét gép dob memóriát használt a program tárolásához. (Érdekes tény: a modern merevlemez durva megfelelője dobmemória, papírszalag, lyukasztókártya vagy mágnesszalag volt!) Az elektromágneses fejek egyetlen sora olvasta / írta az adatokat, miközben a dob állandó sebességgel pörgött alattuk. Itt van egy vizuális referencia:

Az adatokat a dob különféle szektoraiból és pályáiból tárolták és lehívták. Az adatok formátumáról többet megtudhatunk az RPC-4000 programozási kézikönyvben, amelyet az archive.org online szkennelt és megőrzött.
A kézikönyv 20. oldalán a következő adatszót ábrázoljuk:

A parancsszó a következőre bontható:
- 5 bit a parancshoz
- 13 bit az operandus pálya / szektor helyére
- 13 bit a következő parancs címének sávjához / szektorához
A 31. bit az indexcímke, amely beállítva aktiválta az indexregisztert:
[Az index regiszter] lehetővé tette a programozó számára, hogy olyan programhurkot írjon, amely indexelt utasítást használt belül; minden alkalommal az index regiszterben szereplő szám hozzá lett adva az utasítás címéhez, így az a sorozat következő nullapontjára vonatkozik.A történet említi, hogy a „index kicsit” jelentése „ bit feküdt a cím és a műveleti kódot az utasítás szó .” Mégis, a fenti ábra azt mutatja, hogy az indexcímke bit valójában a 31. biten van, túl a parancson és a címeken. Személy szerint ezt a szerző téves emlékezésére szántam a kód áttekintése és a történet felvétele közötti években.
Szerencsére ez nem befolyásolja a történet túlcsordulását. Mivel az oktatás szót húzzák be a memóriába, és növelve az index kicsit még mindig be kell állítani a annak érdekében, hogy a növekmény túlcsordulás a Következő cím .
A ciklusban az utasítás szavainak újrateremtéséhez többet kell tudnunk a program működéséről. Íme egy idézet a történet kritikus részéből:
Az adatokat, amelyeken dolgozott, a memória teteje közelében találta -a legnagyobb helyeket, amelyekre az utasítások vonatkozhatnak -
így az utolsó nullpont kezelése után az utasítás címének növelésével túlcsordulhat.
A hordozás hozzáadna egyet a műveleti kódhoz, és az utasításkészletben a következőre változtatná: ugrási utasítás.
Valóban, a következő program utasítás a nulla címhelyen volt, és a program boldogan haladt tovább.
Hipotetikus megvalósítás: „Mutasd meg nekem a biteket!”
Itt van egy lehetséges utasítás, amely lehet a történetben hivatkozott ugrási utasítás :

Láthatjuk, hogy a 10101 parancsbitek . Ha az Ágazatvezérlés ki van kapcsolva, „a következő utasítás a Következő cím mezőben megadott.” Tehát az egyik hipotetikus helyzet az lenne, hogy a túlcsordulás után a regiszter (csövek segítségével jelöli a bitmezők közötti elválasztásokat):
10111 | 0000000 | 0000000 | 0
A regiszter a növekedést és a túlcsordulást megelőzően extrapolálta a következőket:
10110 | 1111111 | 1111111 | 1
A megvalósítás átdolgozásának egyik érdekes mellékhatása, hogy a használt utasítás nem igazán számít. Az RPC-4000 minden utasítása tartalmazza a következő utasítás címét. Az indexbit túlcsordulása a következő cím mezőbe ugrást eredményez az adott címre, függetlenül a parancsbitektől.
Epilógus

Mel Kaye (a képen álló, jobb szélső) folytatta a munkát, és végül nyugdíjba vonult. Egy Anthony Cuozzo nevű rajongó 2014-ben közzétette, hogy megpróbált kapcsolatba lépni Melmel:
Végül sikerült kapcsolatba kerülnöm Melmel, de sajnos elrettentem. Ez egy másik nap története…: - / (forrás)Mel magánéletének tiszteletben tartása miatt nem teszek közzé semmilyen személyes információt, és ragaszkodom a programhoz és a történethez. Ha bárki tudja, hogy Mel mit érez az internetes hírnevével kapcsolatban, szívesen hallanék rólad.
Nem tartottam a kapcsolatot Mel-kel, így nem tudom, engedett-e valaha a változások áradatának, amely a régóta eltelt napok óta áthatja a programozási technikákat. Szeretem azt hinni, hogy nem. - Ed NatherTovábbi források:
- A Wikipedia oldala Mel történetéről
- Mel kézikönyve az RPC-4000 blackjack játékhoz
- Az igazság soha nem áll útjában Jan Howard Brunvand jó történetének
Dave fejlesztői kapcsolatokat működtet az IBM-nél. Valamilyen oknál fogva az IBM nem rendelkezik SDK-val az RPC-4000-hez.