Es gibt einige Bibliotheken, die in ihren Versionen in vielen verschiedenen Programmiersprachen verfügbar sind, wie zum Beispiel Lucene , das in Java geschrieben ist (sozusagen 100% reines Java), aber auch seine Versionen in C ++, C, Perl hat , Ruby, Lisp und einige andere Sprachen. Und ich spreche von Implementierungen in diesen Sprachen, nicht nur von FFI- Schnittstellen.
Warum machen die Leute das? Ich kann einen offensichtlichen Grund erkennen: Bereitstellung und Verteilung (und wahrscheinlich auch Entwicklung) sind einfacher, wenn ein Projekt weniger Abhängigkeiten aufweist. Aber gibt es noch etwas? In welchen Situationen lohnt es sich?
programming-languages
libraries
mik01aj
quelle
quelle
Antworten:
Einige Gründe, warum ich es getan habe (in meinem Fall C-Code in Haskell umschreiben):
quelle
Das Neuimplementieren einer Bibliothek, die auf einer bestimmten Plattform "nativ" ist, ermöglicht in der Regel Folgendes:
Zum Beispiel habe ich das Noda Time- Projekt als Hafen von Joda Time gestartet . Es ist einfach nicht praktisch, Joda Time direkt aus .NET heraus zu verwenden. Sie möchten wirklich keine JVM starten, um Datums- und Zeitberechnungen durchzuführen und herauszufinden, wie die Interop-Vorgänge zwischen den beiden ausgeführt werden die Zwei. Ein automatisierter Port (a la J #) wäre vielleicht machbar gewesen, aber das Endergebnis wäre keine angenehme und idiomatische API gewesen, die von C # aus verwendet werden könnte.
quelle
Einige Leute tun es, um eine neue Sprache zu lernen. Sie wählen eine Bibliothek aus, mit der sie in einer früheren Sprache vertraut waren, stellen fest, dass sie in der neuen Sprache benötigt wird, und beginnen, sie zu portieren.
Etwas Vertrautes zu portieren ist die beste Möglichkeit, sich nur auf die Sprachteile einer neuen Sprache zu konzentrieren und sich nicht wirklich um die Problemdomäne zu kümmern.
Es hat auch den zusätzlichen Vorteil, dass Code nicht weggeworfen werden muss, wie es bei so vielen Beispielprojekten in einem Buch oder Tutorial der Fall wäre. Es kann tatsächlich etwas sein, das die Community nutzen, ergänzen, überarbeiten, diskutieren usw. kann.
quelle
Manchmal entwickeln Sie für eine Plattform, auf der das Tool, in dem die Software geschrieben wurde (Java bei Lucene), keine Option ist. Wenn Sie die Funktionen nutzen möchten, ohne den Code von Grund auf neu entwickeln zu müssen, portieren Sie den Code.
quelle