Conceitos abandonados no próximo standard de C++ - C++ - Portugal-a-Programar
Conceitos abandonados no próximo standard de C++
Por OldCoder, 6 de Agosto de 2009 em C++
É verdade: para quem ainda não sabia, o C++0x já não vai incluir os inovadores e promissores conceitos (para quem não está familiarizado, há uns quantos vídeos da Google sobre conceitos
Detalhes para os motivos por trás da desistência da comissão do C++ standard podem ser encontrados nesta entrevista a Bjarne Stroustrup. O argumento mais forte para esta desistência é o da complexidade. Com o qual até concordo.
No entanto, os incrementos à STL (finalmente, um standard para multithreading) e outras funcionalidades novas tais como a sintaxe unificada para listas e construtores e a semântica de movimento, permanecem!
Acham que o abandono de conceitos foi uma medida sensata?
É difícil responder se foi sensata sem conhecer o estado exacto da implementação. Se estavam realmente a ter problemas em implementar, como o Stroustrup disse, então acho que fizeram bem em removê-los do standard.
Não conhecia essa parte da proposta do C++0x, mas pelo que vi era algo bastante bem vindo, na linha dos interfaces de Java e C#, embora com uma semântica diferente e mais poderosos.
Mas também não vamos morrer sem eles... espero ainda programar quando decidirem incluir concepts num próximo standard da linguagem
Epa, eu sinceramente gostava disto só mesmo para ter melhores erros. E acho que era mesmo uma das maiores vantagens desta funcionalidade. Mas se tornava a linguagem demasiado complexa (mais do que já é) então acho que até fizeram bem. Quando tiverem esta funcionalidade mais bem planeada, pode ser que a adicionem.
Alguns dos novos conceitos de facto pareciam mexer um bocado demasiado na sintaxe (que por si só já é complexa o suficiente), mas se é um novo standard, temos que nos habituar. As alterações à STL parecem interessantes...
Um dos problemas que levaram ao abandono dos concepts foi a manutenção da compatibilidade da linguagem com o standard anterior. A maioria dos programadores nem ia dar pelas diferenças (com excepção das mensagens de erro mais precisas), pelo que a complexidade da sintaxe não se iria alterar. Apenas ficariam disponíveis mais recursos, os quais não iriam ser impostos a quem não os quisesse utilizar.
Podias continuar a desenvolver bibliotecas com templates sem nunca tocar nos concepts, ou podias utilizá-los para melhorar a experiência de quem utilizasse essas bibliotecas.