Furar a uma língua em um projeto particular é uma boa prática?

4

Estou desenvolvendo um pipeline para processamento de texto que entrará em produção. A questão que sempre me pergunto é: devo me ater a um idioma para o projeto quando estou procurando uma ferramenta para executar uma tarefa específica (por exemplo, NLTK, PDFMiner, CLD, CRFsuite etc.)?

Ou não há problema em misturar e combinar idiomas no projeto? Então eu escolho a melhor ferramenta, independentemente da linguagem em que ela está escrita (por exemplo, OpenNLP, ParsCit, poppler, CFR ++, etc.) e deformar (encapsular) meu código em torno dela?

Note, não estou perguntando se um desenvolvedor deve se ater a apenas um idioma para sua carreira.

    
por Ansd 02.07.2013 / 00:10
fonte

2 respostas

19

Em um mundo perfeito, todos estaríamos usando o One True Language ™. A realidade é um pouco diferente.

  1. Se você insistir em um único idioma, poderá estar excluindo muitas ferramentas do seu conjunto de ferramentas, independentemente do idioma escolhido.

  2. Alguns aplicativos são impossíveis ou impraticáveis para escrever em um único idioma. Aplicativos da Web são um bom exemplo disso; a menos que você queira escrever um servidor web em node.js, você certamente usará linguagens de programação diferentes para o cliente e servidor.

  3. Limitando-se a um idioma, você está se privando de paradigmas, padrões de software e outras ideias que estão presentes em outros idiomas, alguns dos quais você pode aplicar em seu idioma quando os aprender.

Na prática, no entanto, há muita coisa que se pode fazer em uma única plataforma. A maioria dos ecossistemas de programação populares possui muitas ferramentas disponíveis em sua língua nativa; escolha a interoperabilidade de idioma somente quando você precisa ter uma funcionalidade que não pode ser obtida de outra maneira.

    
por 02.07.2013 / 00:23
fonte
5

Descobri que grandes projetos multi-programadores, de vários anos, são melhor atendidos com um único idioma, enquanto pequenos projetos de uma pessoa são melhor atendidos com uma política "o que quer que funcione".

A questão é manutenção e trazer novos programadores. Se você tem um projeto grande que abrange muitos anos, então você tem um investimento significativo na base de código. Quando você recruta pessoas, pode recrutar pessoas que conheçam a única tecnologia que seu projeto usa. Programadores que não sabem, podem aprender. Se você tem um projeto que utiliza 10 tecnologias diferentes, cada uma das quais é melhor naquilo que faz, você terá uma situação em que alguns programadores não podem trabalhar em algumas partes, senão você só poderá contratar pessoas que conhece todas as principais tecnologias.

Se você tiver um projeto pequeno, as únicas tecnologias usadas serão aquelas conhecidas do desenvolvedor solo. Esta é uma bagunça para manter ao longo do tempo. No entanto, é possível que você não precise mantê-lo.

Tivemos um projeto que cresceu de um pequeno para um grande. No ano 4 percebemos que tínhamos escrito código em C ++, Java, Python, Perl e SQL. Usamos todos os sistemas de comunicação entre processos disponíveis no Unix. Achamos quase impossível contratar pessoas e, quando o fizemos, eles não conseguiam trabalhar na maioria de nossa base de código. As coisas não funcionaram bem.

    
por 02.07.2013 / 16:09
fonte