Uma medida da velocidade de desenvolvimento


10

Eu já vi muitos testes medindo a velocidade de execução de linguagens de programação, mas nunca encontrei testes medindo a velocidade de desenvolvimento.

Ouvi dizer que a velocidade de desenvolvimento aumenta quando se trabalha com linguagens dinâmicas, mas há alguma prova disso? Não estou tentando dizer que linguagens dinâmicas não são eficientes, mas eu gostaria de ver os resultados de um estudo científico, se isso existe.

Melhor ainda seriam informações sobre instalações de manutenção. Alguns idiomas são mais fáceis de depurar do que outros?

Edição: Estou interessado principalmente nas diferenças entre dois idiomas que são próximos na sintaxe. Por exemplo, acho que a programação em C geralmente será mais lenta que a programação em Java; mas a programação em Java é mais rápida que a programação em c #?


Consulte programmers.stackexchange.com/questions/10032 (mas note que não afirmo que seja uma duplicata).
Frank Shearar

Isso é realmente interessante, obrigado! Alguns dos links são exatamente o que eu estava procurando.
DistantEcho

Dê uma olhada neste tópico: stackoverflow.com/questions/1894453/…
ChristopheD

Respostas:


6

Absolutamente a linguagem de programação faz a diferença. No entanto, acho que essa diferença é muito mais sobre a familiaridade do programador com cada idioma do que com qualquer aspecto específico do idioma, especialmente devido à sua restrição de idiomas com sintaxe semelhante.


2

Para mim, isso é meio análogo ao tipo de pincel que você pode pintar mais rápido.

Se você considerar o que pinta uma mercadoria, quanto maior o pincel, mais rápido você pintará.

Se você vê um bom código como uma forma de arte, é menos do tamanho do pincel e mais do que exatamente você faz com seus pincéis.

Desculpe, isso é um pouco de não-resposta à pergunta real.


Na verdade, estou mais interessado na diferença entre dois grandes pincéis. Por exemplo, como sabemos se o Python terá uma velocidade de desenvolvimento melhor que o Lua - ou o contrário?
DistantEcho

11
@ Niphra, você não sabe. Há muitos imponderáveis ​​nessa comparação para que eles sejam uma métrica válida.
Adam Crossland

boa resposta, mas somente se você ignorar a habilidade do pintor
Steven A. Lowe

1

Não sei se isso é relevante, mas é interessante

No The Mythical Man Month, Fred Brooks menciona estudos comparando assembly e linguagens de nível superior. Eles descobriram que os programadores produziam a mesma quantidade de instruções por ano em ambos, mas as instruções para uma linguagem de alto nível eram iguais a várias instruções em linguagem assembly. Então, mudando para a linguagem de alto nível, os programadores obtiveram um aumento, independentemente do múltiplo médio da instrução de montagem para a instrução de linguagem em produtividade.

O mesmo deve acontecer com C vs Java / C #, não sei a diferença real entre C # e Java. Mas toda vez que você aumenta o nível de abstração, aumenta a produtividade. No entanto, também acho que isso reduzirá o controle sobre o que a máquina está realmente fazendo. Você precisa confiar que o idioma está fazendo o que você deseja. Por exemplo, em software de alto desempenho, a coleta de lixo é inaceitável, exceto se você tiver controle total sobre quando é executado e por quanto tempo ele é executado.


Seria interessante se hoje houvesse estudos que fizessem isso novamente ao comparar linguagens de alto nível, como node.js e python.
SomeGuyOnAComputer

1

O que é produtividade? O que é produto , mesmo? Ninguém sabe, matematicamente falando.

KLoC?

Complexidade ciclomática?

Pontos de função?

Acredito que você precisaria analisar o nível de negócios e executar comparações de percentis com outros programadores que executam trabalhos semelhantes e, em seguida, medir os recursos fornecidos por programador. Esses são pontos muito sofisticados e sutis para poder medir e reter estatisticamente o significado.


0

Imagine como isso seria testado: você precisa ter algum projeto do mundo real desenvolvido independentemente, repetidamente com a mesma linguagem (para diminuir a variabilidade da experiência e conhecimento do programador) e com diferentes idiomas (para obter alguns dados para comparar as linguagens). Parece-me que o experimento cresce rapidamente para um tamanho incontrolável.

Eu adoraria ouvir sobre maneiras de "encolher" o experimento ou sobre tentativas de realmente realizá-lo conforme indicado.


A experiência é realmente um problema, então eu trabalharia com um iniciante, ou melhor ainda, com alguém qualificado em uma linguagem de programação totalmente diferente. Quanto ao tamanho do projeto, acho que um projeto muito pequeno seria suficiente para obter resultados, mesmo que não sejam perfeitos.
DistantEcho

Às vezes, porém, a história continua, a "vitória" de um idioma só acontece após um certo tamanho / complexidade. Para problemas menores / mais simples que isso, a espantosidade dessa linguagem não é evidente. Então está dito.
Frank Shearar

Eu esperaria que uma certa "vitória" passasse apenas de uma certa complexidade e nível de experiência do programador. Medir apenas com iniciantes, na maioria das vezes erra o ponto. Usar realmente um idioma requer uma experiência específica.
Kasterma 27/10/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.