logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

C++11: Introdução

C++11 é a nova versão da linguagem C++, definida pelo padrão ISO/IEC 14882:2011. O fato de ser um padrão ISO traz a vantagem de nenhum fabricante ser "dono" da linguagem. Mas isso também cria um problema comum em qualquer coisa que é decidida por comitê: é necessário um consenso entre os membros para que algo seja adicionado ou modificado, e isso torna o processo sempre mais lento. O último padrão C++, por exemplo, foi de 2003. 8 anos depois, finalmente temos uma nova versão.

(Isso me lembra de quando fui a um Coding Dojo no Google Brasil. No final, todo mundo deve escrever as opiniões sobre o Dojo em papeizinhos, um para vantagens, outro para desvantagens. Foram inúmeras as reações de inconformismo quando leram o papel que eu escrevi com uma desvantagem: "Democracia demais".)

Mas a espera valeu. Todos os novos recursos foram bem, digamos, "azeitados", e o padrão já nasceu com vários compiladores implementando uma parte considerável dele (isso demorou bem mais no C++03). Além da vantagem de quem vem por último: você aprende com os erros e acertos dos outros (como Java, C# && Python).

Os principais objetivos do novo padrão, segundo quem participou das discussões de definição da linguagem e segundo eu mesmo são:

  • Facilidades de linguagens modernas: O melhor exemplo é a implementação de lambda, que, antes tarde do que nunca, chegou ao C++. Mas, por tardar e consequentemente aprender com os acertos e erros dos outros, temos em C++ a melhor implementação entre as linguagens mainstream.
  • Facilidade para ensino: Essa veio do Stroustrup (o criador da linguagem), que de uns anos pra cá voltou a dar aulas de programação para iniciantes. No último encontro de C++ me perguntaram qual seria a vantagem do C++11 para iniciantes. Não consegui dar uma resposta objetiva, além de citar o fato de que uma linguagem melhor acaba virando uma linguagem mais fácil.
  • Melhorias na biblioteca padrão: A STL já estava mesmo precisando de uma atualizada, e resolveu-se unir o útil ao agradável: com o tempo, as bibliotecas mais estáveis e bem aceitas do Boost estão sendo incorporadas à biblioteca padrão. O C++11 tem std::threads, std::shared_ptr, std::function, e inúmeras melhorias que vou detalhar em posts futuros.
  • Acabar com “gambiarras” do Boost: Não sei se esse era realmente um dos objetivos iniciais, mas eu gostei disso ter acontecido. Acho metaprogramação em C++ um negócio muito legal, mas exotérico demais. Boost Bind é algo extremamente necessário para programação assíncrona, mas 100+ erros de compilação por esquecer uma vírgula ou um _1 é de matar. E o Boost Lambda, convenhamos, é uma gambiarra que cresceu demais e aprendeu a falar. Com o recurso de lambda da linguagem se tornam desnecessários o Boost.Bind e o Boost.Lambda. Foi bom enquanto durou, mas não sentirei saudades.

Em breve, posts detalhando cada ponto. Enquanto isso, você pode como sempre, ler a extensiva lista de novidades na Wikipedia.

Em 03/11/2011 13:23, por Rodrigo Strauss


  
 
 
Comentários
Daniel B.M. | website | em 02/02/2013 | #
Boa notícia. E pelo que eu vi na Wikipedia uma das alterações da nova versão é o aumento do desempenho e capacidade de trabalhar diretamente com hardware. Antes mesmo dessa versão, eu já achava que C++ era, dentre as linguagens de alto nível, "A Linguagem" para esse tipo de trabalho... Se essa alteração corresponder mesmo, então C++ conseguiu melhorar o que já fazia bem!
Rodrigo Strauss | website | e-mail | em 03/02/2013 | #
Na realidade não. A parte de desempenho continua igual. C++ sempre teve um bom desempenho (comparado com as outras linguagens) e sempre pode trabalhar com hardware.
Daniel B.M. | website | e-mail | em 04/02/2013 | #
Bem que eu desconfiava. O que parece é que já virou uma moda comum do marketing de muitos softs, quando a publicidade de suas novidades/atualizações exagera um pouco...
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::