Kezdőoldal » Számítástechnika » Programozás » Hogyis van ez Programozásnál?

Hogyis van ez Programozásnál?

Figyelt kérdés

Arra lennék kiváncsi, hogy hogy hozták létre a programozási nyelvet.

Gondolok én most arra hogy pld van egy előre deklarált fügvényem memmcpy() a .h fájljában ez van :


_CRTIMP void* __cdecl __MINGW_NOTHROW memccpy (void*, const void*, int, size_t);


# define _CRTIMP

__cdecl --------------------------- Not found.

#define __MINGW_NOTHROW __attribute__ ((__nothrow__)).


Mindegyik csak egy makro ként van előre létrehozva,

akkor honnan tugya a program hogy azzal mit is kell csinálni?

vagy pld van a c++ ban struct, enum,class,.... .


Maga a program honnan szedi hogy mit kell vele csinálni tudom hogy be vannak ezek épitve magába a forditóba.

De abba is valahogy létre kellett hozni hogy tugya a PC mire is jo az a valami.Vagy pld a Legelső programozási nyelvet is létre kellett hozni.

Ezeket mind legelőször számitógép nyelvén hozták létre?

Struct ot is legelőször Gépi kód ként hozták létre?

De akkor a késöbiekben létre jöt utasitások azokat honnan tugya hogy mire valók.

Egy másik pld, hogy érthető legyen:


int fd;

.h file

extern ont socket (int __domai,int __type,int __protocol)__THROW;


Maga a PC honnan tugya hogy ezzel egy socketek hozzunk létre és neki ezt pont teljesitenni kell.

Értem én, hogy ott van a Socket de a PC honan tugya hogy neki is egy uj socketet kel létrehozni.

Egy szoval nem látok a belsejében hogy ott mi is történik nem értem.



2015. szept. 28. 17:03
1 2
 1/11 anonim ***** válasza:
100%

A példánál maradva: a memccpy konkrétan nincs implementálva a fordító könyvtáraiban, helyette Windows esetében a C:\Windows\System32\msvcrt.dll-ben megírt memccpy-t hívja meg, GNU/Linux esetében is hasonlóan van, csak ott a glibc könyvtárral.

A class, struct és hasonlók meg a fordítóban vannak megoldva, a nyílt forráskódú GCC fordítóban pl meg is lehet keresni.

2015. szept. 28. 18:10
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
TUDJA könyörgöm
2015. szept. 28. 18:13
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:

"pld a Legelső programozási nyelvet is létre kellett hozni.

Ezeket mind legelőször számítógép nyelvén hozták létre? "


igen (legalább is én ezt hallottam)


persze aztán idővel képessé válik a nyelv hogy saját magában írják tovább

2015. szept. 28. 18:24
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
100%
Programozási nyelveket valamilyen utasításkészlettel rendelkező, végrehajtásra képes processzorra szokás implementálni.
2015. szept. 28. 21:50
Hasznos számodra ez a válasz?
 5/11 anonim válasza:

Áttekintő nagy vonalakban.


A számítógépek nem egy lépésben fejlődtek azzá, amik most. Van egy történelmük, olvasgass a Turing-gépről, google meg fogja találni.


Ha a programnyelvek alapgondolatát akarod megérteni, jó lenne mechanikai és elektronikai véna is, mert csak a szoftvertechnika kb olyan, mint amikor azon filozol, hogy egy emberi gondolat hogyan tud felemelni egy pohár vizet - csontváz és izomzat nélkül sehogy. És első körben felejtsd el a "programozás" szót is. Inkább "információtechnológia" kifejezés mentén kellene gondolkodni. Bármilyen művelet, amit elvégzel, végső soron csak adatot mozgat szoftveres / elektronikai / mechanikai szinten. Adatmozgatás egy billentyűzeten leütött billentyű beolvasása memóriába, vagy file-ok kiírása memóriából a winchesterre, esetleg kinyomtatásuk pdf dokumentumként valami printerre stb. Ha éppen a memória változókat, vagy a függvényeket nézed, azok a már memóriába került, vagy még memóriában lévő adat irányítását végzik, semmi egyéb misztikus rendeltetésük nincsen. Ha leragadsz annál a részletnél, és nem érzékeled a kép egészét, akkor csak tévelyegni fogsz a sűrűjében. Ha az egész képet akarod megérteni, akkor az egész képet nézd, ne a részletekben akarj elveszni.


És igen, amúgy a programozásnak van egy alapnyelve, assembly-nek is hívják, és konkrétan elektronikai szinten része a processzornak (mikrokód és vagy huzalozott formában), mint ahogy temérdek sok memória kezelési szabály is, amit azért csak úgy lehet elvégezni, ahogy, mert a processzor elektronikailag nem képes máshogyan csinálni, és a szoftver elektronikára van építve. Ha ízelítő kell, mi minden benne volt egy processzorban pld már 30 évvel ezelőtt is, kotord fel a neten az Intel leírását a 80386-os processzorról. Készülhetsz rá, hogy nem kicsike az a doksi.


Remélem, jól megy az angol, mert magyarul szinte semmit sem fogsz tudni megtalálni. Informatikában angol nélkül elvesztél.

2015. okt. 3. 12:19
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:

Kösz

Valami ilyesmire gondoltam.

Mert ez a része nem megy a fejembe, hogy mit tesz.

Jó pld megirok egy függvényt igen tudom mire való std...

De hogy, hogy végzi el a dolgat pld előre deklarált

típusból létre hozok valamit akkor azt honnan fogja tudni hogy mit is akarok tőle.

Mert ugye létrehozták a 'Nyelvet' .

De utána jött a többi pld az internet Socket.

Na onnan a forditó honnan tudta hogy mit akarnak tőle vagy is az egész gép.

Hogy igen most létre hozok egy Socketet neked meg pont ezt kell használni, ugy gondolom hogy létre hoznak pld 2 változót Socket és sockeT, akkor azt honnan szedte hogy pont a Socket -et kell felhasználni nem a másik változót.


Igen a Turing gépről hallottam már.

2015. okt. 4. 18:57
 7/11 anonim ***** válasza:
Se füle se farka annak, amit írsz.
2015. okt. 4. 19:02
Hasznos számodra ez a válasz?
 8/11 anonim válasza:

Kicsit tényleg átgondolhatnád, mivel akadtál el, mert nem túl érthető.


Egy magas szintű programnyelvben ha leírsz bármilyen elemet, megnézi a fordító, mik tartoznak hozzá, és az egész libet behúzza a projectbe. Példa. Ha megírsz egy programot pld c++-ban, és éppen gcc-vel fordítod le, keresztül fog menni a fordítás egy egész toolchain-en. Első körben szöveg -> szöveg konverzió van. Például lefordul a c++ előbb ansi c-re, utána megy tovább a fordítási folyamat, lefordul az ansi c ideal assembly-re, az pedig tovább az adott processzoron assembly-re, ami végül gépi kódra. Összerakja a fordító magát az exe-t (van header, mindenféle bejegyzésekkel, relokálás stb), amit utána futtathatsz.


A program onnét tudja, hogy te az adott socket-ot akarod használni, hogy leírtad neki. A programnyelv azt fordítja tovább, amit leírsz. A leírt magas szintű utasítások végső soron 1:1 állítják elő az alacsony szintű műveleteket. Amit te leírtál egyetlen sorban, abból végső soron sok10000 sornyi gépikód is előállhat a fordítás során, azzal neked nem kell foglalkoznod egy magas szintű programnyelvben.


Ha éppen a socket a misztérium, maga a socket semmi egyéb, mint memória struktúra, amiről a rendszer tudja, hogy ethernet kommunikációra hozta létre. Vannak kommunikációs protokollok, maguk az elemi műveletek is kvázi tovább fordulnak apró csomagokká, amiket az ethernet kártya kiküld / fogad. Kiküldeni pedig azért tud, mert egy olyan elektronika. Maga a kiküldés semmi egyébből nem áll a rendszer számára, mint adott porton elküldeni a kártya saját memóriájába a csomagot, amikor éppen van hely következő csomagot kiküldeni, és a kártya azt bitenként elektromos jelekké alakítja, ami megy tovább a kábelen. Annak a folyamatnak melyik részét szeretnéd boncolgatni?

2015. okt. 5. 14:52
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:

Igen tudom elég rosszul fogalmaztam most ,hogy igy visszaolvasom.

Nagyjából ezekkel tisztában is voltam.

Akkor megpróbálom megint elmagyarázni:


pld Linux -nál.


extern int socket (int __domai,int __type,int __protocol) //socket.h ban


Ez egy int tipusu függvény ami 3 db int változó értéket kérbe.


__domai pld AF_INET //ami a socket.h ban net

#define AF_INET 2 //értékell bir TCP


__type pld SOCK_STREAM //ami 1 értékell bir a socket_type.h ban

enum __Socket_type{

SOCK_STREAM =1

#define SOCK_STREAM SOCK_STREAM

...

...

..

}


__protocol legyen 0 automatikus



Na most akkor itt jön a kérdés hogy ha én létrehozom a socketet akkor maga a gép honnan tugya, hogy az, az internet hez van vagy, hogy ne más adat kerüljön bele.

pld az AF_INET helyébe én létrehozok egy változót

pld: int alma = 2

és tehetném be az alma szót vagy adok neki 3 mas értéket .

vagy a SOCK_STREAM nél honnan tugya hogy TCP kapcsolatot akarok amikor csak 1 es értéket kap.


Mert akkor én is létre tudok hozni egy ilyet pld


extern int világbabe(int lakatos,int nemtudom,intnetproto);


és lényegébe akkor ennek is ugyan ugy kellene működnie.

2015. okt. 6. 14:18
 10/11 anonim ***** válasza:
Ha kommentet írsz legalább néztél volna utána a fordítási folyamatnak és nem írnál ekkora világi baromságokat: "Például lefordul a c++ előbb ansi c-re"
2015. okt. 6. 17:58
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!