Forum » Programiranje » Prvi programski jezik (kako je deloval)?
Prvi programski jezik (kako je deloval)?
Kurzweil ::
Ko brskam po Googlu pridem seveda do številnih zadetkov kateri je bil prvi programski jezik (konceptualno je to bil Plankalkül), do seznama vseh miljon programskih jezikov... Mene pa zanima sledeče, sicer malce smešno, nekaj v smislu vprašanja, kaj je bilo prej kura ali jajce. Namreč prvi je verjetno bil nek strojni jezik, verjetno assembler s čimer je bil napisan BIOS, če imam prav, v čem je potem bil napisan assambler? Ali po kmečko, kako smo sploh prišli do tega, da je bilo možno na računalniški ekran/TV/terminal z nekim inputom vnesti prvi znak?
pegasus ::
Začni z Babbage differece engine in Ada Lovelace.
Ko predelaš desetiške sisteme, se zakoplji med elektronke in releje iz časa druge svetovne.
Potem naredi prehod na binarne sisteme.
Potem osvoji razliko med "machine language" in "assembler". Ja, assembler je že "high level" ;)
Naprej se gradi kot lego kocke.
Aja, pred vsem tem si lahko pogledaš še Antikythera mechanism. Vsaj en odličen dokumentarc je na youtubih :)
Ko predelaš desetiške sisteme, se zakoplji med elektronke in releje iz časa druge svetovne.
Potem naredi prehod na binarne sisteme.
Potem osvoji razliko med "machine language" in "assembler". Ja, assembler je že "high level" ;)
Naprej se gradi kot lego kocke.
Aja, pred vsem tem si lahko pogledaš še Antikythera mechanism. Vsaj en odličen dokumentarc je na youtubih :)
Zgodovina sprememb…
- spremenil: pegasus ()
Kurzweil ::
Hvala za tole, bom dejansko šel po tem vrstnem redu. Vseeno pa bi za trenutno pomiritev duše pasal kakšen simple odgovor, kateri je bil prvi programski jezik ali način, da je bilo možno narediti vnos na ekran in kateri je "programsk jezik, vseh programskih jezikov".
noraguta ::
Začni z Babbage differece engine in Ada Lovelace.
Ko predelaš desetiške sisteme, se zakoplji med elektronke in releje iz časa druge svetovne.
Potem naredi prehod na binarne sisteme.
Potem osvoji razliko med "machine language" in "assembler". Ja, assembler je že "high level" ;)
Naprej se gradi kot lego kocke.
Aja, pred vsem tem si lahko pogledaš še Antikythera mechanism. Vsaj en odličen dokumentarc je na youtubih :)
Kronan norec. Veno je imel prosesor pred sabo dekodirnik. Makar za morseja. Ascii ni nek napredek napram morseju. Opkode in podatki so se podajali prek tega od nekdaj. 10101 je fama. Stvad kodirnika in dekodirnika. Potem je pa že zbirnik (bolj ali manj preprost)
Pust' ot pobyedy k pobyedye vyedyot!
Jarno ::
Slej kot prej boš trčil na prevajalnike in interpreterje.
Ko so sklamfali kak računalnik, so inžinerji poskrbeli tudi za te stvari.
Fortran I je nastal že leta 1954, ko je HW bil še v zametkih.
Torej, hitro so pogruntali teorije programskih jezikov.
Ko so sklamfali kak računalnik, so inžinerji poskrbeli tudi za te stvari.
Fortran I je nastal že leta 1954, ko je HW bil še v zametkih.
Torej, hitro so pogruntali teorije programskih jezikov.
A. Smith ::
Ko brskam po Googlu pridem seveda do številnih zadetkov kateri je bil prvi programski jezik (konceptualno je to bil Plankalkül), do seznama vseh miljon programskih jezikov... Mene pa zanima sledeče, sicer malce smešno, nekaj v smislu vprašanja, kaj je bilo prej kura ali jajce. Namreč prvi je verjetno bil nek strojni jezik, verjetno assembler s čimer je bil napisan BIOS, če imam prav, v čem je potem bil napisan assambler? Ali po kmečko, kako smo sploh prišli do tega, da je bilo možno na računalniški ekran/TV/terminal z nekim inputom vnesti prvi znak?
Manjka ti samo majhen košček do celotne slike.
Zveza med assemblerjem in strojno kodo. Assembler JE strojna koda!
Procesor je hardwired, da če dobi zaporedje ničel in enk, naredi x. Ničle in enke krajše zapišemo v hexu, ki je strojna koda.
No, ukazi v strojni hex kodi imajo svoja imena tudi zapisana v črkah. Pri zastarelemu procesorju MC6800 je recimo hex 86 v resnici LDAA s takojšnjim naslavljanjem. Prevodi med assemblerjem in strojno kodo so navedeni v datasheetih, npr. stran 14 tukaj: klik
Na naslednji sliki imaš levo strojno kodo, desno pa assembler, ki pravzaprav ni dosti več, kot strojna koda, zapisana s črkami, da jo lažje prebavimo:
"Be professional, be polite,
but have a plan to kill everyone you meet".
- General James Mattis
but have a plan to kill everyone you meet".
- General James Mattis
stapler rump ::
Hvala za tole, bom dejansko šel po tem vrstnem redu. Vseeno pa bi za trenutno pomiritev duše pasal kakšen simple odgovor, kateri je bil prvi programski jezik ali način, da je bilo možno narediti vnos na ekran in kateri je "programsk jezik, vseh programskih jezikov".
Ker nihče dejansko ni odgovoril na čisto tehtno vprašanje:
Tako kot si napisal, greš lahko po lestvici kompleksnosti navzdol. Na primer, Python skriptni jezik se izvaja na interpreterju, ki je napisan v Cju. C prevajalnik prevede C program v zbirni jezik (assembly). Zbirnik (assembler) nato iz njega naredi strojno kodo. Strojna koda pa je "jezik", ki ga izvaja procesor - se pravi elektronska vezja in tako naprej. Po tej logiki je prvi programski jezik, po katerem sprašuješ, strojna koda. Za pisanje nje ne rabiš nobenega orodja. Zadošča dokumentacija procesorja, za katerega želiš napisati program, svinčnik in veliko papirja.
Drugo vprašanje pa je, kako nato tvoj program s papirja prenesti v pomnilnik računalnika, če je ta brez osnovnega operacijskega sistema ali BIOSa, ki bi ti omogočal vnos preko tipkovnice in zaslona. Danes za kaj takega običajno potrebuješ drug računalnik in posebno opremo. Včasih, ko je bilo tako početje bolj pogosto ker pač ni bilo priročno pritovoriti v bližino druge omare, pa so računalniki to omogočali že v osnovi. Na primer, precej znan računalnik PDP-8 iz 60ih let, je imel na prednji plošči vrsto stikal, preko katerih si lahko ročno vnesel program v binarni obliki. Pri drugih računalnikih si program naluknjal na kartice, mehanski čitalnik pa je vnesel tvoj program iz kartic direktno v pomnilnik.
Mavrik ::
Jap, in na prvih računalnikih si nakucal direktno CPU ukaze v številkah (opcode + operandi) na vgrajeno tipkovnico (Tipkovnica na PDP8), luknjani trak, luknjane kartice ipd. Pri zagonu je tako bralnik traku pobral ukaz s papirja, dal številko na vodilo, procesor je pa to izvedel in potem stopil en korak dalje, izvedel naslednji ukaz ipd.
Pač nekako najnižji nivoju zgledajo ukazi kot številke, večinoma imajo standardni format opcode (tip ukaza) + operandi. Recimo na ARMv5 ti eden od ukazov "seštej" (ukazi so 32-bitni) zgleda kot
0000 00 0 (dodatne zastavice) 0000 (opcode - 0000 je "ADD" oz seštej) 0 0001 (prvi operand - register 1) 0011 (cilj - register 3) 0010 (drugi operand register 2).
Torej tale številka na podatkovnem vodilu bi pomenila "seštej številki v r1 in r2, ter ju porini v r3". Na vodilu je to predstavljeno kot pač primerno "prižgane/ugasnjene" podatkovne linije. Take sekvence številk so ljudje pač najprej pisali na roke na trak / tipkovnico, kasneje je pa nekdo napisal zbirnik, ki je preproste besede prevedel v te številke (namen zbirnika je bil predvsem da naredi tako programiranje bolj berljivo) in jih natisnil na trak. Potem je nekdo pogruntal da lahko poleg preprostega prevajanja "ADD" v "0000" naredi še kaj več in rodili so se programski jeziki :)
Pač nekako najnižji nivoju zgledajo ukazi kot številke, večinoma imajo standardni format opcode (tip ukaza) + operandi. Recimo na ARMv5 ti eden od ukazov "seštej" (ukazi so 32-bitni) zgleda kot
0000 00 0 (dodatne zastavice) 0000 (opcode - 0000 je "ADD" oz seštej) 0 0001 (prvi operand - register 1) 0011 (cilj - register 3) 0010 (drugi operand register 2).
Torej tale številka na podatkovnem vodilu bi pomenila "seštej številki v r1 in r2, ter ju porini v r3". Na vodilu je to predstavljeno kot pač primerno "prižgane/ugasnjene" podatkovne linije. Take sekvence številk so ljudje pač najprej pisali na roke na trak / tipkovnico, kasneje je pa nekdo napisal zbirnik, ki je preproste besede prevedel v te številke (namen zbirnika je bil predvsem da naredi tako programiranje bolj berljivo) in jih natisnil na trak. Potem je nekdo pogruntal da lahko poleg preprostega prevajanja "ADD" v "0000" naredi še kaj več in rodili so se programski jeziki :)
The truth is rarely pure and never simple.
Zgodovina sprememb…
- spremenil: Mavrik ()
pegasus ::
Naj na tem mestu omenim http://visual6502.org , kjer lahko vidite, kaj se dogaja v procesorju med izvajanjem ukazov.
srus ::
Nihče zgoraj ni omenil mikrokode - nivo med zbirnikom in MO.
Zgodovina sprememb…
- spremenil: srus ()
Mavrik ::
Nihče zgoraj ni omenil mikrokode - nivo med zbirnikom in MO.
Ker za originalno vprašanje ni bila pomembna. Avtor namreč ni spraševal o "nivojih kode" :)
The truth is rarely pure and never simple.
Zgodovina sprememb…
- spremenil: Mavrik ()
dope1337 ::
Ali se smatra "stancanje matrik" kot programski jezik?
"Everybody is a genius. But if you judge a fish by its ability to climb a tree
it will live its whole life believing that it is stupid."
-Albert Einstein
it will live its whole life believing that it is stupid."
-Albert Einstein
Red_Mamba ::
[st.slika https://img.shields.io/badge/Slo-Tech-green.svg test]
Linkedin >> http://goo.gl/839Aua
Mamba's Crypto & ICO's: https://t.me/joinchat/AAAAAExTkO4P4UDy0fIZdg
Linkedin >> http://goo.gl/839Aua
Mamba's Crypto & ICO's: https://t.me/joinchat/AAAAAExTkO4P4UDy0fIZdg
vostok_1 ::
Nisem ekspert, ampak po domače povedano. Imaš tranzistorje, katere lahko vklapljaš ali izklapljaš. Z nekimi osnovnimi postavitvami tranzistorjev lahko hardversko narediš "program", ki ti bo izračunal npr. 1 + 1 = 2 (v tem primeru to ne bo sicer "1" ali "2" ampak v strojni obliki, bajtih)
Ko imaš vse fizično postavljeno, vklopiš zadevo v vtičnico in na izhodu ti bo ta hardverski program izpljunil "2".
Neke fleksibilnosti s tem nimaš nimaš.
Ampak gremo korak dlje. Namest vtičnice postaviš še en tranzistor pred vsem tem, ki bo služil kot vtičnica. S tem lahko kontroliraš kdaj hočeš zagnat program in kdaj ne.
Par tisoč korakov naprej in imaš lahko že tako kompleksno vezje, s katerim opisuješ že črke in ne samo številke. Ter seveda z njimi operiraš.
Še kak tisoči korak kasneje pa vse to povežeš na eno tipkovnico, monitor in tvoj "Enter" služi kot vklop in izklop tistega dodatnega tranzistorja we talked about. Pri tem pa ti še sliko nazaj pokaže kaj se dogaja, zato ker je delež teh tisočih novih tranzistorjev namenjen za upravljanje monitorja.
Fast forward in imaš že Win 10.
Med vsem tem pa se je seveda pojavil programski jezik, ki je omogočal fleksibilno upravljanje z danimi tranzistorji in drugimi enotami, namest da si moral ročno vklapljat vse tiste vtičnice.
Na
Hardversko-polavtomatski računalnik za osnovno matematiko.
Ko imaš vse fizično postavljeno, vklopiš zadevo v vtičnico in na izhodu ti bo ta hardverski program izpljunil "2".
Neke fleksibilnosti s tem nimaš nimaš.
Ampak gremo korak dlje. Namest vtičnice postaviš še en tranzistor pred vsem tem, ki bo služil kot vtičnica. S tem lahko kontroliraš kdaj hočeš zagnat program in kdaj ne.
Par tisoč korakov naprej in imaš lahko že tako kompleksno vezje, s katerim opisuješ že črke in ne samo številke. Ter seveda z njimi operiraš.
Še kak tisoči korak kasneje pa vse to povežeš na eno tipkovnico, monitor in tvoj "Enter" služi kot vklop in izklop tistega dodatnega tranzistorja we talked about. Pri tem pa ti še sliko nazaj pokaže kaj se dogaja, zato ker je delež teh tisočih novih tranzistorjev namenjen za upravljanje monitorja.
Fast forward in imaš že Win 10.
Med vsem tem pa se je seveda pojavil programski jezik, ki je omogočal fleksibilno upravljanje z danimi tranzistorji in drugimi enotami, namest da si moral ročno vklapljat vse tiste vtičnice.
Na
Hardversko-polavtomatski računalnik za osnovno matematiko.
lebdim ::
Knjiga Organizacija in arhitektura računalniških sistemov Dušana Kodeka bo razkrila marsikaj.
noraguta ::
Nisem ekspert, ampak po domače povedano. Imaš tranzistorje, katere lahko vklapljaš ali izklapljaš. Z nekimi osnovnimi postavitvami tranzistorjev lahko hardversko narediš "program", ki ti bo izračunal npr. 1 + 1 = 2 (v tem primeru to ne bo sicer "1" ali "2" ampak v strojni obliki, bajtih)
Ko imaš vse fizično postavljeno, vklopiš zadevo v vtičnico in na izhodu ti bo ta hardverski program izpljunil "2".
Neke fleksibilnosti s tem nimaš nimaš.
Ampak gremo korak dlje. Namest vtičnice postaviš še en tranzistor pred vsem tem, ki bo služil kot vtičnica. S tem lahko kontroliraš kdaj hočeš zagnat program in kdaj ne.
Par tisoč korakov naprej in imaš lahko že tako kompleksno vezje, s katerim opisuješ že črke in ne samo številke. Ter seveda z njimi operiraš.
Še kak tisoči korak kasneje pa vse to povežeš na eno tipkovnico, monitor in tvoj "Enter" služi kot vklop in izklop tistega dodatnega tranzistorja we talked about. Pri tem pa ti še sliko nazaj pokaže kaj se dogaja, zato ker je delež teh tisočih novih tranzistorjev namenjen za upravljanje monitorja.
Fast forward in imaš že Win 10.
Med vsem tem pa se je seveda pojavil programski jezik, ki je omogočal fleksibilno upravljanje z danimi tranzistorji in drugimi enotami, namest da si moral ročno vklapljat vse tiste vtičnice.
Na
Hardversko-polavtomatski računalnik za osnovno matematiko.
Lepo si to razložil. Končn nekdo ki se spozna na tranzistorje. Koliko tranzistorjev je pa potrebno da sešteješ 20960578 in 3000000967490563?
Pust' ot pobyedy k pobyedye vyedyot!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Kateri je vaš najljubši programski jezik?Oddelek: Programiranje | 3374 (2123) | Cervantes |
» | programiranje v zbirniku z ukazi ...Oddelek: Programiranje | 4162 (3422) | lebdim |
» | kako se začeti učit hekanja? (strani: 1 2 )Oddelek: Pomoč in nasveti | 16867 (14551) | einstein :P |
» | Program za programiranjeOddelek: Programiranje | 1258 (1049) | b4d |
» | Nekaj o programiranju (strani: 1 2 )Oddelek: Programiranje | 5648 (4788) | alesrosina |