Hogyan készítették el az első programozási nyelvet?
Annak idején az első programok gépi kódban, tehát közvetlenül a géphez "szólóan" készültek. Volt egy mérnöki pult amin keresztül be lehetett vinni az utasításokat a gépbe, valamint a lyukszalag. Ez 8 bites volt értelemszerüen. Ezzel megoldották a kezdetleges adattárolást. Utána jött a mágnesszalag stb.....
Az első "számítógépeknél" nem volt még monitor.
Azt, hogy hogyan lehet a képernyőre kiíratni akármit is az nem kimondottan programozási "dolog". Meg kellett oldani, hogy a "számítógép" által küldött üzenetek egy monitoron jelenjenek meg. Ehhez kellett egy megfelelő hardwert készíteni ami a digitális jelekből videó jelet generál megfelelő formátumban.
Legyen az akármilyen programozási, nyelv fordítás után gépi kódban ad utasításokat a processzornak.
Regiszter, akkumlátor, megszakítás, memóriacím stb... mindnek van egy gép által értelmezhető formája.
Tehát az első nyelv úgy készült, hogya "bácsi" szépen gépi kódban bepötyögte a fordítóhoz szükséges kódot.
Ha megnézed az assembly nyelvet láthatod, hogy nem is olyan nagy dolog, így utólag :)
Hát ez részben egyszerű részben bonyolult...
Több fajta formális nyelv is létezik, mint a Turing Gép, Determinisztikus automaták, Non-determinisztikus automaták, Generatív nyelvek... Gondolom a mai általános RAM gép elvére gondolsz.
A RAM gép biztosan tudod úgy van megvalósítva, hogy 1 és 0 az ábécéje. Ezek a processzorban helyezkednek el és generálódnak parancsok által, innen lehet mozgatni regiszterből regiszterbe, regiszterből memóriába, módosítani értéküket pl: összeadni, kivonni... Ezek a műveletek a processzorban áramkör szinten, vagy mikro programozott szinten vannak megvalósítva, ezek adottak, CISC és RISC típusú processzorok.
Nos a parancsokat az oszcillátor ritmizálja mikor azt mondják 3ghz-es a proci akkor ilyen sebességgel végez el egy műveletet (ez azért nem pont így van, mert kicsit próbálnak csalni vele a pipeline-al, io-processzorral, GPU-val), de a lényeg, hogy egy ilyen utasítás operátor operandus lista formában léteznek, és a processzor tudja, hogy melyik regiszterhez kell nyúlni. Valami ilyesmi 8 bit-en:
1011011110011011 ebből az ember sok idegeskedés után vesz ki valamit ezért először átváltják 16-os számrendszerbe: B79B így azért már olvashatóbb. De felmerült az ötlet, hogy ilyen módon lehetne írni egy nagyon egyszerű programot ahol a B7 ami mondjuk a szorzás azt keljen beírni MUL a programunk meg fordítsa át B7-re, majd 10110111-re, tehát az eredmény:
MUL 9B -lett, mennyivel egyszerűbb nem? ez tudják a programozók, hogy a MUL szorozza az egyik regiszter tartalmát 9B-vel, majd az egyik regiszterben megjelenik az eredmény. Ezt úgy nevezték el, hogy mnemonic. A következő lépésként még ugyan ezen az elven csináltak subrutin hívást, címkét, amely memóriacímre mutat... és létrejött az Assembly. Innentől kezdve már sokkal egyszerűbb volt, írtak egy két oldalas Assembly programot ami a kiíratásért felel, és a fordító tudja, hogy az a 2 oldalnyi kódot kell a fordítónak behelyettesíteni, és a programozónak elég volt begépelni, hogy print(""); ... létrejött a C, Pascal...
Na valahogy így kell elképzelni, de csak úgy vázlatosan írtam le, és még így is sok lett.
Charles Babbage gépe egyfajta assemblerrel működött volna, ha megépül. Ada Byron írta hozzá a programokat. Nem láttam a terveket, de monitora biztos nem volt a gépnek.
Később egy német készített egy sakkozógépet, amit a Plankalkül assemblerrel programozott be.
Ők valószínűleg minden egyes utasítást közvetlenül kapcsoltak a működéshez.
A továbbiakban volt az a történet, hogy az előzőekről nem sokat tudva különféle kódokat alakítottak ki a bitekkel végzett műveletekre.
Aztán kialakították az első magas szintű programnyelveket, amelyek az 1950-es évek végétől jelentek meg. Ezek közül néhány még mindig használatban van, lásd Fortran és Lisp.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!