C++20: Guia Completo
C++20: Guia Completo
Resumo:
Introdução
O livro «C++20: Guia Completo» (título original — C++20: The Complete Guide) de Nicolai Josuttis não é apenas mais uma publicação sobre a linguagem de programação. É um trabalho fundamental, considerado por muitos uma das fontes mais autoritativas sobre o padrão C++20. Publicado em 2022, com 476 páginas, o livro abrange todas as principais novidades que mudaram radicalmente a aparência da linguagem. Para o site educacional PythonLib, focado no entendimento profundo de tecnologias, este livro será a ponte ideal entre o C++ clássico e seu paradigma moderno.
Sobre o que é este livro?
Nicolai Josuttis, conhecido por suas obras «C++17: The Complete Guide» e «The C++ Standard Library», demonstra mais uma vez sua maestria em explicar tópicos complexos. O livro é dedicado exclusivamente aos novos recursos introduzidos no padrão C++20. O autor não reescreve os fundamentos, mas foca nos quatro «pilares» da atualização: Conceitos (Concepts), Corrotinas (Coroutines), Módulos (Modules) e Ranges. Além disso, são detalhadas melhorias menores, porém importantes: comparação de três vias (operator <=>), inicializadores em range-based for, expressões constantes aprimoradas (constexpr), novos atributos e muito mais.
Para quem é este livro?
Esta publicação é estritamente para desenvolvedores experientes. Se você está começando a aprender C++ ou não conhece C++11/14/17, o livro pode parecer difícil. Josuttis pressupõe que o leitor domina templates, expressões lambda, semântica de movimento e a biblioteca padrão. O livro é ideal para:
- Programadores migrando de C++17 para C++20;
- Desenvolvedores de bibliotecas e frameworks;
- Arquitetos de software que desejam implementar expressões modernas;
- Professores que desejam se manter atualizados com os padrões mais recentes.
O que o leitor aprenderá?
Após a leitura, você será capaz de aplicar com confiança os seguintes recursos na prática:
- Conceitos: como impor restrições a parâmetros de template, tornando o código autodocumentado e melhorando as mensagens de erro;
- Corrotinas: mecanismo para escrever código assíncrono, geradores e computação preguiçosa sem bibliotecas externas;
- Módulos: substituição do modelo obsoleto de arquivos de cabeçalho, acelerando a compilação e isolando o código;
- Biblioteca Ranges: composição de algoritmos no estilo de programação funcional, trabalho com sequências infinitas;
- Operador spaceship (<=>): geração automática de operadores de comparação;
- Extensão constexpr: execução de cálculos complexos em tempo de compilação (incluindo alocação dinâmica de memória e funções virtuais);
- Novos tipos e sintaxe: char8_t, inicializadores em for, designated initializers e outros detalhes que simplificam o trabalho diário.
Pontos fortes do livro
A primeira coisa que chama a atenção é a estrutura. Cada capítulo é dedicado a um recurso e segue o princípio «do simples ao complexo». Josuttis não apenas lista a sintaxe, mas explica a motivação: por que esse recurso foi adicionado, quais problemas ele resolve e quais armadilhas existem. Em segundo lugar, a orientação prática. O código dos exemplos pode ser baixado do GitHub do autor e funciona de fato com compiladores modernos (GCC, Clang, MSVC). Em terceiro lugar, a honestidade. O autor fala abertamente sobre a imaturidade de alguns recursos (por exemplo, os módulos ainda têm suporte limitado), o que evita frustrações ao tentar compilar.
Menção especial merece o capítulo sobre corrotinas. Este é, sem dúvida, o tópico mais complexo do C++20, e Josuttis lida com ele de forma brilhante, analisando a estrutura interna do framework de corrotinas (promise_type, awaitable, awaiter) com exemplos simples.