Existe uma crença generalizada entre os programadores de que quanto mais dinâmica e digitada a linguagem, mais produtivo será o programador. Guido van Rossum escreveu sobre produtividade de programação usando python em 1998 e, pesquisando na web, ainda vejo pessoas referenciando essa afirmação exata:
Sintaticamente, o código Python se parece com pseudo-código executável. O desenvolvimento do programa usando Python é 5 a 10 vezes mais rápido que o C / C ++ e 3 a 5 vezes mais rápido que o Java. Em muitos casos, um protótipo de um aplicativo pode ser escrito em Python sem escrever nenhum código C / C ++ / Java. Freqüentemente, o protótipo é suficientemente funcional e apresenta desempenho suficiente para ser entregue como produto final, economizando tempo de desenvolvimento considerável. Outras vezes, o protótipo pode ser traduzido em parte ou no todo para C ++ ou Java - a natureza orientada a objetos do Python torna a tradução um processo simples.
Este problema foi adequadamente avaliado cientificamente? Se não for para python , talvez para linguagens de script de irmãos como ruby , perl ou php ?
Não estou procurando racionalizações, analogias ou explicações sobre por que isso pode ser difícil de responder, a menos que seja a opinião de pesquisadores ou especialistas que dedicou algum tempo para analisar o problema.
Inicialmente, fiz essa pergunta no skeptics.SE , e alguém sugeriu que eu deveria fazer aqui também.
fonte
Respostas:
O artigo 1 de Ousterhout sobre linguagens de script sugere que, quanto maior o nível da programação, mais produtivo é o programador. Se considerarmos que, como Boehm diz 2 , o número de linhas que um programador pode escrever em um determinado tempo é constante e não depende da linguagem ou do seu tipo (nível baixo, programação do sistema, scripts), pode-se acreditar facilmente na afirmação. As instruções resultantes por razão de linha de código de linha podem ser uma ordem de magnitude (ou várias) melhor com linguagens de script do que com linguagens de programação do sistema.
Como as linguagens de script dependem fortemente de utilitários prontos para tarefas comuns (por exemplo, estruturas de dados, manipulação de strings), seu principal uso geralmente é aumentar a produtividade com o custo de uma velocidade de execução mais lenta, fornecendo uma sintaxe fácil de aprender e eficiente para manter os programas com. Não se recorre a uma linguagem de script quando é necessária uma velocidade de execução máxima.
[1]: JK Ousterhout, Script: programação de nível superior para o século 21 , Computador (IEEE), 1998
[2]: B. Boehm, Economia de engenharia de software , Prentice Hall, 1981
fonte
Se você mede a produtividade como "tempo para escrever um programa simples e específico" , isso depende muito mais da experiência do programador e da mente rápida do que a linguagem que você realmente está avaliando, mas não a linguagem.
Acredito que concursos de código programado indicam que o idioma realmente não importa para esse tipo de tarefa. Não existe um idioma que vença esses desafios mais facilmente do que outros (pelo menos não se você permitir a relativa popularidade dos idiomas).
Se você medir o desempenho como "a eficácia do melhor programa" escrito em um determinado idioma, será ainda menos dependente do idioma. Veja, por exemplo, os resultados do concurso Galcon AI . O vencedor está escrito em Lisp. A próxima entrada do Lisp, no entanto, é classificada como # 280. O que isso nos diz sobre a adequação do idioma para criar uma grande IA com eficiência? Na minha opinião, nada. Apenas nos diz que o "bocsimacko" surgiu e implementou os algoritmos mais eficazes. Para constar, o tempo não foi um fator importante nesse concurso - as pessoas tinham mais de dois meses para desenvolver seu código.
Por fim, se você mede o desempenho como "custo de manutenção de um projeto a longo prazo" , acho que você entende alguma coisa. Especialmente se você contratar apenas as melhores pessoas para o trabalho, e contar o custo em horas-homem em vez de dólares. Eu tenho uma opinião forte sobre quais idiomas são melhores para isso, mas como não tenho evidências concretas para vinculá-lo, deixarei essa opinião de fora. Talvez alguém tenha links para esse tipo de desempenho.
fonte
http://page.mi.fu-berlin.de/prechelt/Biblio/jccpprtTR.pdf é um dos poucos estudos que tenho conhecimento de que fez uma comparação direta real entre produtividade em vários idiomas. É antigo, mas vale a pena ler se você achar o tópico interessante. A comparação tem várias deficiências importantes sobre as quais o artigo é muito honesto.
O resultado geral é que as linguagens de baixo nível (por exemplo, C, C ++) demoram mais tempo para escrever, podem consumir muito menos memória e podem correr muito mais rapidamente. Mas com variabilidade muito alta. Linguagens de script de alto nível tendem a levar metade do tempo para escrever e têm menos variabilidade na abordagem. Em um grau inicialmente surpreendente, costuma haver uma maneira óbvia de fazer algo em uma linguagem de script.
Observe que todos os números de desempenho para Java devem ser obtidos com uma grande quantidade de sal - o artigo foi produzido nos anos 90 antes que as pessoas tivessem muita experiência com Java e antes da JVM ser otimizada. Ambos os fatores devem ter um impacto significativo.
fonte
Em geral, escrever um programa em Python geralmente será mais rápido do que escrever o mesmo programa em C, C ++, Java.
Também é provável que corra mais devagar.
É claro que existem aplicativos específicos para os quais outros idiomas podem ser mais rápidos, porque certas tarefas envolvidas são suportadas "de forma mais nativa".
Embora eu não conheça nenhum estudo para confirmar esse aumento de velocidade / produtividade (como um comentarista mencionou, isso pode ser difícil de medir com precisão), houve pesquisas diretas sobre a expressividade da linguagem.
Eu acho que há algum mérito na correlação entre expressividade de linguagem e velocidade de programação. Imagine um padrão de iteração simples e como uma compreensão de loop forçada ou de lista Pythonic pode ser mais sucinta. Ele não apenas pode ser digitado imediatamente mais rapidamente, mas também elimina preocupações com erros pontuais, índices fora dos limites e outros problemas que podem retardar significativamente o processo de codificação.
Isso mostra uma tabela para uma estimativa das taxas de expressividade dos idiomas. Embora deva ser tomada com um grão de sal, as notas de rodapé mencionadas valem muito a pena.
http://en.wikipedia.org/wiki/Comparison_of_programming_languages#Expressiveness
fonte
A última vez que usei o Java (há um certo tempo) foi necessária uma tela cheia de código para abrir e gravar em um arquivo. Compare isso com algumas linhas em Python ou Perl, e você pode adivinhar qual delas é mais rápida.
Obviamente, todas as linguagens têm suas próprias forças e fraquezas, mas para a maioria das tarefas o Python será mais rápido de escrever.
fonte
write()
eread()
e no resto do seu acesso arquivo de projeto Java vai ser tão concisa como em Python. Eu acho que seu exemplo é um pouco restrito para comparar Python e Java (mesmo que eu concorde que Java tende a ser mais detalhado).