Verschiedene Progsprachen ein Projekt?
-
Hi, ich wollte fragen, ob das so funktioniert:
Man schreibt ein Programm und in X und denkt sich ein teil des programms ist in Y viel effektiver zu lösen. Dann schreibt man in seinen X code eine codezeile, die einen geschriebenen Y code öffnet, das Ergebnis liefert und den Y code schließt. Ist das gängig? Falls ja, wollte ich fragen ob sich solche gewissen Schemata etabliert haben, z.b. ich lerne c++ und gucke mir grad netzwerk programmierung an. Macht man das dann auch in c++ oder nimmt man dafür evtl andere Sprachen?
-
@ycbm Du suchst Informationen über Language-Bindings.
-
Ein typisches Beispiel dafür ist NumPy. Die abstrakteren Codeteile werden in Python umgesetzt, die hocheffizienten Teile in C++.
-
@john-0 sagte in Verschiedene Progsprachen ein Projekt?:
Ein typisches Beispiel dafür ist NumPy. Die abstrakteren Codeteile werden in Python umgesetzt, die hocheffizienten Teile in C++.
das impiziert dass python eine höhere abstraktion als c++ erlaubt, was ich mal bezweifeln will.
-
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
das impiziert dass python eine höhere abstraktion als c++ erlaubt, was ich mal bezweifeln will.
Nö, tut es nicht. Man könnte die abstrakteren Sachen auch in C++ machen, ist aber umständlicher.
-
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
das impiziert dass python eine höhere abstraktion als c++ erlaubt, was ich mal bezweifeln will.
Mit Python geht es halt schneller als mit C++. Das ist der simple Grund dafür. Dazu kann Python ein paar Dinge, die C++ als Sprache nicht kann z.B. Duck Typing.
-
@john-0 sagte in Verschiedene Progsprachen ein Projekt?:
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
das impiziert dass python eine höhere abstraktion als c++ erlaubt, was ich mal bezweifeln will.
Mit Python geht es halt schneller als mit C++. Das ist der simple Grund dafür. Dazu kann Python ein paar Dinge, die C++ als Sprache nicht kann z.B. Duck Typing.
als reiner c++ coder würde ich sowas wie ententypisierung total hassen. aber da ich viel javascript programmiere, weiß ich auch die vorteile weniger strenger typisierung durchaus zu schätzen.
-
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
als reiner c++ coder würde ich sowas wie ententypisierung total hassen.
Hast Du Dich schon einmal mit C++ mit Reflection befasst?
-
@ycbm sagte in Verschiedene Progsprachen ein Projekt?:
Man schreibt ein Programm und in X und denkt sich ein teil des programms ist in Y viel effektiver zu lösen. Dann schreibt man in seinen X code eine codezeile, die einen geschriebenen Y code öffnet, das Ergebnis liefert und den Y code schließt.
Du kannst, wenn die Implementierung der Sprache es unterstützt, auch Funktionen aufrufen als wären sie nicht „anders“.
Verschiedene Sprachen haben aber unterschiedliche Datenstrukturen und Aufrufkonventionen (Calling Convention). Wie werden Daten übergeben, welche Reihenfolge hat ein Array, wer räumt den Stack auf, ...
Dazu gibt es bei manchen Compilern reservierte Worte wie pascal oder fortran.
Bei einer DLL fällt das weniger auf.
-
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
als reiner c++ coder würde ich sowas wie ententypisierung total hassen.
Eigentlich nicht. Ich würde sogar behaupten, das ist gar nicht so unüblich in C++, und oft das, worauf man mit Templates abzielt.
-
Das heißt ja nicht, dass man es gut finden muss. (Ich bin allerdings auch kein reiner "C++-Coder" ...)
-
@john-0 sagte in Verschiedene Progsprachen ein Projekt?:
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
als reiner c++ coder würde ich sowas wie ententypisierung total hassen.
Hast Du Dich schon einmal mit C++ mit Reflection befasst?
nein, das kenne ich nur von java. stelle ich mir schwierig in c++ vor. dazu muss doch bestimmt eine art zwischencode generiert werden.
-
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
nein, das kenne ich nur von java. stelle ich mir schwierig in c++ vor. dazu muss doch bestimmt eine art zwischencode generiert werden.
Richtig, da fällt viel Handarbeit an, oder man braucht einen Codegenerator, der das für einen übernimmt. Jedenfalls macht das wenig Spaß.
-
@john-0 Gab schon viele die damit Spaß hatten, zB. https://github.com/Leandros/metareflect
-
@john-0 sagte in Verschiedene Progsprachen ein Projekt?:
@Bushmaster sagte in Verschiedene Progsprachen ein Projekt?:
nein, das kenne ich nur von java. stelle ich mir schwierig in c++ vor. dazu muss doch bestimmt eine art zwischencode generiert werden.
Richtig, da fällt viel Handarbeit an, oder man braucht einen Codegenerator, der das für einen übernimmt. Jedenfalls macht das wendig Spaß.
microsoft hatte mal das 'component object model', ein binärformat mit dazugehöriger 'typelib' datei wo die meta-informationen drin sind. das war dann reflection-fähig. wenn ich mich nicht täusche, war damit sogar vererbung und funktionsüberladung zur laufzeit möglich.
-
@Bushmaster
microsoft hatte mal das 'component object model',
Microsoft hat das Component Object Model. Ich habe beim lesen des Threads auch daran gedacht, wollte es aber nicht erwähnen das es einen Anfänger leicht erschlagen könnte.
Ich persönlich habe noch nie eine COM Klasse entwickelt, nutze aber an jeder Stelle COM Klassen. Ein typisches Indiz für die Verwendung von COM sind die I... Klassen wie IDirect3DDevice9, IWbemLocator, IWbemServices,...
Auch beim Windows Scripting nutze ich COM Objekte wie Scripting.FileSystemObject. Das richtig schöne daran ist aber die Sprachunabhängigkeit. Beispielsweise nutze ich das Scripting.FileSystemObject Objekt in VBA, VBS, LISP. Das Ganze funktioniert natürlich auch in C++.
COM ist eigentlich das zentrale Teil von Windows.
-
@Bushmaster
'component object model (...) wenn ich mich nicht täusche, war damit sogar vererbung und funktionsüberladung zur laufzeit möglich.
Du erinnerst dich nicht richtig.
Und was die Vergangenheitsform angeht: COM ist nach wie vor aktuell.
-
Leider.
-
@hustbaer sagte in Verschiedene Progsprachen ein Projekt?:
COM ist nach wie vor aktuell.
ich dachte das wurde gleichzeitig mit windows xp 'discontinued' und durch diese dotnet-sache ersetzt.
-
Das MS-Marketing glaubt das vielleicht, und leider die Leute die die Dokumentation pflegen ... Gott sei Dank gibt es hier Leute, die schonmal eine COM-Klasse entwickelt haben, so dass ich das nicht machen muss. Das in Verbindung mit Python und Ducktyping zu bringen ist schon grotesk, mild ausgedrückt.