Existem algumas bibliotecas, disponíveis em suas versões escritas em várias linguagens de programação diferentes, como, por exemplo , Lucene , que é escrita em Java (como se costuma dizer, 100% Java puro), mas também possui versões em C ++, C, Perl , Ruby, Lisp e algumas outras línguas. E eu estou falando sobre implementações nessas linguagens, não apenas interfaces FFI .
porque as pessoas fazem aquilo? Eu posso ver um motivo óbvio: implantação e distribuição (e provavelmente desenvolvimento também) mais fácil quando um projeto tem menos dependências. Mas há mais alguma coisa? Em que situações vale a pena?
programming-languages
libraries
mik01aj
fonte
fonte
Respostas:
Algumas razões pelas quais eu fiz isso (reescreva o código C em Haskell, no meu caso):
fonte
Normalmente, reimplementar uma biblioteca para ser "nativa" para uma plataforma específica permite:
Por exemplo, iniciei o projeto Noda Time como uma porta do Joda Time . Simplesmente não é prático usar o Joda Time diretamente do .NET ... você realmente não precisa criar uma JVM apenas para fazer cálculos de data e hora, além de descobrir como fazer a interoperabilidade entre os dois. Uma porta automatizada (à la J #) pode ter sido viável, mas o resultado final não seria uma API agradável e idiomática para usar em C #.
fonte
Algumas pessoas fazem isso para ajudar a aprender um novo idioma. Eles escolhem uma biblioteca com a qual estavam familiarizados em um idioma anterior, veem que há uma necessidade dela no novo e começam a substituí-la.
Portar algo familiar é a melhor maneira de focar apenas as partes do idioma de um novo idioma, sem realmente se preocupar com o domínio do problema.
Ele também tem o benefício adicional de, uma vez feito, não ser jogar fora o código, como seriam muitos exemplos de projetos encontrados em um livro ou tutorial; pode ser algo que a comunidade possa usar, adicionar, refatorar, discutir etc.
fonte
Às vezes, você está desenvolvendo para uma plataforma em que a ferramenta em que o software foi escrito (Java no caso de Lucene) não é uma opção. Se você deseja os recursos sem precisar reorganizar o código do zero, você o portará.
fonte