Aviso: isso não é tanto uma resposta quanto uma crítica da conversa à qual o "usuário desconhecido" vinculou em sua resposta.
Seu primeiro ponto principal é o (supostamente) "padrão sempre em mudança". Na realidade, os exemplos que ele fornece relacionam-se a alterações no C ++ antes de haver um padrão. Desde 1998 (quando o primeiro padrão C ++ foi finalizado), as alterações na linguagem foram mínimas - na verdade, muitos argumentariam que o problema real é que mais alterações deveriam ser feitas. Estou razoavelmente certo de que todo o código que está em conformidade com o padrão C ++ original ainda está em conformidade com o padrão atual. Embora seja um pouco menos certo, a menos que algo mude rapidamente (e inesperadamente), o mesmo também será verdadeiro com o próximo padrão C ++ (teoricamente, todo o código usadoexport
vai quebrar, mas praticamente não existe; do ponto de vista prático, não é um problema). Posso pensar em algumas outras linguagens, sistemas operacionais (ou muitas outras coisas relacionadas ao computador) que podem fazer tal afirmação.
Ele então entra em "estilos sempre em mudança". Mais uma vez, a maioria de seus argumentos é quase absurda. Ele tenta caracterizar for (int i=0; i<n;i++)
como "velho e preso" e for (int i(0); i!=n;++i)
"nova gostosura". A realidade é que, embora existam tipos para os quais essas mudanças possam fazer sentido, int
isso não faz diferença - e mesmo quando você pode obter algo, raramente é necessário escrever código bom ou correto. Mesmo na melhor das hipóteses, ele está fazendo uma montanha fora de uma montanha.
Sua próxima alegação é que o C ++ está "otimizando na direção errada" - especificamente, embora ele admita que o uso de boas bibliotecas seja fácil, ele afirma que o C ++ "torna quase impossível a escrita de boas bibliotecas". Aqui, acredito, é um dos seus erros mais fundamentais. Na realidade, escrever boas bibliotecas para quase qualquer idioma é extremamente difícil. No mínimo, escrever uma boa biblioteca requer a compreensão de algum domínio com problemas tão bem que seu código funciona para uma infinidade de aplicativos possíveis (ou relacionados a) nesse domínio. A maior parte do que o C ++ realmente faz é "elevar a fasquia" - depois de ver o quão melhor uma biblioteca pode ser, as pessoas raramente estão dispostas a voltar a escrever o tipo de coisa que teriam de outra forma.realmente bons codificadores escrevem algumas bibliotecas, que podem ser usadas (facilmente, como ele admite) pelo "resto de nós". Este é realmente um caso em que "isso não é um bug, é um recurso".
Não tentarei acertar todos os pontos na ordem (isso levaria páginas), mas pular diretamente para o ponto de fechamento. Ele cita Bjarne dizendo: "a otimização completa do programa pode ser usada para eliminar tabelas de funções virtuais não utilizadas e dados RTTI. Essa análise é particularmente adequada para programas relativamente pequenos que não usam vínculo dinâmico".
Ele critica isso fazendo uma afirmação sem suporte de que "Este é um problema realmente difícil", chegando até a compará-lo ao problema de parada. Na realidade, não é nada disso - de fato, o vinculador incluído no Zortech C ++ (praticamente o primeiro compilador C ++ para MS-DOS, nos anos 80) fez isso. É verdade que é difícil ter certeza de que toda parte de dados possivelmente estranhos foi eliminada, mas ainda é inteiramente razoável fazer um trabalho bastante justo.
Independentemente disso, porém, o ponto muito mais importante é que isso é totalmente irrelevante para a maioria dos programadores em qualquer caso. Como todos nós que desmontamos um pouco de código sabem, a menos que você escreva a linguagem assembly sem nenhuma biblioteca, seus executáveis quase certamente contêm uma quantidade razoável de "coisas" (código e dados, em casos típicos) que você provavelmente nem sabe, para não mencionar que realmente está usando. Para a maioria das pessoas, na maioria das vezes, isso simplesmente não importa - a menos que você esteja desenvolvendo para os menores sistemas embarcados, esse consumo extra de armazenamento é simplesmente irrelevante.
No final, é verdade que esse discurso retórico tem um pouco mais de substância do que a idiotice de Linus - mas isso está dando a ela exatamente o maldito elogio que merece.
virtual
funções, certo?