Impressionante C++ moderno
Uma coleção de recursos em C++ moderno.
O objetivo é coletar uma lista de recursos para ajudar as pessoas a aprender e aproveitar o C++ 11 moderno e além.
Contribuindo
Para adicionar, remover ou alterar itens da lista: envie uma solicitação pull ao repositório GitHub.
Livros
- Um tour por C++ (Bjarne Stroustrup) [C++17/11/20]
- A linguagem de programação C++ (Bjarne Stroustrup) [C++11]
- C++ moderno eficaz (Scott Meyers) [C++11/14]
- Visão geral do novo C++ (Scott Meyers) [C++11/14]
- Diretrizes básicas de C++ (Bjarne Stroustrup, Herb Sutter) [C++11/14/17] - Diretrizes para usar C++ moderno.
- Simultaneidade C++ em ação (Anthony Williams) [C++11/14/17] - Referência e guia para escrever código multithread com C++ padrão.
- C++17 - O guia completo (Nicolai M. Josuttis) [C++17] - Fornece orientação sobre como usar os recursos de linguagem e biblioteca do C++17.
- Professional CMake (Craig Scott) – Um guia prático para usar o CMake para construir seus projetos C++.
- Tutorial C++ moderno: C++ 14/11/17/20 On the Fly (Changkun Ou) - O livro afirma ser "On the Fly". Sua intenção é fornecer uma introdução abrangente aos recursos relevantes do C++ moderno (antes de 2020).
Para obter um guia abrangente sobre livros C++, consulte Stackoverflow Definitive C++ Book Guide and List.
Comunidade
Encontre as últimas notícias e atualizações do C++:
- Notícias, status e discussão sobre C++ padrão.
Ouça os podcasts C++ mais recentes:
- CppCast (YouTube, Twitter) – O primeiro podcast de desenvolvedores C++ para desenvolvedores C++!
- Cpp.chat (YouTube, Twitter) - Comentários sobre c++ e questões de interesse para programadores c++.
- C++ Weekly - Vídeos educacionais de Jason Turner.
Leia as últimas propostas do padrão C++:
- Artigos do Comitê de Padrões C++.
Discuta tudo relacionado ao C++:
- r/cpp - O subreddit C++.
- C++ Slack – O espaço de trabalho C++ Slack.
- Grupo CoreHard Telegram.
Faça suas perguntas sobre C++:
- r/cpp_questions – Um subreddit para perguntas e respostas em C++.
- Stackoverflow C++/C++11/C++14/C++17/C++20 - Perguntas sobre Stackoverflow sobre C++.
Talvez sua pergunta já tenha sido respondida em um FAQ?:
- Super perguntas frequentes sobre C++.
- Perguntas frequentes sobre C++ 11.
Vá a uma das muitas conferências C++:
- Lista de conferências C++ futuras e anteriores.
Encontre grupos de usuários C++:
- Lista de grupos de usuários em C++.
- Lista de grupos de usuários no Super-FAQ do C++.
- Encontros C/C++.
- Pesquise canais começando com
#ug
no C++ Slack.
Palestras
Lista TODO de boas palestras sobre como simplificar o código usando recursos C++ 17/11/20
Comece com SG20 Education e vídeos recomendados para ensinar C++.
- CppCon Talks - Palestras da Conferência C++.
- CppCon 2014: Bjarne Stroustrup "Simplifique as tarefas simples!"
- CppCon 2014: Herb Sutter "Programação sem bloqueio (ou malabarismo com lâminas de barbear), Parte I"
- CppCon 2014: Herb Sutter "Programação sem bloqueio (ou malabarismo com lâminas de barbear), Parte II"
- CppCon 2014: Scott Meyers "Tipo de dedução e por que você se importa"
- CppCon 2015: Bjarne Stroustrup "Escrevendo um bom C++ 14"
- CppCon 2015: Herb Sutter "Escrevendo bom C++ 14... por padrão"
- CppCon 2016: Chandler Carruth “Lixo entra, lixo sai: discutindo sobre comportamento indefinido...”
- CppCon 2016: Herb Sutter "Liberdade de vazamento em C++... por padrão."
- CppCon 2017: Jason Turner "C++17 prático"
- CppCon 2018: Jonathan Boccara “105 algoritmos STL em menos de uma hora”
- code::dive Conference 2014 - Scott Meyers: CPU Caches e por que você se importa (slides)
- code::dive Conference 2015 - Andrei Alexandrescu - Writing Fast Code I (slides)
- code::dive Conference 2015 - Andrei Alexandrescu - Writing Fast Code II (slides)
- C++Now Talks - Palestras da conferência C++Now.
- Tornando-se nativo em 2012: modelos variados são funádicos
- Tornando-se nativo 2013: Stephan T Lavavej - "Não ajude o compilador"
- Tornando-se nativo em 2013: Sean Parent - "Tempero C++"
Blogues
- Blog C++ de Andrzej - Diretrizes e reflexões sobre C++.
- Blog de Anthony Williams
- Integrado na Academia - John Regehr, Professor de Ciência da Computação, Universidade de Utah, EUA.
- Eric Niebler
- C++ Fluente - Código Expressivo em C++.
- Guru da Semana (novos posts) - Uma série regular de problemas de programação C++ criados e escritos por Herb Sutter.
- Guru da Semana (postagens mais antigas) - Postagens mais antigas do Guru da Semana.
- Reflexões sobre C++ de Marshall
- Blog de Paulo Fultz II
- Prestando na programação
- Simplifique C++ - Escreva C++ limpo e de fácil manutenção.
- Sticky Bits - Um blog que analisa o desenvolvimento de software para sistemas embarcados e em tempo real.
- Sutter's Mill - Herb Sutter no desenvolvimento de software.
- A Visão de Aristeia - Atividades Profissionais e Interesses de Scott Meyers.
- Blog da equipe do Visual C++
- Por que um corvo é como uma escrivaninha?
Sites
- Melhores Práticas de C++ - Coleção Colaborativa de Melhores Práticas de C++.
- Padrões C++ - Um repositório de padrões C++ modernos.
- Referência C++ - referência C++.
- C++ por exemplo - Aprenda C++ por exemplo!
Modelos iniciais de projeto
- ModernCppStarter – Um modelo para iniciar projetos C++ modernos usando CMake, CI, cobertura de código, formato clang, gerenciamento de dependências reproduzíveis e muito mais.
- modern-cpp-template – Um modelo para projetos C++ modernos usando CMake, Clang-Format, CI, testes de unidade e muito mais, com suporte para inclusão downstream.
- cmake_template – Um modelo de projeto CMake para você começar a usar C++ e ferramentas.
- Pitchfork - Pitchfork é um conjunto de convenções de projeto C++.
Bibliotecas
Esta não deveria ser uma lista abrangente de todas as bibliotecas C e C++. É uma lista de bibliotecas modernas de alta qualidade com aplicabilidade geral (serialização, banco de dados, testes, etc.) ou bibliotecas de alta qualidade com uso inovador de novos recursos C++.
Pia de cozinha / Estrutura
- abseil - Abseil é uma coleção de código aberto de código C++ (compatível com C++ 11) projetada para aumentar a biblioteca padrão C++.
- Boost - Coleção de bibliotecas C++.
- Folly - Biblioteca de código aberto do Facebook.
- POCO - As bibliotecas POCO C++ são poderosas bibliotecas C++ de plataforma cruzada para a construção de aplicativos baseados em rede e Internet que são executados em desktops, servidores, dispositivos móveis, IoT e sistemas embarcados.
- nonstd-lite - Pai dos repositórios *-lite, um caminho de migração para recursos pós-C++11 para ambientes pré-C++11.
- xtd - Estrutura C++ 17/20 moderna para criar aplicativos de console (CLI), formulários (GUI como WinForms) e tunit (testes de unidade como Microsoft Unit Testing Framework) em Windows, macOS, Linux, iOS e Android.
Teste
- Testes de aprovação para C++ - Testes de aprovação nativos para C++ em Linux, Mac e Windows.
- autocheck - clones QuickCheck e SmallCheck para C++.
- Bandit – Uma estrutura somente de cabeçalho para C++ 11 que deseja tornar o trabalho com testes unitários uma experiência agradável.
- Boost:UT - Framework C++20 μ(micro)/Teste Unitário, cabeçalho único, sem necessidade de macros.
- Boost.Test - Estrutura de teste de reforço.
- Catch - Uma estrutura moderna, nativa em C++, somente cabeçalho, para testes de unidade, TDD e BDD.
- clean-test - Uma estrutura de teste moderna em C++-20.
- doctest - A estrutura de teste de cabeçalho único C++ 11/14/17/20 mais rápida e rica em recursos para testes de unidade e TDD.
- Fakeit - simulação de C++ facilitada. Uma biblioteca simples, mas muito expressiva, apenas de cabeçalhos para simulação de c++.
- Googletest - Estrutura de testes e simulação do Google.
- Mull - Ferramenta prática de teste de mutação para C e C++
- rapidcheck - clone QuickCheck para C++.
- informante - Estrutura de teste leve em C++20.
Comparativo de mercado
Bibliotecas e frameworks para criação de micro-benchmarks.
- Celero - Biblioteca/estrutura de autoria de benchmark C++.
- Referência do Google? - Uma biblioteca de suporte de microbenchmark.
- hayai - a estrutura de benchmarking C++.
- Nonius - Uma estrutura de micro-benchmarking C++. Biblioteca/estrutura de autoria de benchmark C++.
- nanobench - Funcionalidade de microbenchmarking de cabeçalho único simples, rápida e precisa para C++ 11/14/17/20
Registro
- fmtlog - Uma biblioteca de registro no estilo fmtlib com latência em nanossegundos.
- spdlog - Biblioteca de registro rápida em C++.
- loguru - Uma biblioteca de log C++ leve e flexível
Rosqueamento
- concurrentqueue - Uma fila simultânea rápida, multiprodutor e multiconsumidor, sem bloqueio para C++ 11.
- Cpp-Taskflow - Biblioteca moderna de programação de tarefas paralelas em C++
- Junção - Estruturas de dados simultâneas em C++.
- MPMCQueue - Uma fila limitada, multiprodutor e multiconsumidor, sem bloqueio, escrita em C++ 11.
- SPSCQueue - Uma fila limitada, de produtor único, de consumidor único, sem espera e sem bloqueio, escrita em C++ 11.
- Threading Building Blocks - Threading Building Blocks (TBB) é uma biblioteca de modelos C++ desenvolvida pela Intel para programação paralela em processadores multi-core. Usando o TBB, um cálculo é dividido em tarefas que podem ser executadas em paralelo. A biblioteca gerencia e agenda threads para executar essas tarefas.
- execq - Fila inteligente que executa tarefas de maneira semelhante a threadpool (serial/concorrente) em C++ 11.
- concurrencpp - Uma biblioteca de simultaneidade geral contendo tarefas, executores, temporizadores e corrotinas C++20 para governar todos eles.
Análise e serialização
- json? - JSON para C++ moderno.
- jsoncpp – Uma biblioteca C++ para interagir com JSON.
- toml++ - Uma biblioteca C++17 somente de cabeçalho para analisar TOML v0.5.0 e posterior.
- tinytoml -Uma biblioteca C++11 apenas de cabeçalho para análise de TOML.
- yaml-cpp - Um analisador e emissor YAML em C++.
- cpptoml - Uma biblioteca somente de cabeçalho para analisar arquivos de configuração TOML.
- cereal - Uma biblioteca C++11 para serialização.
- cista - Uma biblioteca C++17 para serialização binária de cópia zero de alto desempenho.
- simdjson - Acelere a análise de JSON por si só usando instruções SIMD comumente disponíveis
- Boost.JSON – Uma biblioteca JSON com suporte robusto para alocadores personalizados.
- hjson-cpp - Uma biblioteca C++11 para leitura e gravação de arquivos Hjson e/ou JSON.
- json_struct - analisador JSON de cabeçalho único e alto desempenho, analisando diretamente de e para estruturas C++.
- daw_json_link - serialização e análise JSON rápida e conveniente em C++
Formatação e modelos de strings
- {fmt} - Biblioteca de formatação pequena, segura e rápida.
- Inja - um mecanismo de modelo para C++ moderno.
- Bigode - Modelos de texto de bigode em C++ 11.
- tinyformat.h - Biblioteca de substituição printf mínima e segura para C++.
- pprint - Impressora bonita para C++ moderno.
Scripts
- sol2 - ligação da biblioteca C++ a Lua.
- ChaiScript - Uma linguagem de script incorporada fácil de usar para C++.
- pybind11 – Operabilidade perfeita entre C++11 e Python.
Web/HTTP
- Beast - HTTP e WebSocket construídos em Boost.Asio em C++11.
- cpprestsdk - O C++ REST SDK é um projeto da Microsoft para comunicação cliente-servidor baseada em nuvem em código nativo usando um design de API C++ assíncrono moderno. Este projeto visa ajudar os desenvolvedores C++ a se conectar e interagir com serviços.
- cpr - Solicitações C++: Curl for People, uma versão espiritual de solicitações Python.
- Crow - Um microframework rápido e fácil de usar para criação de servidores web (inspirado em Python Flask).
- dmbcs-micro-server - JSON, HTML, texto e PNGs baseados em C++20 sobre HTTP; maneira simples de incorporar um servidor em seu aplicativo para fornecer uma UI baseada na web.
- Drogon - Uma estrutura de aplicativo HTTP de alto desempenho baseada em C++ 14/17
- oat++ - Framework Web de alto desempenho (C++11, dependência zero).
- pistache - Uma elegante estrutura C++ REST.
- restbed - A estrutura Restbed traz funcionalidade RESTful assíncrona para aplicativos C++ 11.
Banco de dados
- mongo-cxx-driver - Driver C++ para MongoDB.
- redox - Cliente C++ 11 moderno, assíncrono e extremamente rápido para Redis.
- sqlite_orm - poderosa biblioteca SQLite3 ORM somente de cabeçalho para C++ 14.
- sqlite3pp - wrapper C++ da API SQLite3.
- sqlpp11 - Uma biblioteca de modelos SQL de tipo seguro para C++.
- libpqxx – A API cliente C++ oficial para PostgreSQL.
- TinyORM - Biblioteca C++ ORM moderna.
BioC++
- SeqAn – A moderna biblioteca C++ para análise de sequência (C++17, C++20).
Diversos
- ASAP – biblioteca somente de cabeçalho para analisar, exibir, operar e iterar em datas.
- BigIntegerCPP - Uma grande biblioteca de inteiros C++ 11 com alto desempenho eficaz, de natureza simplista e também clara aos olhos.
- CAF - Uma implementação de código aberto do modelo de ator em C++.
- Cinder - Cinder é uma biblioteca gratuita e de código aberto para codificação criativa de qualidade profissional em C++.
- Conduit - Streams de alto desempenho baseados em Coroutine TS.
- cppitertools - implementação de itertools (python) para C++ 14
- cxxopts - Analisador leve de opções de linha de comando C++.
- date - Uma biblioteca de data e hora baseada no cabeçalho C++ 11/14/17.
- docopt.cpp - docopt cria lindas interfaces de linha de comando.
- EnTT - Um sistema de componente de entidade (ECS) somente de cabeçalho, rápido e confiável para C++ moderno.
- Font Chef - Uma biblioteca C99 e C++14 para cozinhar fontes e renderizar texto
- HashLibPlus - Uma biblioteca C++ 11 que fornece uma interface fácil de usar para calcular hashes e somas de verificação de strings, arquivos, streams, bytearrays e dados não digitados, para mencionar apenas alguns. Ele também oferece suporte a hash incremental.
- IntX - Uma porta C++ 11 da biblioteca IntX de precisão arbitrária com velocidade, sobre implementação de algoritmos de multiplicação/divisão O(N * log N).
- iod - Utilitários de metaprogramação para C++14.
- Magic Enum - Reflexão estática para enums (para string, de string, iteração) para C++ moderno, funciona com qualquer tipo de enum sem qualquer macro ou código clichê.
- Wise Enum - Reflexão estática para enums semelhantes ao Magic Enum, mas funciona com C++ 14/11/17.
- Nameof - Uma biblioteca C++ 17 somente de cabeçalho fornece macros e funções nameof para obter o nome simples de variável, tipo, função, macro e enum.
- PEGTL - Biblioteca de modelos de gramática de expressão de análise (C++ 11, somente cabeçalho).
- random - Um cabeçalho aleatório simples e conveniente apenas para C++ moderno.
- rang - Uma biblioteca C++ 11 simples, moderna e apenas de cabeçalho para cores em seu terminal.
- range-v3 - Biblioteca de intervalo experimental para C++ 14/11/17.
- SimpleBaseLib4CPP - Uma biblioteca simples de codificação de base C++ 11 que fornece no momento suporte para codificação e decodificação de várias bases, como Base16, Base32 (várias variantes), Base58 (várias variantes), Base64 (várias variantes). [MIT]
- simple_match - Correspondência de padrão simples apenas de cabeçalho para c++14.
- SRL-CPP - Uma biblioteca construtora Simple Regex Language escrita em C++ 11 que fornece uma interface fácil de usar para construir expressões regex simples e complexas. [MIT]
- tweeny - Uma biblioteca de interpolação apenas de cabeçalho com mais de 30 funções de atenuação.
- Vireo – Uma biblioteca de processamento de vídeo leve e versátil do Twitter.
- indicadores - Indicadores de atividade para C++ moderno.
- AssociatedEnum - biblioteca somente de cabeçalho para C++ para enumerações com valores associados.
- openFrameworks - um kit de ferramentas C++ de código aberto para codificação criativa.
- tabulate - Criador de tabelas para C++ moderno.
Ferramentas
Diversos
- formato clang? - Uma ferramenta para formatar código C++.
- clangd - entende seu código C++ e adiciona recursos inteligentes ao seu editor: conclusão de código, erros de compilação, definição e muito mais.
- Compiler Explorer - Explore interativamente a saída do assembly do seu código C++.
- cquery - servidor de linguagem C/C++ que suporta base de código de vários milhões de linhas, desenvolvido com libclang. Emacs, Vim, VSCode e outros com suporte a protocolo de servidor de linguagem. Referências cruzadas, preenchimento, diagnóstico, destaque semântico e muito mais (não há mais commits desde 27 de novembro de 2018)
- ccls - servidor de linguagem C/C++/ObjC que suporta referências cruzadas, hierarquias, conclusão e realce semântico, bifurcado de cquery, que está em desenvolvimento ativo
- irony-mode - modo secundário AC/C++ para Emacs desenvolvido com libclang.
- modern-cpp-font-lock-mode - Suporte de destaque de sintaxe para C++ moderno com emacs
Análise dinâmica
- desinfetantes? - Este projeto é o lar dos Sanitizers: AddressSanitizer, MemorySanitizer, ThreadSanitizer, LeakSanitizer e muito mais.
- Valgrind - é uma estrutura de instrumentação para construção de ferramentas de análise dinâmica. Existem ferramentas Valgrind que podem detectar automaticamente muitos bugs de gerenciamento de memória e threading e criar perfis detalhados de seus programas. Você também pode usar Valgrind para construir novas ferramentas.
Análise estática
- cppcheck - é uma ferramenta de análise estática para código C/C++. Ele fornece análise de código exclusiva para detectar bugs e se concentra na detecção de comportamento indefinido e construções de codificação perigosas.
- clang-arrumado? - é uma ferramenta “linter” C++ baseada em clang. Seu objetivo é fornecer uma estrutura extensível para diagnosticar e corrigir erros típicos de programação, como violações de estilo, uso indevido de interface ou bugs que podem ser deduzidos por meio de análise estática. clang-tidy é modular e fornece uma interface conveniente para preencher novos cheques.
- clang-analyzer - é uma ferramenta de análise de código-fonte que encontra bugs em programas C, C++ e Objective-C. Ele implementa análise interprocedimental sensível ao caminho com base na técnica de execução simbólica.
Confuso
- American fuzzy lop - American fuzzy lop é um fuzzer voltado para a segurança.
- hongfuzz - Um fuzzer orientado à segurança, orientado por feedback, evolutivo e fácil de usar, com opções de análise interessantes.
- libFuzzer - Uma biblioteca para testes fuzz guiados por cobertura.
Sistema de construção
- Bazel - é um sistema de construção rápido, escalonável, multilíngue e extensível.
- build2 - é um conjunto de ferramentas de construção multiplataforma para desenvolver e empacotar código C e C++.
- CMake? - Família de ferramentas multiplataforma projetadas para construir, testar e empacotar software.
- Meson - é um sistema de compilação de código aberto destinado a ser extremamente rápido e, ainda mais importante, o mais amigável possível.
- XMake - é um utilitário de construção multiplataforma baseado em Lua.
Gerenciamento de pacotes
- Buckaroo - Gerenciador de pacotes poliglota totalmente descentralizado para C++ e amigos
- cget - recuperação do pacote CMake.
- conan - gerenciador de pacotes C/C++.
- CPM - Um script CMake para gerenciamento de dependências de plataforma cruzada sem configuração.
- Hunter - Gerenciador de pacotes multiplataforma para C++.
- vcpkg - Gerenciador de biblioteca C++ para Windows, Linux e MacOS
- xrepo - Um gerenciador de pacotes C/C++ multiplataforma baseado em Xmake.
Sobre
Esta lista foi compilada por Erik Rigtorp com a ajuda da comunidade C++:
- rigtorp.se
- [email protected]
- github.com/rigtorp
- twitter.com/rigtorp
- linkedin.com/in/rigtorp