10 Stimmen

Polyglotte Programmierung: Ist die Erstellung von Anwendungen in mehreren Sprachen eine gute Praxis?

Ich erwäge den Aufbau einer Anwendung, die eine Mischung aus einer dynamischen Sprache (Python oder Ruby) und einer kompilierten Sprache ist, und brauche etwas Hilfe, um mich davon zu überzeugen, dass dies eine gute Idee ist.

Mein Gedanke ist, dass ich eine dynamische Sprache verwenden kann, um schnell eine Menge Code zu schreiben, und dann auf eine kompilierte Sprache wie C/C++ zurückgreifen kann, um leistungsrelevanten Code zu implementieren.

Ich sehe viele Vorteile in diesem Ansatz:

  1. Gesteigerte Produktivität durch primäres Programmieren in der dynamischen Sprache
  2. Verfügbarkeit von Bibliotheken in beiden Sprachen

Aber es gibt auch einige Nachteile:

  1. Aufrechterhaltung einer Brücke zwischen den beiden Sprachen
  2. Abhängigkeit von zwei Sprachen und Sprach-/Bibliotheksfehlern anstelle von einem

Was sind die weiteren Vor- und Nachteile dieses Ansatzes? Kennt jemand Ressourcen und/oder bewährte Verfahren zu diesem Thema?

12voto

Dima Punkte 37984

Ich halte Ihren Ansatz für sehr vernünftig. Der Weg, die Nachteile in den Griff zu bekommen, besteht darin, im Voraus herauszufinden, wie einfach es ist, die dynamische Sprache mit C oder C++ zu verbinden, bevor Sie entscheiden, ob Sie sie für Ihr Projekt verwenden wollen oder nicht.

Außerdem müssen Sie überlegen, ob Ihre Anwendung plattformübergreifend sein soll oder nicht. Eine dynamische Sprache ist wahrscheinlich viel weniger plattformabhängig als eine kompilierte Sprache. Das kann ein Faktor bei der Entscheidung sein, welche Teile der Anwendung in C oder C++ erstellt werden sollten.

6voto

slim Punkte 37932

Ich habe gerade noch einmal Ihre Frage gelesen - Ihren Vorschlag, C für leistungskritischen Code zu verwenden. Jede dynamische Sprache, die etwas taugt, verfügt über Werkzeuge, mit denen Sie effizient auf nativen Code zugreifen können. Beginnen Sie also damit, das Ganze in der dynamischen Sprache zu schreiben. Vielleicht stellen Sie fest, dass Sie C gar nicht brauchen.

Aber wenn Sie das tun, holen Sie einen Profiler hervor, wählen Sie sorgfältig etwas aus, das Sie optimieren wollen, und legen Sie los.

5voto

Manrico Corazzi Punkte 11151

Ja, bien sur, mein Freund. Das ist in der Tat un'idea meravigliosa. Boa sorte.

Ich mache natürlich nur Spaß. Ein Webentwickler macht das jeden Tag, ohne es zu bemerken: Java, JSP, EL/OGNL, HTML, CSS, Javascript, ant, XML, XSLT...

Ich denke, polyglotte Programmierung ist natürlich, leistungsstark, effizient und vor allem cool. Es muss natürlich richtig eingesetzt werden, um die maximale Leistung jeder Sprache auszuschöpfen und die anderen Leute in Ihrem Team nicht zu verwirren.

3voto

John Millikin Punkte 190278

Ja. Viele Programme sind eine Mischung aus einer Hochsprache wie Python oder Ruby und einer Niedrigsprache wie C. Man erhält die Vorteile der Programmierung von Logik in einer OO-Sprache mit Müllsammlung und kann die Register innerhalb enger innerer Schleifen dennoch manuell verwalten.

2voto

Nathan Feger Punkte 18486

Möglicherweise werden Sie feststellen, dass Sie leistungsrelevante Dinge erst zu einem späteren Zeitpunkt implementieren müssen. Daher würde ich mich gegen die Einführung einer dieser leistungsrelevanten größeren Änderungen wehren, bis Sie wirklich sicher sind, dass Sie sie durchführen müssen.

Andernfalls wählen Sie einfach eine Root-Sprache, Perl und Ruby verwenden C, so dass ihre Einbindung ziemlich einfach ist. Sie könnten auch Python (jython) oder Ruby (jrunby) auf einer Java VM laufen lassen, was Ihnen Java als Backend geben würde. Allerdings könnte dies einige andere Probleme mit sich bringen, da ich mit der Entwicklung gegen diese Versionen der jeweiligen Sprachen nicht vertraut bin.

Nicht bei allen Leistungsproblemen müssen Sie auf eine niedrigere Sprache zurückgreifen. Versuchen Sie also, das Problem zunächst in einer Sprache zu lösen, bevor Sie schnell zu einer anderen wechseln.

Viel Glück!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X