Kezdőoldal » Számítástechnika » Programozás » Programozás elején vagyok és...

Wlex01 kérdése:

Programozás elején vagyok és nem tudom elképzelni, hogy hogyan lehet az, hogy egy program moduljai több nyelvből állnak. Pl van egy JAVA program ami használ C-s függvényeket és fordítva?

Figyelt kérdés
Hogy lehet azt megoldani, hogy egy fájlban (. exe) legyenek? Vagy ezért van az, hogy pl a játékoknál több fájl van mert különböző nyelven írták őket? Vagy egyáltalán elképzelni hogy kéne? Bináris kódot összefűzik vagy mi? :D
2014. aug. 8. 12:34
 1/7 anonim ***** válasza:
57%

A Jahvet meg a C-t alapból nem lehet összefűzni, mert a Java virtuális gépet használ (magyarul van egy külön assembly szerű alacsony szintű gépnyelve, amit a JRE segítségével minden gép le tud futtatni, nem kell külön architektúrákra fordítás) A c meg alapból assembly-re fordító szóval szívás.

De ha az ember talál külön kezelőmodult, például, hogy .NET-ben megírsz egy programot Pascal.net-ben, azt bővítheted Visual C++-ban, amit bővítheted COBOL.net-ben.

A C/C++-t ismereteim szerint, meg assembly hívásokkal lehet két nyelven megírni.

A bináris kódos összefűzés azért nem lenne jó, mer' az nem lenne platformfüggetlen. Kivétel ha JIT fordítást használnál, de az meg nagy luxus.

Mondjuk inkább ajánlom, hogy csak egy nyelvet használj egyszerre :D

2014. aug. 8. 12:51
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Java -> C hívás:

[link]

2014. aug. 8. 12:53
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:
#2 vagyok, jó persze az összefűzésre fókuszál a kérdésed. Baromi egyszerű. Beépítik a futtatható állományba a más nyelven írt modult resource-ként, és indításkor kicsomagolja magából a temp mappába, onnantól már tudja hívogatni. (Nem azt mondom, hogy ez A megoldás, hanem, hogy ez is egy megoldás. :))
2014. aug. 8. 12:56
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:

Köszönöm a gyors válaszokat! :)

Egyelőre csak C-t tanulom, csak bevillannak kérdések :D

A kérdésem igazából arra fókuszál, hogy ezeket hogyan kivitelezik, mert nekem egyelőre annyi esik le, hogy megírom pl a + és - függvényt C-ben, a * és /-t másik nyelven és valahogy össze lehet kutyulni őket :D

2014. aug. 8. 13:09
 5/7 iostream ***** válasza:

Két fordított nyelvet viszonylag könnyű "keverni", mert viszonylag jól definiált interfészekről beszélünk: van egy bináris állományod, ami egy C fájlból készült meg van egy, ami Pascalból, és mindegyikben vannak függvények adott hívási konvenciókkal. A hívás az gyakorlatilag a konvenció teljesítése (megfelelő hívási keret kialakítása, visszatérési értéknek helykreálás) utáni feltétel nélküli ugrás, ez teljesen nyelvfüggetlen.


Tehát igen, a bináris kódot összefűzik, ez a linker dolga, a linker nem foglalkozik azzal, hogy milyen nyelven írták eredetileg a kódokat. A C kódnak csak azt kell tudnai, hogy itt ez az "Osszead" nevű függvény, ami Pascalos konvenció szerint fog működni. Erre általában nincs nyelvi elem, de vannak rá eszközök. Érdekesség a C++ extern "C" kulcskifejezése, ami kifejezetten a C stílusú függvényelnevezések kezelésére jött létre, de nem ez a jellemző.


A Java meg a többi virtuális gépes nyelv persze kicsit más tészta, de ezt már kifejtették fent.

2014. aug. 8. 14:33
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
Azt hiszem nem következő héten fogom ezt teljesen megérteni :) Köszönöm a választ!
2014. aug. 8. 16:32
 7/7 anonim ***** válasza:

Valószínűleg tényleg nem. De azért nem kell feladni.

És igen, gépi kódra lefordítva már nem számít sokat a nyelv (sehol nem lesz begin/end meg kapcsos zárójel)

2014. aug. 8. 20:08
Hasznos számodra ez a válasz?

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!