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?
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
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
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.
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)
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!