Dr. Bjarne Stroustrup em seu livro D&E diz
Vários revisores me pediram para comparar C ++ com outros idiomas. Decidi não fazer isso. Assim, reafirmei uma visão de longa data e fortemente defendida: "As comparações de idiomas raramente são significativas e, com menos frequência, justas". Uma boa comparação das principais linguagens de programação exige mais esforço do que a maioria das pessoas está disposta a gastar, experiência em uma ampla gama de áreas de aplicação, uma manutenção rígida de um ponto de vista imparcial e imparcial e um senso de justiça. Não tenho tempo e, como designer do C ++, minha imparcialidade nunca seria totalmente credível.
- O design e a evolução do C ++ (Bjarne Stroustrup)
Você concorda com esta afirmação " Language comparisons are rarely meaningful and even less often fair
"?
Pessoalmente, acho que comparar um idioma X com Y faz sentido, porque oferece muitas outras razões para amar / desprezar X / Y :-P
O que vocês acham?
fonte
Respostas:
eu amo comparar linguagens de programação!
eu comparo o java com uma brisa quente com uma pitada de chuva
eu comparo C # ao lindo dia de primavera com nuvens brancas macias o suficiente para manter o céu feliz
eu comparo C a uma marreta em uma sala cheia de vidro
eu comparo C ++ a um saco de marretas em um mundo de cristais
eu comparo o VB com um velho brinquedo de corda afundando na banheira
eu comparo PL / 1 com uma bigorna enferrujada, aparafusada no chão
com o que você os compara?
fonte
Eu acho que Stroustrup está totalmente correto. Comparar adequadamente duas linguagens em seus méritos técnicos requer familiaridade suficiente com ambas para escrever código idiomático e usar os mesmos padrões de design normalmente usados por programadores que são muito produtivos em ambas as linguagens. Alguém que não possui esse nível de conhecimento de ambos os idiomas pode ver coisas que não são explicitamente fornecidas pelo idioma com o qual ele não está tão familiarizado, e assumir que haveria problemas como resultado.
Por exemplo, alguém que não usa o Python regularmente pode supor que os usuários do Python tenham problemas regularmente por causa do recuo. Ou alguém não familiarizado com o Common Lisp pode observar a falta de bibliotecas polidas, mas não sabe que a FFI é poderosa o suficiente para escrever wrappers para bibliotecas C com esforço nominal. Alguém não familiarizado com Ruby pode ver a falta de digitação estática e assumir que erros de tipo seriam um grande problema. Finalmente, alguém não familiarizado com Haskell pode ver a falta de atribuição e assumir que não pode lidar com o estado.
Agora, tudo isso pressupõe que os idiomas sejam realmente comparados apenas por seus méritos técnicos.
fonte
Uma linguagem é uma ferramenta. Dito isto, eu já vi ferramentas muito, muito ruins antes. Ninguém quer trabalhar com um martelo cuja cabeça pode voar e atingir outro carpinteiro no estômago. Da mesma forma, se você percebesse que o martelo de seu colega estava nessa forma, provavelmente se afastaria deles quando o usassem.
Também é importante entender realmente qual é a ferramenta. Você não pode usar uma chave de fenda e um martelo alternadamente (embora alguns tentem desesperadamente). Inferno, você nem pode usar todos os martelos de forma intercambiável; você precisa de um trenó para algumas coisas, um martelo para outras e uma aderência para outras. Se você usar a ferramenta inadequada, na melhor das hipóteses, fará um trabalho pior, na pior das hipóteses, se machucará ou será um colega de trabalho.
Em outras palavras, a comparação de idiomas é útil, pois pode evitar acidentes no local de trabalho. Tirando o acima da metáfora; é difícil saber sem comparar se um determinado idioma é uma marreta, uma chave de fenda, uma dremel ou uma serra de mesa, porque (ao contrário das ferramentas físicas) você não pode realmente dizer apenas olhando. Você precisa pensar nos recursos que ele oferece, vê-lo em ação (tentando ler partes significativas de uma grande base de código escrita nele) e, idealmente, testá-lo também. Cuidado para não cometer o erro de escrever Cobol em Python (por exemplo). Você precisa usar o novo idioma idiomamente, o que significa aprendê-lo bem. É provavelmente por isso que Bjarne diz que a maioria das pessoas não se esforça o suficiente para fazer uma comparação útil.
O tipo de comparação que começa com "Eu gosto do Blub" e continua com "Bem, eu gosto do Blub ++" é completamente inútil. Se acaba selecionando um idioma, tudo o que realmente diz é quem é mais persuasivo em um determinado grupo e / ou qual empresa de idiomas tem o maior orçamento de publicidade. Se você analisar o que uma linguagem pode fazer, quais tarefas são adequadas e onde estão suas deficiências sem recorrer a argumentos irracionais ou preconceitos pessoais, isso pode ser realmente útil.
fonte
Que, exceto em algumas raras (e - raras - como em "isso acontece uma ou duas vezes na vida de um sistema solar"), geralmente leva a guerras linguísticas, em variante mais ou menos forte, e muito raramente deixa alguma prática e conclusões úteis.
Idiomas são ferramentas, não religiões. Você não compara um martelo com uma chave de fenda, mas usa aquele que se adapta melhor à sua tarefa e maneira de pensar / educação / nível de abstração necessário. Além disso, como quem faz a comparação é enviesado pelo fato de conhecer pelo menos um dos dois, ou pelo menos preferir um dos dois, é difícil encontrar um critério realmente objetivo para compará-los (existem exceções).
fonte
Se tratarmos as linguagens como produtos e todos os desenvolvedores como o mercado, podemos chegar a algumas conclusões interessantes:
fonte
Stroustrup está completamente correto.
A maioria das "comparações de idiomas" é realizada com um resultado específico em mente, que é "mostrar" que um é "superior" ao outro.
Geralmente, isso significa escrever um trecho de código nos dois idiomas e medir o desempenho do executável gerado, escrevendo um idioma altamente otimizado e o outro deliberadamente com desempenho ruim. É assim que o mito "Java é lento" se perpetua. Os "testes" para "provar" são escritos deliberadamente para não medir o desempenho da execução do código Java, mas o tempo de inicialização da JVM. Pegue, por exemplo, uma operação matemática simples e faça um loop 100 vezes, faça isso em Java e C ++, compile a versão C ++ com a otimização ativada, a versão Java sem sinalizadores de otimização e execute as duas versões executáveis. A classe Java executará muito mais tempo que o executável C ++, simplesmente devido ao tempo de inicialização da JVM. Isso não mostra que "Java é lento" mas que o tempo de inicialização da JVM significa que o Java não é a ferramenta adequada para processos de execução muito curtos (nenhuma linguagem interpretada ou qualquer outra coisa que exija o carregamento de um tempo de execução). Se o teste foi escrito corretamente para ser executado por um período de várias horas com bases de código e sistemas de compiladores usando níveis equivalentes de otimização, os resultados são bem diferentes (provavelmente mostrando um desempenho bastante semelhante).
E esse é apenas um exemplo (com o qual estou familiarizado).
fonte
Como gerente de projeto, você deve fazer algumas comparações para escolher o idioma em que seu software será codificado. Os critérios podem não ser técnicos:
fonte