C++-ban miért vannak header fájlok, Javaban meg C#-ban miérr nincsenek?
printf(".text; 1:mov r5,-(sp); mov sp,r5\n");
printf(".data; %p: %o\n", cs, cval);
printf(".bss; %p: .=.+2\n", cs);
printf("L%d; 0\n.text\n", deflab);
printf("L%d:.data;L%d:", brklab, swlab);
printf("jsr pc,bswitch; l%d\n", swlab);
printf(".=.+%o\n", c);
printf("jmp\tl%d\n", lab);
printf("tst -(sp)\n");
printf("cmp -(sp),-(sp)\n");
printf("add $%o,sp\n", ts);
printf("mov\tsp,r0\nmov\tr0,-(sp)\n");
Utánanéztem a történetnek.
A gép, amire az első Unixot megírták, nem PDP-8-as, hanem egy PDP-7 volt.
Ez, hogy képben legyünk az akkori hw környezettel, egy kb. 4-500 kHz (tehát nem GHz, nem is Mhz!) órajelen meghajtott, mikroprocesszor nélküli masina volt.
A RAM 4 kiloszó (kb. 9 kbyte) volt benne. A gép maga 18 bites szóhosszal lett tervezve, csupa TTL elemekből.
Ehhez képest egy commodore 16-os (nem 64-es!) maga volt a nyers erő, az 1 Mhz-es processzorával és 16 K RAM-jával, csak hát, 1969-ben ilyen még nem volt.
Szóval, ezen a gépen kellett tevékenykedni, programot fordítani. Egy kín lehetett kivárni akár 1000 sornyi kód legenerálását és assemblálását, nem hogy egy unox oprendszerét.
A C egy adhoc, kisérleti tool volt, abból a célból, hogy az assembly-vel való fáradságos munka egyes részeit ki lehessen kerülni. Azért lett létrehozva, semmi másért. A B nyelv is egy hasonló próbálkozás volt, csak nem lett olyan sikeres.
A C azért terjedt el, mert nem programnyelv volt, hanem transpiler. Afféle high level assembly. A programozók felismerték, hogy elég az utasításokat kicserélni a saját gépük utasításkészletével és kész. Ez volt a c sikerének kulcsa.
Az előző hsz-ben ott van néhány sor, ami bizonyítja, hogy a korai C nem volt egyéb csak assembly kód generátor. Az első három sorban ott a .text a .data és a .bss szegmensek (kód, adat, verem) printje. Alább még néhány asm utasításé ("JMP", "CMP").
De megmagyarázza miért tüntek el. Azért, mert a gyors fejlesztés a lényeg és nem az, hogy optimális programot/algoritmust írj. Az a lényeg, hogy minél gyorsabban legyen meg 1-1 szoftver és működjön. Az, hogy 8GB memóriát fog enni az már teljesen mindegy.
Te is megnézheted a különbséget pl azok játékokban, amik pl nem C++-ban írodtak, hogy mekkora a gépigényük és, hogyan futnak.
Ott van mondjuk a PUBG. Egy iszonyatusan bugos, hatalmas erőforrást igénylő játék, amely még kemény vasakon is akad/akadhat... Lehet, hogy az Unreal Engine-t használták, ami ugyebár C++, de magát a játékot nem C++-ban fejlesztették.
Ellenben ott vagy mondjuk egy Battfield V-t például, amit C++-ban fejlesztettek. Sokkal összetettebb, sokkal több minden van benne, sokkal látványosabb is és kevesebb erőforrás szükséges. Tehát, ha van egy X erőforrású géped amin a PUBG akad (pedig jó a gép!), az nem fog akadni a Battlefieldben. És ez nem véletlen. Ha a BF-et is ilyen interpretált nyelvekkel írták volna meg, akkor dupla akkora erőforrás kellett volna, hogy játszani tudj.
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!