C++ mi értelme a többféle matematikai változónak?
Short/ long int, double stb
Ezeket sima int/floattal mind lehet helyettesíteni, nem?
Régen a számítástechnika őskorában, amikor az első egy tokba integrált processzorok megjelentek, akkor ez meghatározott egy rakás dolgot. Ez a rakás dolog egyebek mellett a memória címzése, bitszélessége volt, na meg ezzel párhuzamosan a változók tipusa, mérete is. Az első használható processzor az intel 4004 volt. Ehhez (is) gyártottak 4 és 8 bit szélességű memória IC-ket. Két ilyen már jó volt a későbbi nyolc illetve 16 bites processzorokhoz is. A kettő és annak hatványai, mindig is alap dolog volt a digitális világban.
A későbbi időkben a visszafelé kompatibilitás és a célszerűség miatt is, meg kellett tartani a bájtot, a wordot és a dupla wordot is. Ezek a fogalmak a nyolc bites korszakban már kikristályosodtak, a bájt lett 8, a word 16, a duplaszó (double word) 32 bit.
Korábban ugyanis a bájt lehetett öt bit is, de hat, hét, nyolc vagy kilenc is. A gépi szó (tehát a word) meg annyi, amilyenre a gépet építették, de elég ritkán lett 16 bit. Jobbára 14, 18 bit volt, ha éppen nem 20, 24, 32 vagy 36.
A felvetésed alapos, jogos, a mai szemlélettel megitélve, de azt is érdemes figyelembe venni, hogy ma már hatalmas adattömbökkel dolgoznak és ha ezek mondjuk éppen bájtos, azaz nyolc bites értékek halmazai, akkor erről 64 bitre váltani iszonyú pazarlással (8x) járna.
"De talán ez nem felelt meg, ezért létrejött a többi."
De, megfelelt az, csak a kor idővel meghaladta azt az állapotot, amikor még megfelelt. 1975-ben, az Altair és IMSAI idejében még az volt a célszerű, később persze más lett.
A dolog eredete az volt, hogy négy kilobájtban el kellett férnie a BASIC interpreterének, a soreditornak és a futtatandó programnak. Ez meg nem ment másképp, mert már a BASIC is kilógott volna a 4k-ból, ami (mármint a 4k-s memória modul) akkoriban még közel annyiba került, mint maga a gép. Egy-egy program változóinak száma pedig amúgy is huszonhatban volt maximálva (A..Z) név szerint.
Később lehetett a 8k BASIC-ben 26 * 26 azaz elvileg 676 változó. Név szerint AA..AZ. Persze ezt sem használta ki senki.
Első körben vett/rendelt egy ilyen gépet az érdeklődő, amiben 256 bájt memória volt. Ekkor hamar rájött, hogy ezzel nem sokat ér, így vásárolni kényszerült még valamennyi memóriát. A 4 kilobájtos érte meg a legjobban, mert ha ezt kért, akkor a BASIC-et mellé már árkedvezménnyel kaphatta meg.
Így, a gép eredeti 256 bájt RAM-jával és a 4 x 1024 bájt utólag vásárolt (össz.: 4352 bájt) memóriából még maradt 790 bájt szabad terület, amit megtölthetett a maga által írt programmal. Keserves időszak lehetett ez. :)
A változók tipusainak megválasztásánál vagy integer vagy float (real) lehetett. A kettő együtt nem fért volna bele a 4k RAM-ba. Mármint a kétféle tipusra kifejlesztett BASIC nem fért volna bele.
Mivel a törtekkel való munka mindennapos, alapvető igény is ez, hogy törtekkel lehessen műveletet végezni, így azt válaszották az integer helyett.
Azt meg kinek-kinek a képzeletére bízom, hogy miféle programokat lehetett írni max. 790 bájt hosszon. :))
"Név szerint AA..AZ. "
Jav.: Név szerint AA..ZZ.
AA, AB, AC, AD, AE .... BA, BC, BD, BE .... ZA, ZB, ZC, ZD .... ZX, ZY, ZZ.
Ha nem kis programokat csinálnál, tudnád, hogy ha kis értékeket használsz, "kis" változót használsz, ha nagyot, "nagy" változót.
Így amikor hatalmas táblázataid vannak, amiben gyorsan kell számolgatni, igenis számít, hogy 2, vagy 16 GB mondjuk egy tömb.
De ez kisebben is igaz. A te programod memóriaigénye 500 MB lesz, mig azé, aki ért hozzá, ennek a töredéke.
És amikor ezekben pakolgatod a dolgokat, kiderül, hogy sebességben is többszörös eltérés van.
Nem sértésnek mondom, hanem gondolkodónak: a hozzád hasonló programozók csinálták biztos a monitorok drivereit... CD-re. :)
"És amikor ezekben pakolgatod a dolgokat, kiderül, hogy sebességben is többszörös eltérés van."
Sebesség éppen annak a módnak kedvezne, amire Ő céloz.
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!