Descobrindo o C++ Moderno
Descobrindo o C++ Moderno
Resumo:
Introdução
O livro «Descobrindo o C++ Moderno» (título original Discovering Modern C++) de autoria de Peter Gottschling não é mais uma introdução à linguagem, mas sim um tutorial completo para quem já conhece os fundamentos do C++ e deseja dominar seus recursos modernos. A edição de 2021 abrange os padrões C++11, C++14, C++17 e C++20, tornando-o um dos guias mais atualizados disponíveis atualmente. O livro tem 608 páginas de material denso, mas bem estruturado.
Sobre o que é este livro?
O livro é construído como uma imersão progressiva nos mecanismos-chave do C++ moderno. O autor não perde tempo explicando a sintaxe básica (variáveis, loops, funções), mas vai direto aos tópicos que diferenciam o C++ profissional do acadêmico:
- Ponteiros inteligentes (unique_ptr, shared_ptr, weak_ptr) e gerenciamento de memória sem vazamentos.
- Semântica de movimentação (move semantics) e encaminhamento perfeito (perfect forwarding).
- Expressões lambda e closures — das simples às complexas com captura de estado.
- Templates — dos básicos aos variadic templates e SFINAE.
- Biblioteca Padrão de Templates (STL) — contêineres, algoritmos, iteradores, objetos função.
- Paralelismo e concorrência — std::thread, mutexes, operações atômicas, futures.
- Novos recursos do C++17/20 — std::optional, std::variant, std::any, conceitos (concepts), corrotinas (coroutines) e ranges.
- Desempenho — como escrever código rápido e como fazer profiling.
Para quem é este livro?
O livro é voltado para programadores que já escrevem em C++ (ou em outra linguagem compilada) e desejam migrar para os padrões modernos. Será útil para:
- Desenvolvedores que trabalham com código legado em C++98/03 e desejam modernizá-lo.
- Estudantes de graduação em áreas técnicas que estudam programação de sistemas.
- Engenheiros migrando de C ou Java para C++ e que precisam de um entendimento profundo dos idiomas da linguagem.
- Todos que se preparam para entrevistas de C++ em grandes empresas de TI (Google, Microsoft, JetBrains, etc.).
O que o leitor aprenderá?
Após a leitura, você será capaz de:
- Escrever código seguro e eficiente usando ponteiros inteligentes e RAII.
- Entender e aplicar semântica de movimentação para otimização de desempenho.
- Criar algoritmos genéricos com templates e conceitos.
- Usar lambdas para processamento conciso de dados.
- Trabalhar com concorrência e sincronização sem condições de corrida.
- Aplicar novos tipos do C++17/20 (optional, variant, any) para um código mais expressivo.
- Projetar bibliotecas e APIs amigáveis ao usuário.
Pontos fortes do livro
1. Atualidade. O livro abrange padrões até C++20, incluindo novidades como corrotinas e ranges. Isso é raro mesmo entre publicações em inglês de 2021-2023.
2. Profundidade sem complexidade excessiva. O autor explica tópicos complexos (como SFINAE ou move semantics) com exemplos que podem ser executados e experimentados imediatamente. Ele não se aprofunda em meandros acadêmicos, focando na aplicação prática.
3. Estrutura. Cada capítulo começa com uma breve introdução e termina com um resumo e exercícios. Os exercícios não são "escreva uma calculadora", mas sim tarefas que testam a compreensão dos mecanismos modernos (por exemplo, implementar seu próprio unique_ptr ou escrever uma função template que funcione com qualquer contêiner).
4. Código. Todos os exemplos são compilados e testados em vários compiladores (GCC, Clang, MSVC). O autor dá dicas sobre a escolha da versão do compilador e das flags.
5. Desempenho. O livro tem muito