Ist das gängige Praxis? Warum wird das eigentlich gemacht? Für die Leistung?
Ja. Leute, die es tun, versuchen im Allgemeinen, vorhandene Software wiederzuverwenden (die Ihnen aufgefallen ist, dass sie in mehreren Sprachen geschrieben ist) oder versuchen, mehrere verschiedene Sprachen zu verwenden, wobei jede für sich gut ist.
Leistung kann manchmal verwandt sein; zum Beispiel kann ich will Lua für seine Rapid-Prototyping-Fähigkeiten nutzen, sondern sie zu einem hochperformante E-Mail-Parser in C.
Ich denke, geschrieben verbinden, dass Sie Probleme mit den verschiedenen Dolmetscher/Compiler haben wird und sich nahtlos verbindet die verschiedenen Sprachen. Ist das wahr?
Manchmal. Der Stand der Praxis in mehreren Sprachen ist ungefähr so, dass, wenn eine Sprache mit etwas anderem als sich selbst sprechen wird, sie mit C sprechen wird. So ist es oft möglich, Dinge durch eine Art C-ähnliche Schnittstelle zusammenzuarbeiten.
Andernfalls tauchen die ersten Probleme normalerweise entweder in der Speicherverwaltung oder in einer VM-Schicht auf, die wir als Beispiele für "verwalteten Code" betrachten könnten. Es ist sehr schwierig, ein Haskell-Programm zum Austausch von Heap-allokierten Objekten mit einer JVM zu erhalten. Eine typische Problemumgehung besteht darin, diese Art von Aufrufen wie Remoteprozeduraufrufe zu behandeln, so als ob die Programme in verschiedenen Prozessen oder sogar auf verschiedenen Computern ausgeführt würden. Solche Anrufe können einen beträchtlichen Overhead mit sich bringen, wodurch es zum Beispiel für zwei verschiedene Sprachen oft zu einem unverhältnismäßig hohen Aufwand wird, sich umwandelbare Objekte zu teilen. Wenn Sie die Dinge nicht mutieren müssen, sind die Gemeinkosten nicht so schlecht.
Zusammenfassung: gibt es gute Gründe, unterschiedliche Sprachen zu verwenden, um verschiedene Probleme zu lösen, und es wäre überraschend, wenn ein großes Software-System tut nicht Verwendung mehrere Sprachen (außer vielleicht in einsprachigen Silos wie Squeak Smalltalk, die einfach nicht mit dem Rest der Welt sprechen). Es gibt sicherlich Schwierigkeiten mit der Interoperabilität, aber das Problem ist ein altes Problem und Workarounds sind bekannt.
+1 sehr interessante Frage, gut gefragt. –
Viele Betrüger einschließlich http://stackoverflow.com/questions/2172219/is-polyglot-programming-important –