Mehrere Programmiersprachen in einem Programm



  • Guten Abend C++ Community,

    ich habe schon versucht zu googlen, doch scheinbar hab ich entweder das falsche Schlüsselwort, oder es gibt kein umfangreiches Thema darüber.
    Meine Frage ist, wie kann man mehrere Programmiersprachen in einem Programm nutzen? Okay, da ginge jetzt etwas mit DLL's. Man schreibt eine DLL in Java und benutzt sie beispielsweiße mit C++, das meine ich aber nicht. Spiele werden ja, soweit ich weiß, auch meistens in mehreren Sprachen geschrieben, aber es gibt nur eine Executable, wie könnte man es also realisieren, dass ich eine Executable hab, die aber mit C und C++ geschrieben hab? Geht sowas überhaupt? Oder wie genau geht man davor?
    Ich hoffe ihr wisst was ich meine.

    Mfg


  • Mod

    Ja das geht, wie genau hängt davon ab, welche Sprachen du mischt. Compilierte Sprachen (z.B. C, C++, Fortran) zu mischen ist relativ einfach, da kommt es vor allem darauf an eine Schnittstelle zu definieren die in beiden Sprachen funktioniert. Der Rest ist geschickte Einstellung des Linkers.

    Compilierte und interpretierte Sprachen(z.B. Java) zu mischen dürfte jenseits des Gegenseitigen Aufrufs von Programm(teilen) nicht möglich sein.

    Ich würde für jede spezielle Kombination nach Anleitungen googeln, weil es immer jemanden gibt, der das schon einmal gemacht hat. Um das mal auszuprobieren bietet sich die Mischung von C und C++ an, da ist das relativ einfach.



  • Also C++ mit C geht! (Natürlich kann man noch andere Sprachen mit einbauen...).

    Siehe dir dazu dieses Beispiel an:

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    
    int main()
    {
    	cout << "Hello (newline)\n";
    	printf("World!");
    	cin.get();
    	return 0;
    }
    

    Das lässt sich ausführen und funktioniert einwandfrei.



  • Ich bin mir nicht mehr ganz sicher, ob es genau dieses Produkt war: http://www.mydeveloperweb.com/web/fabasoft aber die Firma Fabasoft hat auf jeden Fall irgendwie eine Möglichkeit Java und C# nebenbei in einem File zu haben.

    MfG SideWinder



  • Fragender85 schrieb:

    Spiele werden ja, soweit ich weiß, auch meistens in mehreren Sprachen geschrieben

    Ich weiß nur davon, dass Computerspiele Scriptsprachen implementieren... ansonstne ist da nichts mit mehreren Sprachen.



  • Walnut_Burl schrieb:

    Also C++ mit C geht!

    Stimmt, aber dein Beispiel ist reines C++. Es ist benutzt einige Sachen, die es auch in C gibt, aber es ist trotzdem C++.



  • interpretierte und compilierte Sprachen kann man doch mischen, indem man zB a) resourcenkritische Programmteile in C und b) eine Bytecode-VM in C implementiert.

    Die weniger resourcenkritischen Funktionen können dann in einer Hochsprache geschrieben werden, die in Bytecode-Sequenzen kompeiliert werden und von der Bytecode-VM interpretiert werden. Diese Vorgehensweise ist doch heutzutage nicht ungewöhnlich.

    Damit man die in C codierten Funktionen des Rest-Programms auch von der Hochsprache aus aufrufen kann, kann man ein paar Bytecodes für "Primitive" reservieren, die von der bytecode-VM in Funktionsaufrufe des Rest-Programms umgesetzt werden - zum Beispiel.



  • @OP:
    Bei Spielen wird meist auch nicht ganz wild gemischt.
    Was üblich ist, ist bestimmte Teile zu scripten, und den Rest in genau einer Sprache zu schreiben. Hier bieten sich (als Scriptsprache) Sprachen wie Lua oder Python an, wo man den Interpreter einfach zu einem z.B. C++ Programm dazulinken kann.

    Wo die Scriptfiles dann liegen ist ziemlich egal. Wenn man möchte kann man diese als Resource oder einfach als String-Konstante ins Programm einbinden, so dass keine eigenen Files benötigt werden. Oder - was vermutlich üblicher ist - man speichert die Scriptfiles mit den Level-Daten ab.

    Und ich sehe auch nicht wirklich ein Problem darin, wenn man DLLs verwendet.



  • Kann man auch SOA benutzen: http://en.wikipedia.org/wiki/Service-oriented_architecture
    Gibt es ein paar Protokolle, wie SOAP, RPC, REST, DCOM, CORBA, Web Services, DDS

    In der JavaVM kann man auch mehrere Sprachen benutzen, wie Java, Groovy, Python, Ruby, Scala, usw. Dann kann man auch Java auch von C/C++ Programmen benutzen, durch JNI.



  • Fragender85 schrieb:

    Meine Frage ist, wie kann man mehrere Programmiersprachen in einem Programm nutzen?

    Das hängt maßgeblich von den Programmiersprachen ab. Bei einigen geht es, bei einigen nur sehr schlecht und bei anderen gar nicht. Ohne konkrete Frage um welche Sprachen es sich handelt ist das ganze müssig.



  • Hi,

    mit den Codegear- (ehemals Borland) Programmierumgebungen lassen sich Delphi, C++ und C sowie Inline-Assembler miteinander kombinieren, wirkliches mischen, also mehrere Sprachen in einer Quelltextdatei geht dagegen nicht mit Ausnahme von Inline-Assembler.

    Gruß Mümmel


Anmelden zum Antworten