O Brilhante Futuro do C++, A Nova Era Se Aproxima

Prepare-se, porque vem coisa grande por aí!

"C++ Moderno" - A Primeira Grande Revolução

Quando o C++11 e C++14 chegaram, viraram tudo de cabeça para baixo. Foi tão radical que até Bjarne Stroustrup, o pai da linguagem, comentou que parecia estar programando em uma linguagem completamente diferente!

E não é exagero! Pega qualquer código C++ de antes e depois dessas versões, e você identifica na hora a diferença. As variavéis automáticas em todo canto, os loops for-range substituindo aqueles iteradores verbosos, lambdas aparecendo em todo canto, e claro os smart pointers nos salvando dos perigos do gerenciamento manual de memória.

Essa transformação ficou conhecida como "Modern C++" e revolucionou como escrevemos código. Mas o que era moderno está prestes a virar "legado" novamente!

C++26 - A Segunda Grande Revolução

Pessoal, o C++26 está batendo na porta e vai ser tão impactante quanto foi a mudança de uma década atrás. Vamos aos destaques:

std::execution - O Novo Game-Changer

A biblioteca std::execution já está disponível para em muitas implementações e vai mudar completamente o jogo. Assim como os smart pointers resolveram o gerenciamento de memória, o std::execution resolve TANTO paralelismo QUANTO concorrência, que são problemas bem diferentes, vale ressaltar!

Imagina só: você escreve um código que roda em vários núcleos sem precisar ficar mexendo em threads ou locks. É real, é agora. E o melhor: mantém o princípio fundamental de "zero cost abstraction" do C++. Isso vai ser MASSIVO, porque multi-core não é mais luxo, é o paradigma padrão de desenvolvimento.

Não tô exagerando quando digo que empresas gigantes já estão usando isso em produção em produtos críticos!

Reflexão em Tempo de Compilação

Outra bomba: a reflexão em tempo de compilação foi aprovada na última reunião comitê para entrar no C++26! Isso é simplesmente revolucionário e vai mudar totalmente como codificamos em C++.

Finalmente teremos ORMs decentes em C++, de novo, com custo zero!

E tem mais!

Ponteiros com segurança reforçada, mais recursos funcionais, contêineres imutáveis, ranges aprimorados... Em poucos anos, todos esses recursos serão tão comuns quanto os do "Modern C++" são hoje.

O Que Isso Significa?

O C++ como conhecemos vai morrer! Este é provavelmente um dos melhores momentos da história para aprender C++ porque não é qualquer outra linguagem que promete ser o próximo C++, é o próprio C++26 que vai ser.

A próxima era do C++ está chegando, e quem pegar esse trem agora vai estar bem posicionado para os próximos anos. O ecossistema está evoluindo rapidamente, mas mantendo aquilo que sempre fez do C++ especial: abstrações de alto nível com zero custo.

Então, se você estava pensando em migrar para outra linguagem, talvez valha a pena dar uma segunda chance ao bom e velho C++. Ele pode já ser um ancião, mas nunca esteve tão jovem...

Um abraço e bons estudos!

Eu já percebi que você gosta bastante de linguagens de baixo nível ao ler comentários por aqui. O que você acha de Rust? Eu utilizo primordialmente TypeScript no meu dia a dia e estou nutrindo um interesse em aprender algo de baixo nível. Alguns dizem que Rust vai substituir o C++ e blá blá, aquele papo de sempre. Porém, nunca vi C++ sendo migrado para Rust .

Gostaria de saber mais de alguém já tem um costume em programar a baixo nível. Eu gosto de dizer que é como "programar a nível metal"

Respondendo de "curioso". Programo C++ a um bom tempo, apesar de estar acontecendo diversas melhorias no C++ desde o CXX11 até CXX20, o ecossistema não é "**newbie friendly**", e principalmente quando começamos fazer projetos "mirabolantes" que vão além do Terminal. A parte de existir milhares de build system, package managers e toolchains é o que gera essa confusão/frustação em iniciantes. Entretanto, graças a isso eu consegui aprender diversas coisas "bestas" que passam batido quando usamos linguagens de "alto-nível". Um exemplo com C# ( .NET ) ``` dotnet new console # pseudo-codigo adicionando dependencias pela CLI dotnet build --os android ``` > Simples, rápido e fácil temos um build. Eu não sou um grande fan do `Rust`, mas respondendo brevemente você terá o melhor dos dois mundos, uma linguagem com diversas possibilidades "baixo-nível" e a facilidade de ter um ecossistema similar de uma linguagem "alto-nível" ( package manager, build system, toolchains e etc ) Digitei bastante abobrinha, espero ter entendido meu ponto.
Entendi mais ou menos. Recomenda C# para ter o melhor dos dois mundos?
Minha opinião já está meio implícita no texto, mas vou ser direto: 1. Rust é quase puro hype, pouquissimas aplicações reais (tipo rodar um JS arbritário da Internet na máquina que tem todos os seus segredos) que tem alguma vantagem **real** sobre C++. 2. O mundo é construido em C e C++, não em Rust. (não é sobre achar, mas sobre o que é)

Na era a IA generativa, o hype é unicamente ecossystema Javascript. Não vejo futuro em C++ no que se refere a linguagem em sí; ele é complexa para iniciantes e conforme os mais velhos vão se aposentando, essas linguagens tendem a decair. É uma pena.

(quase) todos os interpretadores de JS são feitos em c++. std::execute é o tipo de coisa que vai deixar o JS que roda no browser muito mais eficiente. Alguém precisa fazer as camadas de baixo!!
Mesmo não fazendo parte do ecossistema, eu discordo. Linguagens de baixo nível nunca deixaram de ser utilizadas do meu ponto de vista. Seu proposito é ser extremamente performático, e para isso é necessário ter um controle granular da memória, dentre outras coisas. JavaScript não tem nada disso, é tudo automático e fica fácil de ter vazamento de memória. E mesmo que você faça tudo certinho, a linguagem por si só é pesada por abstrair coisas demais. Vale lembrar que sistemas embarcados está sempre em alta, e somente com linguagens de programação de baixo nível permite um funcionamento preciso desses sistemas. Por fim, este trecho "conforme os mais velhos vão se aposentando, essas linguagens tendem a decair. É uma pena." implica que a linguagem só é viva por ter gente das antigas usando. Discordo novamente, a linguagem tem uso por ser útil, e não por ser a única coisa que os veteranos sabem. Se fossem o caso, o que impede eles de aprender uma linguagem nova? JavaScript deve ser apenas uma conta de 1 + 1 para quem dominar o baixo nível do mundo da programação.
Concordo com o @clacerda, linguagens como o C++, que lentamente e com princípios sólidos vai se modernizando, sempre estará por baixo das linguagens de alto nivel como o JavaScript que justamente usa abstrações em C++ pra resolver cettas coisas. O iniciante começa no JS, vai se aprofundando até chegar no C++.