Kezdőoldal » Számítástechnika » Programozás » C++-ban miért vannak header...

C++-ban miért vannak header fájlok, Javaban meg C#-ban miérr nincsenek?

Figyelt kérdés

2020. aug. 3. 17:15
1 2
 11/20 anonim ***** válasza:
Gondolom, mert rájöttek, hogy nincs igazi funkciójuk és csak a macera van velük. Például keress rá stackoverflow-on a headerre, látni fogod, hogy mennyi vita megy azon, hogy mit kell és mit nem kell header-be rakni... Semmi értelme az egésznek, ha egyszer lehet nélküle is élni.
2020. aug. 4. 02:29
Hasznos számodra ez a válasz?
 12/20 anonim ***** válasza:
55%
Van funkciójuk. Te is kipróbálhatod egy sima std::cout-al is már. Elsőnek csináld simán. Utana a pre comp header verzióba és duplázd meg. Sokkal gyorsabb lesz a futás. Aztán simába nézd meg hogy 2x iratsz ki és mennyi lesz a futási idő. Aztán nézd meg hogy pchval ha 2x másolod a coutot akkor mi lesz. Fele annyi. ;)
2020. aug. 4. 10:21
Hasznos számodra ez a válasz?
 13/20 A kérdező kommentje:
Tehát akkor a fordítási idő csökkentése a funkciójuk?
2020. aug. 4. 11:43
 14/20 anonim ***** válasza:
0%
Az is.
2020. aug. 4. 11:48
Hasznos számodra ez a válasz?
 15/20 anonim ***** válasza:

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");

2020. aug. 4. 20:34
Hasznos számodra ez a válasz?
 16/20 anonim ***** válasza:

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").

2020. aug. 5. 15:08
Hasznos számodra ez a válasz?
 17/20 anonim ***** válasza:
#12: Nyilván van, de ez a funkciója elveszett, hiszen az "új" nyelvekben már nincsenek header fájlok. Erről szól a kérdés.
2020. aug. 5. 15:45
Hasznos számodra ez a válasz?
 18/20 anonim ***** válasza:
Azért, mert az "új nyelvek"-nél nem az a lényeg, hogy optimalizált kódod legyen, hanem az, hogy minél gyorsabban fejlessz és az erőforrás tök mindegy. Ezért az új nyelveket például nem is használják arra, hogy szervereket optimazizáljanak. Például, ha vannak szervereid akkor azok bizonyos felhasználó számot tudnak "elbírni", ha ez megtelik akkor új szerverre van szükség és ez költség. Sokkal hatékonyabb az, ha C++-ban optimaziláod, hogy még több felhasználót bírjon el. Szóval lehet valakinek van 3 szervergépre és elbír X felhasználót, a másiknak meg van 2 szervergépe és ugyannyi felhasználót elbír. Miért? Mert szoftveresen megodlja és ezeket nem C#-al fogja megtenni, hanem C++-al. És melyik a jobb? Hát annak aki 2 szervergéppel ugyanazt elbírja, mint a másik 3-al, hiszen költséghatékonyabb.
2020. aug. 5. 15:50
Hasznos számodra ez a válasz?
 19/20 anonim ***** válasza:
Ez nem magyarázza, hogy miért tűntek el a header fájlok... Nekem továbbra is az az álláspontom, hogy azért tűntek el, mert nem volt egyértelmű a használatuk és csak a macera volt velük. Eddig tartott a kérdésre a válasz, innentől jön az, amit te leírsz, hogy mik ennek a hátrányai.
2020. aug. 5. 15:58
Hasznos számodra ez a válasz?
 20/20 anonim ***** válasza:

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.

2020. aug. 5. 16:13
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!