Mi az a minimum?
Arra vagyok kiváncsi, hogy mi az a minimális utasításkészlet, vagy programnyelvi elem, amivel már lehet a Turing teljeség feltételeinek megfelelő programokat írni.
Szóval, hány kulcsszó kellene hozzá, mik lennének azok és így tovább, a változókra és azok tipusaira kiterjedően is.
Ha szerinted egy ISO és egy ANSI szabvány nem szabvány ott irtózatosan nagy tévedés van abban a fejecskében.
Nem állítottam ilyet. Szerintem az olvasás során fektess be több energiát, hogy meg is értsd az olvasottakat.
A BASIC létezett a hatvanas években. Ez tény.
Szabványosítására később került sor. Ez is tény.
Ugíyanez áll a C-re és minden más nyelvre. Soha, senki nem alkotott úgy programozási nyelvet, hogy az elkészülte után öt perccel, órával már a szabványügyi hivatalban állt volna sorban.
A szabvány ez esetben arra jó, hogy etalonul szolgáljon, egységesítésre, közös platformra, kompatibilitásra neveljen.
"Ezek szerint fogalmad sincs mitől strukturált egy nyelv."
Fentebb már leírtam, hogy mitől strukturált egy nyelv.
Ha valaki itt nagyon el van tévedve, az te vagy, aki olyasmivel jön, ami logikailag nem is értelmezhető. Pl.:
"És ebből láthatóan nagyon nem strukturált nyelv. Nagyon minimális az a lehetőség, hogy valami strukturáltság legyen a nyelvben."
Ez olyan, mintha azt írtad volna, hogy lajos bácsi csak egy kicsit halt meg.
Tizenhetesnek köszönöm a hosszú posztot.
Annyit jegyeznék meg, hogy ha ma fejlesztenék ki a programnyelveket, akkor szerintem nem is lenne más, csak float adattipus, legalábbis numerikus adattipusok esetében.
A korai byte adta magát a memóriaszervezés miatt. Na meg a nyolc bites procik elterjedése miatt is, az integer meg a ko-porcesszorok hiánya okán.
Akkoriban ko-procit emulálni még sokba került. Sok processzoridőbe. Még szorzóáramkörök sem voltak a korai cpu-kban.
Kérdező kommentje: 22 (2022.02.03. 14:11, ha esetleg időközben valami törlésre kerül)
Alapvetően igazad van. De... Nem véletlenül vezették be az int típusokat. Most nem emlékszem, hogy ez mikor történt, ennek még nem olvastam utána. De feltételezem, hogy nagyon korán bekövetkezett. Msot az ENIAC-ot felejtsük el mert az decimális gép volt és nem bináris. Amik utána jöttek voltak bináris gépek, de az elsők tuti, hogy floatok voltak. A float típussal az a baj, hogy elég gyorsan és egy rakás szám esetén kapunk kerekítési hibát. Pl. egy banki számlavezető rendszernél (és a korai nagygépek esetén ez volt az egyik leggyakoribb alkalmazás), szigorú szabályok voltak/vannak a kerekítésre. Erre volt "válasz" a fix pontos ábrázolás (ami gyakorlatilag egy int, mert int aritmetikával lehet vele számolni), amelyik esetén a kerekítés ugyanúgy történhetett mint a jogszabályban leírtak. Ugyanígy az int aritmetika sok esetben pontosabb eredményt ad (egészen addig amíg nem kell osztani), mint a float. Az intnek van létjogosultsága. Próbálj float ciklus számlálót használni, vagy float kulcsot adatbázisnál, elég hamar zöldség lesz benne.
Egy kis történelmi háttér a "korai byte" fogalomhoz:
Byte: azt írod a "a korai byte adta magát a memóriaszervezés miatt". Ez egy elég komoly (de túlságosan népszerű) tévedés /hogy mikor terjedt el, és ki terjesztette el a hazai tankönyvekben ezt a hibás nézet nem tudom, de már láttam sajnos leírva több "hivatalos" tankönyvben is, szóval ezt ne személyes sértésnek vedd, mert nem te tehetsz róla, hogy sok helyen ezt így tanítják). Gyakorlatilag a byte egy relatív új dolog. Az 1960-as évek gyakorlatilag közepéig nem fordul elő sehol a byte kifejezés (a legrégebbi forrás amiben megtaláltam ezt a szót 1963-ban jelent meg, de még nyomozok). A korai memóriák szavas szervezésüek voltak. Gyakori szóhossz volt a 36 és 48 bit. Ennek megfelelő volt a memória szervezése is (nagyon érdekes, mert nem egy gépnál láttunk olyan memóriát ahol le lehetett számolni a 48 keretet, amiben voltak az elemi tároló elemek). Valamikor a 60-as évek elején-közepén (egyenlőre nyomozom, hogy ki találta ki a 8 bites szervezést, de még nem találtam meg) jelentek meg az első olyan gépek amelykben a memória szervezés 8 bites volt, míg a gépi szó maradt több byteos (ilyenkor egy gépi ciklus során több memória művelettel töltötték be a memóriából a több byte-os szavakat). Az egyik első elterjedt gép amelyik 8 bites memóriát használt az az IBM 360 sorozat volt (1964), az általános célú regiszterei (szó) 32 bitesek, az utasítás regiszter 24 bites, a PSW regiszter 64 bit volt. A 360-as sorozatnál még volt a 64 bites dupla szó.
A korai gépek (pl. a szovjet M sorozat /ebből néhány van hazai múzeumokban, Ural-2 /szintén látható múzeumban, Razdan /ld. szegedi múzeum), PDP család, korai IBM családok /pl. 701/) inkább még oktális rendszerüek voltak (ezeknek még ún. mérnöki pultjuk volt, és azon 3-asával voltak csoportosítva a bitek, akár a nyomógomboknál, akár a visszajelző lámpáknál csak érdeksségként: [link] itt a képen jól látszik, hogy 3 bitenként be van húzva egy függöleges vonal a regiszterekben ). Egyébként ez az oktális "gondolkodás" a Unix rendszerekben máig megmaradt, nem egy helyen látzik, hogy a Unix számtalan helyen "belül" oktális jellegű. Az oktális világ nem kompatibilis a byte-os világgal. Az oktális világban 3-asával vannak csoportosítva a bitek, és a 8 sehogy nem osztható 3-al. A 8 bites rendszer terjedésével jelent meg a hexadecimális "gondolkodás" (a 8 4-el osztható).
Szintén történelem, hogy amikor terjedtek a 8 bites procik a mikroszámítógépeknél a main frame technológiában is már byteos volt a memória, de a gépi szó ennél hosszabb volt (ld. pl. IBM 370, IBM 390, DEC VAX család 32 bit. PDP 12-32 bit (ne felejtsük el a unix születése egy PDP 7-en történt az 18 bites!!! /igen 18 bit, nem véletlen lett sok minden oktális a unixban, mert a 18 3-al osztható). Ezeknél a float bent volt a prociban végig.
Az, hogy a korai (és igen elterjedt) 8 bites procik INT-ek voltak (pl. 8080, Z80, 6502 és társai) az akkor egy sajátosság volt. De már a 8086, 8088-hoz már eleve fejlesztetettek float kiegészítő procit (az általad helyen hivatkozott koproci) de már előtte is gyártottottak float ALU-t kiegészítendő a mikro procikat (pl. a Intel 8231-8232, AMD9511-9512 1977!!!). Az, hogy ezek drágák voltak az egy nem túl jó körülmény volt. De léteztek. Egyébként már a korai XT-k alapjaiban is ott volt a helyen a 8087-nek, csak be kellett tenni a helyére, ha volt valakinek rá pénze. Tehát nem volt egy "nagyon ritka dolog".
"szorzóáramkörök sem voltak a korai CPU-kban" inkább korai 8 bites mikroprocesszorokban. A CPU-kban már nagyon régen megjelentek a szorzó áramkörök, ha jól emlékszem az EDVAC-ban biztosan volt (ez volt a világ 2. számítógépe), de talán még az orosz URAL-2 is tudott szorozni. A 8086 már tudott szorozni (részben mikroprogramozottan, részben hardver támogatással, de szorzó utasítása volt, ez 1978-ban jelent meg).
Tudom ez kicsit OFF, de egy kis történelmi áttekintésre úgy gondoltam, hogy nem árt rápillantani, pont azért mert, amit a kérdező leírt túlságosan népszerű tévedések (úgy kb. 100 emberből 99 él ebben a tévedésben).
" Az oktális világ nem kompatibilis a byte-os világgal. Az oktális világban 3-asával vannak csoportosítva a bitek, és a 8 sehogy nem osztható 3-al. A 8 bites rendszer terjedésével jelent meg a hexadecimális "gondolkodás" (a 8 4-el osztható)."
Itt én foglak kijavítani téged.
Valójában a byte fogalma kettős.
A korai jelentéstartalom szerint egy byte egy bitcsoportot jelölt. Olyasmi volt, mint a gépi szó. Ez utóbbi ugye lehet akárhány bit. Na, a byte is lehetett korábban akárhány bit. Hat, nyolc, vagy akár tizenkettő, tizennégy is.
A byte mai fogalma, mi szerint egy byte nyolc bit és nem kevesebb, nem is több, a nyolc bites processzorok térhódításával rögzült, csontosodott meg.
A dolog megfejtése a CPU-k evolúciójában rejtőzik. Voltak a korai gépek, amelyek olyan feldolgozó egységeket - processzorokat - tartalmaztak, amik TTL vagy DTL logikából álltak. Némelyik tranzisztorokból, a későbbiek már inkább komplett IC-kből álltak. Az egy tokos CPU akkoriban nem is létezett.
A gépeket a mérnökök a felhasználási igényekhez tervezték, meg a pénztárcához. Ezért a jellemző a 14-36 bites szóhossz volt, de diszkrét elemekből tervezve, összehuzalozva.
Később megjelent a 4004-es, az első egytokos, még csak négy bites CPU, ami mondjuk nem sok vizet zavart, de a 8008-as már figyelemre érdemes volt. Az utána következő, a 8080-as CPU meg már bankot is robbantott, forradalmat csinált. Ezek a nyolc bites processzorok, a 8008 és a 8080, mind az intel termékei voltak. Ennek a jelentősége az, hogy az intel eredetileg memória gyártó cég volt. Nyilvánvaló, hogy a memóriákat a CPU szóhosszúságához mérték akkoriban. Gyors adatátvitel, ugye.
Ezért voltak 14, 18 bites és mindenféle más szervezésű memóriák is. A 8008-hoz és a 8080-hoz is 8 bites volt az alkalmas, így zömében azt is gyártottak. Mivel az utána következő népszerűbb CPU-k (z80, 6800, 6809, 6502) is sokáig 8 bitesek voltak, így a memóriáknál is rögzült ez a szervezés, az elnevezéssel (byte) együtt. Így lett a byte éppen nyolc bit. A másik dolog, hogy a későbbi, 16 bites processzoroknál is ésszerű volt a nyolc bites szervezésű memóriák használata, hiszen az drága volt mint a méreg, így egy nyolc bites adat nem vitt el mindjárt kétszer annyi helyet.
Erre légy szíves mutass nekem releváns, megbízható forrást (és nem az angol wiki szócikkre gondolok, mert annak utána néztünk és a feltüntett forrásaiból nem következik ennek a kijelentésnek a teljes igazsága), ahol ezt, így ebben a formában leírják:
"Valójában a byte fogalma kettős. A korai jelentéstartalom szerint egy byte egy bitcsoportot jelölt. Olyasmi volt, mint a gépi szó. Ez utóbbi ugye lehet akárhány bit. Na, a byte is lehetett korábban akárhány bit. Hat, nyolc, vagy akár tizenkettő, tizennégy is."
"A byte mai fogalma, mi szerint egy byte nyolc bit és nem kevesebb, nem is több, a nyolc bites processzorok térhódításával rögzült, csontosodott meg." Ez szintén nem igaz, mert ez már a 8 bites mikroprocesszorok megjelenése előtt bekövetkezett egy kb. 6-8 évvel. Az 1970-es évek legelejére már biztosan egységes volt a használata. 1964-től, ahogy írtam az IBM 360 gépcsaláddal már egyértelműen köethető, hogy a byte 8 bit lett.
Legalább utána olvastál, és elismered, hogy a mikroprocesszoron kívül van még más technika is...
"Voltak a korai gépek, amelyek olyan feldolgozó egységeket - processzorokat - tartalmaztak, amik TTL vagy DTL logikából álltak. Némelyik tranzisztorokból, a későbbiek már inkább komplett IC-kből álltak. Az egy tokos CPU akkoriban nem is létezett." És az előtte levő legalább 10 év? És hol írtam ezzel ellentétes dolgot? Kezdődik ott, hogy a szavas szervezésű memória legkésőbb 1935-ben megjelent. (még nem is igazán voltak meg a mai értelemben vett számítógépek), de ezt már használták (ld. Zuse Z3 kódjelű gépe). Utána voltak mindenféle "torzszülőtt" memóriák (ezek sorosak voltak még ld. pl. EDVAC és utána következő gépek) itt meg bőven még elektroncső-dióda-relé felépítésű gépek voltak. Maga a tranzisztor eleve csak 1948-ban jelent meg, amikor már bőven használtak számítógépeket. Az integrált áramkör 1958(!)-ban jelent meg (ekkora már Magyarországon is volt számítógép).
Azért a "korai" szót azért erősen megkérdőjelezem, melyik időszak a "korai gépek"? Számomra az 1980-as évek második fele, 1990-es évek elejen nagyon nem a korai időszak, mert 1992-ben még biztosan készültek számítógépek nem mikroprocosszorral (ld. pl. IBM 3090, 4381 amiről nem mondhatjuk, hogy elhanyagolható gépek és korai gépek voltak, és rengeteg készült belőlük).
Le kéne szakadni végre a mikrogépek világáról. És kicsit bővebben körbe nézni a világban. De ez nagyon off-topic.
"Később megjelent a 4004-es, az első egytokos, még csak négy bites CPU, ami mondjuk nem sok vizet zavart, " Háát ez egy nagyon erős kijelentés. Az, hogy megmutatta, hogy lehet mikroprocesszort építeni, és hogyan azért az nem "jelentéktelen".
"A másik dolog, hogy a későbbi, 16 bites processzoroknál is ésszerű volt a nyolc bites szervezésű memóriák használata, hiszen az drága volt mint a méreg, így egy nyolc bites adat nem vitt el mindjárt kétszer annyi helyet." Ez megint félig igaz... 1964-ben megjelent IBM 360 gépnél is már ezt alkalmazták, nagyjából azért amit leírtál, de egy kb. 12 évvel korábban (1976-ban jelent meg az első 16 bites mikroprocesszor). A 70-es évek elejétől minden nagy gyártó kezdett átállni a byteos szervezésű memóriákra. És feltételezhető, hogy ez hozta a 8 bites világot is és nem fordítva. A 8bites világ egy jól kezelhető dolog, egy ASCII karakter a maga 7 bitjével (tudom... tudom 8 bitnek tanítják, de ebből az S az általad ismeretlen szabvány /standard/ rövidítése, nézd meg a korabeli ASCII szabványt, 7 bites). Az akkor fejlődő internet már 8 bites világ (octet már az igen korai RFC-kben olvasható, ami egy 8 bites szót jelent, és a mai napig ezt használja a legtöbb RFC). Kézenfekvő volt a 8 bites mikroprocik fejlesztése, hiába lettek volna már akkor praktikusabbak a 16-vagy méghosszabb szóhosszúságú procik. A 8 bit egy relatív olcsó, egyszereűen gyártható technológiát adott, nagyjából arra a célra amire akkor kellett megfelelt. Nem véletlenül terjedtek a mikrogépek körében kb. fénysebességgel a 8 bites gépek. Ehhez még kellett a DRAM technológia árának drasztikus csökkenése is (70-es évek közepére ez is bekövetkezett).
"Mivel az utána következő népszerűbb CPU-k (z80, 6800, 6809, 6502) is sokáig 8 bitesek voltak" A felsorolt mikroprocesszorok a mai napig 8 bitesek, nem csak voltak mind a mai napig 8 bites mikroprocesszorok. Én még nem láttam 16 bites 6502-t. De ha igen mutass egyet.
"mert annak utána néztünk és a feltüntett forrásaiból nem következik ennek a kijelentésnek a teljes igazsága"
hogy neked miből mi következik, az engem hidegen hagy. A dolog úgy szokott történni, hogy a szakmának szüksége van terminológiára, hogy ne kelljen mindent körbe magyarázni, hogy lehessen a kollégákkal kommunikálni. Így megszületnek a fogalmak, valamilyen jelentéstartalommal, majd ezek módosulnak, vagy úgy maradnak. Ez történt itt is. Korábban nem létezett a bitek csoportját alkotó olyan fogalom, hogy 'byte', vagy 'nibble', így aztán valaki kitalálta, hogy legyen, és lett.
Az meg, hogy 8 bites szervezésű memóriák voltak a 8 bites processzorok előtt is, szintén nem túl eget rengető megállapítás, azt meg már végképp hülyeség még feltételezni is, hogy 8 bites memóriákat csakis és kizárólag a 8 bites processzorok megjelenése után, vagy azzal egyidőben gyártottak volna.
A nyolc bites memóriák a nyolc bites processzorok megjelenése után váltak tömegesen elterjedtté.
Korábban nem építettek nyolc bites szóhosszúságú processzorokat, mert azok teljesítményét lazán felülmúlták a 12, 14, 18, 24, 36 bitesek. Mit is kezdtek volna egy olyan processzorral, aminek a szóhossza mindössze nyolc bit? Az első egytokos CPU-kat is csak a mai mikrokontrollerekkel egyező nagyságrendű projektekbe, vezérlés, stb. szánták és nem univerzális számítógépekbe.
"Legalább utána olvastál, és elismered"
Na, addig ne vegyél levegőt. Nem kellett utána olvasnom. Amit tudok arról a korszakról, az számomra bőven elég, pláne, hogy meddő, használhatatlan ismeret, amit senki nem kiván máson számon kérni, feltéve ha normális. PLáne nem ismerek el semmit. Elég hülyén tudsz fogalmazni.
"És az előtte levő legalább 10 év? "
Én, - de mások is -, a számítástechnika korszakait úgy tagolják, ahogy nekik jólesik. Van a II. VH előtti korszak, van az utána következő, amit a 8080-as CPU megjelenése és elterjedése zár le.
Kezdetben az emberek nem akartak mást, csak számítógépet építeni, hogy a számítási műveleteket gyorsabbá, pontosabbá tegyék. Ekkor az egyik így, a másik úgy épített gépet. Az lassan esett le a még kialakulóban lévő, egymástól nem ritkán elszigetelten tevékenykedő és fejlődő szakmának, hogy standard-eket kéne kidolgozni. Ezt ki korábban, ki meg csak később ismerte fel. A kettes számrendszer előnyeire, a Neumann féle definíció követésére sem egyszerre állt rá mindenki. Addig meg az volt, amit saját maguk kisütöttek és alkalmaztak.
"Kezdődik ott, hogy a szavas szervezésű memória legkésőbb 1935-ben megjelent."
Ez mondjuk nem meglepő. Ki az a hülye, aki akkoriban bonyolítani akarta az életét, gépek konstruktőreként?
"mert 1992-ben még biztosan készültek számítógépek nem mikroprocosszorral "
Lehet, hogy így van, de ezt ki nem sz@rja le? Az, hogy eladott az IBM valahány darab nagyobb teljesítményű gépet méregáron néhány hülye nagyvállalatnak, engem nem érdekel és ez az iparra sem gyakorolt semmiféle hatást. Akkoriban IBM kompatibilis PC-ből naponta adtak el félmillió darabokat.
A PDP-8 egy nagyon sikeres kisgép volt. 1979-re mégis bebukott, mert nem volt, aki azt a teljesítményt megfizesse.
"nézd meg a korabeli ASCII szabványt, 7 bites"
Dehogy 7 bites. Az ASCII jelkészlete hét bites. Maga az ASCII áll egy alsó és egy felső karaktertáblából. Az alsó kötött, azaz minden számítógépen ugyanaz, a felső viszont szabadon definiálható. Na. Látod? Tanultál valami hasznosat.
"Nem véletlenül terjedtek a mikrogépek körében kb. fénysebességgel a 8 bites gépek."
Mi van???
"A felsorolt mikroprocesszorok a mai napig 8 bitesek"
Nem mondod? Ez tényleg igaz? És a 8088-as, a 8086-os, vagy a 286-os is?
Csak azért kérdezem, mert ezek is elég népszerűek voltak.
A Subrutin hívásának lehetősége /ez a GoSUB/ azt takarja, hogy eleve strukturált a nyelv, hiszen létezik - de legalábbis létezhet - szubrutinja.
A goto nem takarja ugyanezt, az csak a vezérlést képes átadni.
Remélem megértetted, tudatlan sutyerák.
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!