ScenePt » BBS » Programação e Hardware

Life is too short for X, X = C++

HugoDaniel
10 meses

O que não faltam praí são zelotes do C++, essa linguagem inutil, argumentos típicos a seu favor são:

"É eficiente":

Na teoria 20% do tempo dos projectos em C++ está destinado para optimizações, visto que, como disse um dos 'reis' da computação, "premature optimization is the root of all evil". Na prática esse tempo é gasto a descobrir porque é que a memória do computador desaparece toda assim que se mete o programa a correr. Para grandes projectos as verificações necessárias para garantir uma estabilidade mínima fazem com que o C++ trabalhe muito (leia-se *MUITO*) abaixo dos 80% de performance conseguidos por outras linguagens de mais alto-nível. Para além de que o código (mesmo sem optimizações) simplesmente não é mantível, mesmo com um bom documento de requisitos. (win api anyone?)

"Dá-me controlo":

Se trabalhar em baixo nível é sinónimo de "ter controlo", então porque é que não estamos todos a programar em Assembly ?
Para além de que este argumento é falacioso pois só fazendo overload dos operadores new, e delete é que se consegue uma gestão de memória decente e a possibilidade de eliminar a maioria dos mallocs/frees do ciclo principal de execução (que em C++ acabam por ir todos lá parar, yupiii).

"É compatível":

Sim, existe um compilador de C++ para muitas plataformas. Pena que a linguagem seja incompatível até com ela própria. Graças ao name mangling do linker ter sido excluído das versões anteriores da especificação da linguagem (que, já agora, tem 310 páginas excluindo as libs), é *impossível* garantir que as bibliotecas feitas em C++ (.dll, .so ou .a) consigam ser linkadas por programas a serem feitos noutros compiladores (ou mesmo entre versões do mesmo compilador: YES). Solução: extern C em torno dos .h's e um nome único por função/instância de objecto, e boa sorte se a lib em questão fizer uso extensivo de templates ;)
http://en.wikipedia.org/wiki/Name_mangling#How_different_compilers_mangle_the_same_functions

"A comunidade é grande e existem muitos bons livros acerca da linguagem":
Existem também alguns manuais sobre como não-programar em C++, e outros tantos que explicam bastante bem porque é que a linguagem não presta. Estes são:
C++ Coding Standards, Effective C++, Exceptional C++, e mesmo o Design Patterns.

"É uma linguagem em desenvolvimento activo pela indústria"
Sim, e com uma especificação gigante (> 1000 páginas com libs), sem política de "deprecação", só vai ficar pior.

Podia ficar nisto a semana inteira, deixo aqui um link que resume bem estes e outros pontos:

http://www.fefe.de/c++/c%2B%2B-talk.pdf

ps
10 meses

c++ é tudo merda.

posta ai o teu engine em haskell.

HugoDaniel
10 meses

Isso é surpresa...

está a ser germinado.

zeroshift
10 meses

ah pah ... go make a demo about it

Jae686
10 meses

C++ ? Bah! Gimme C instead!

tester
10 meses

É. Os computadores são uma merda. Antigamente é que era. Demos para abacos e o pessoal fazia mais que certas pessoas. Nem electrões tinhamos!

Sim, e com uma especificação gigante

Diz isso quem está à mais de 1 ano a aprender Haskell para meter um cubo a rodar...

HugoDaniel
10 meses

Faz um ano em Setembro. Mas é um granda cubo :D

ps
10 meses

deve ter prai 12 arestas!

Jae686
10 meses

Bem admito que gostei do " http://www.fefe.de/c++/c%2B%2B-talk.pdf "

Estou a aprender C++ nas horas livres, e nao curto muito alguns dos conceitos presentes na linguagem...

xernobyl
10 meses

Nesse pdf não vi nenhum caso real. Qualquer linguagem de programação como ferramenta que é tem as suas vantagens e desvantagens. Existem chaves de fendas e chaves de cruz por alguma razão. Acho que esses gajos que se metem a analisar essas merdas são parvos e não têm vida. Para que raio é que isso interessa a alguem? Quanto muito interessa a quem desenvolve compiladores.

LittleCodingFox
3 meses

Não sei o que é mais triste. O facto de que nada do que ta nesse PDF do fefe.de n funcionar no Visual C++, ou o facto de usarem "code hacks" obscuros pra "provar" que C++ tem um "dark side"...

E quanto á coisa das libs e etc, há tools pra fazer com que as libs façam linkagem correctamente (pelo menos DLLs) entre GCC e qualquer Visual Studio .NET, pra n falar de que qualquer Visual Studio consegue linkar a versões antigas... AFAIK.

Também, C++ não é baixo nivel. Não é tão "alto nivel" como C# e Java e etc, mas isso é mais porque as libraries que vêm no compilador não são muito alto nivel anyway.

Se C++ não fosse alto nivel, teriamos de escrever prai 1500 linhas de codigo para fazer algo tão simples como uma classe que abrisse um ficheiro, lesse os dados desse ficheiro, e mostrasse no ecrã.

E também reparem que isto de performance e etc é relativo. A maior parte das linguagens "mais alto nivel" têm compilação JIT, o que as optimiza ao máximo para a plataforma em que estão a executar. Como C++ é uma linguagem nativa, isso não é possivel a não ser que se use um runtime manhoso.

Não digo que C++ seja perfeito... mas também não digo que seja tão mau como o querem fazer parecer. É como a guerra X contra Y: nunca acabará, e não produz nada util.

Responder

Tem de ter a sessão iniciada para escrever.