8 pontos por xguru 2022-09-27 | 6 comentários | Compartilhar no WhatsApp
  • A equipe do Google Chrome listou cerca de 40 problemas que surgem ao adotar C++20 e organizou as soluções
  • O padrão C++ sai a cada 3 anos, e a primeira adoção no Chrome só acontece 3 anos após o lançamento
  • O C++20 traz muitas mudanças
    • descontinuações de suporte, reordenação de operadores de comparação, mudanças nas regras de agregação...
  • Problemas
    • o guia de estilo do Google é baseado em C++17
    • o suporte a C++20 no Clang está incompleto e requer um novo libc++
    • os binários do Windows ficam maiores
    • descontinuação do suporte a std::iterator (desde C++17)
    • novas palavras-chave como concept e requires foram adicionadas, o que causa conflito se já existirem nomes de variáveis
    • além de muitos outros

6 comentários

 
galadbran 2022-09-27

Ué… uma linguagem do porte de C++ não deveria gerar tantas mudanças que quebram compatibilidade, né… ou isso é só um preconceito meu…

 
qwery 2022-09-28

É por isso que C++ é uma linguagem estranha... A linguagem continua sendo atualizada de versão em versão, adicionando módulos, corrotinas e um monte de outras coisas, tentando fazer tudo sozinha, e quando sai uma funcionalidade, os compiladores só vão adicioná-la 4 ou 5 anos depois, e há diferenças no que cada compilador consegue fazer, com pequenas diferenças de sintaxe entre eles, e, a cada atualização de versão, coisas pequenas que você usava bem acabam desaparecendo, o STL fica maior e, com as atualizações, acaba não rodando em computadores antigos... Se for para usar, eu diria para usar Go ou Python.

 
heal9179 2022-09-28

Os itens em que a compatibilidade com versões anteriores não foi mantida ao atualizar a versão, na maioria dos casos, foram melhorias em funcionalidades com comportamento indefinido ou com falhas.
Recursos como módulos, concepts e coroutines mostram que a linguagem continua evoluindo, como acontece em outras linguagens.
Especialmente no caso de módulos, isso já era uma demanda antiga.

 
functor 2022-09-29

Não sei se a descontinuação do suporte a std::iterator se enquadra no caso que você mencionou de "melhorar recursos com comportamento indefinido ou defeituosos".

 
heal9179 2022-09-28

No entanto, os principais pontos em que o C++ fica atrás de outras linguagens são os seguintes.

  1. Gerenciador de pacotes
  2. Fragmentação de compiladores
  3. Processo de compilação complexo (exige aprendizado adicional de Make e CMake)
  4. Desinteresse da comunidade

Entre esses pontos, acho que o maior problema é que, por causa do desinteresse da comunidade, há pouquíssimos artigos de qualidade e, com o número reduzido de usuários, os outros três problemas acabam não sendo resolvidos.

 
deokim 2022-09-28
  • Rust