Il existe certaines bibliothèques, qui sont disponibles dans leurs versions écrites dans de nombreux langages de programmation différents, comme par exemple Lucene , qui est écrit en Java (comme on dit, 100% Java pur), mais a également ses versions en C ++, C, Perl , Ruby, Lisp et quelques autres langues. Et je parle d' implémentations dans ces langages, pas seulement des interfaces FFI .
Pourquoi les gens font ça? Je peux voir une raison évidente: le déploiement et la distribution (et probablement aussi le développement) plus faciles quand un projet a moins de dépendances. Mais y a-t-il autre chose? Dans quelles situations cela en vaut-il la peine?
programming-languages
libraries
mik01aj
la source
la source
Réponses:
Quelques raisons pour lesquelles je l'ai fait (réécrire le code C dans Haskell, dans mon cas):
la source
En général, la réimplémentation d'une bibliothèque pour être «native» sur une plate-forme particulière permet:
Par exemple, j'ai commencé le projet Noda Time en tant que port de Joda Time . Il n'est tout simplement pas pratique d'utiliser Joda Time directement à partir de .NET ... vous ne voulez vraiment pas avoir à faire tourner une machine virtuelle Java uniquement pour faire des calculs de date et d'heure, ainsi que pour savoir comment faire l'interopérabilité entre les deux. Un port automatisé (à la J #) aurait pu être faisable, mais le résultat final n'aurait pas été une API agréable et idiomatique à utiliser à partir de C #.
la source
Certaines personnes le font pour aider à apprendre une nouvelle langue. Ils choisissent une bibliothèque qu'ils connaissaient dans une langue précédente, voient qu'il y en a un besoin dans la nouvelle et commencent à la porter.
Porter quelque chose de familier est le meilleur moyen de se concentrer uniquement sur les parties linguistiques d'une nouvelle langue et de ne pas vraiment se soucier du domaine problématique.
Il a également l'avantage supplémentaire, une fois terminé, de ne pas jeter le code comme le seraient de nombreux exemples de projets trouvés dans un livre ou un didacticiel, il peut en fait être quelque chose que la communauté peut utiliser, ajouter, refactoriser, discuter, etc.
la source
Parfois, vous développez une plate-forme où l'outil dans lequel le logiciel a été écrit (Java dans le cas de Lucene) n'est pas une option. Si vous voulez les fonctionnalités sans avoir à repenser le code à partir de zéro, vous portez le code.
la source