O Google anunciou uma nova linguagem de programação chamada Carbon. Ela é de uso geral e foi criada para ser uma linguagem sucessora do C++.
O Googler chamado Chandler Carruth, líder técnico das linguagens de programação do Google, apresentou essa nova linguagem de programação que será projetada e desenvolvida no GitHub.
Por que ele pode ser considerado o sucessor do C++?
O C++ continua lutando para melhorar e atender às necessidades dos desenvolvedores. Porém, melhorar a linguagem é extremamente difícil devido, em grande parte, ao acúmulo de décadas de dívida técnica e desafios em seu processo de evolução. A melhor maneira de resolver esses problemas é evitar herdar diretamente o legado de C ou C++.
Em geral, a crítica ao C++ é que ele é muito complexo. O IntelliSense geralmente é péssimo, não há suporte para funções e tuplas de primeira classe, e as listas de inicializadores são consideradas um “hack”. Além disso, existem várias peculiaridades, como sintaxe e operadores repetitivos, como &, que é um operador lógico e uma referência.
Além disso, há um problema em que cada fornecedor de compilador cria seus próprios nomes e impede que os módulos sejam vinculados de compiladores diferentes.
Resumindo, C++ funciona, mas tem seus problemas.
Existem algumas linguagens que seguiram esse modelo para outros ecossistemas e o Carbon pretende preencher o mesmo papel para C++:
Objetivos da Linguagem de Programação Carbon
À medida que engenheiros de software, programadores e desenvolvedores se tornam mais experientes na arte de traduzir ideias em lógica, encontramos melhores maneiras de traduzi-las em código.
Go, Swift, Kotlin e Rust são derivados de linguagens de programação relacionadas. Todos eles foram criados para simplificar a complexidade. Carbon cumpre a mesma missão.
O Carbon poderia ser uma evolução tanto para o software quanto para a linguagem de programação. Ele se concentrará principalmente no código que será fácil de escrever e ler.
Vantagens
De acordo com o repositório oficial do GitHub/CarbonLanguage, Carbon é a linguagem sucessora. Isso significa que ele não busca melhorar o C++, mas substituí-lo completamente.
Possui abordagens semelhantes, como desempenho comparável, embora com uma curva de aprendizado mais leve para torná-lo acessível a um grupo maior de desenvolvedores.
A abordagem é semelhante ao Kotlin e TypeScript, nos quais você não precisa se livrar da base de código existente, apenas sobrepor o Carbon em um projeto C++. Desse modo, tudo funcionará.
Algumas vantagens:
- Desenvolvimento mais rápido e escalável
- Melhor organização do código e estruturas modulares
- Suporte para todos os sistemas operacionais e ambientes modernos
- Mecanismos de teste seguros
- Software de desempenho crítico
- Evolução de software e linguagem
- Código fácil de ler, entender e escrever
- Mecanismos práticos de segurança e teste
- Desenvolvimento rápido e escalável
Status do projeto
Atualmente é um projeto experimental, não há compilador ou cadeia de ferramentas em funcionamento.
Para utilizar, você pode ver o interpretador de demonstração do Carbon em compiler-explorer.com.
Os desenvolvedores da linguagem querem entender melhor se devem continuar a construir a linguagem, pois é preciso que atenda os critérios de linguagem sucessora, assim como se a linguagem resultante pode reunir uma massa crítica de interesse dentro da indústria e comunidade C++.
Atualmente existem 94 colaboradores do projeto Carbon:
Se você tem interesse em contribuir, ajude a concluir os designs da linguagem e conclua a implementação do Carbon Explorer deste design. A equipe Google está trabalhando para obter feedback e participação mais ampla da comunidade C++.
Além disso, eles priorizam a interoperabilidade C++ e uma cadeia de ferramentas realista que implemente a linguagem e possa ser usada para avaliar o Carbon com mais detalhes.
Exemplo de código
O exemplo abaixo mostra o mesmo código nas duas linguagens de programação:
// C++:
#include math.h #include iostream #include span #include vector struct Circle { float r; }; void PrintTotalArea(std::span<Circle> circles) { float area = 0; for (const Circle& c : circles) { area += M_PI * c.r * c.r; } std::cout << "Total area: " << area << "\n"; } auto main(int argc, char** argv) -> int { std::vector<Circle> circles = {{1.0}, {2.0}}; // Implicitly constructors `span` from `vector`. PrintTotalArea(circles); return 0; }
// Carbon:
package Geometry api; import Math; class Circle { var r: f32; } fn PrintTotalArea(circles: Slice(Circle)) { var area: f32 = 0; for (c: Circle in circles) { area += Math.Pi * c.r * c.r; } Print("Total area: {0}", area); } fn Main() -> i32 { // A dynamically sized array, like `std::vector`. var circles: Array(Circle) = ({.r = 1.0}, {.r = 2.0}); // Implicitly constructs `Slice` from `Array`. PrintTotalArea(circles); return 0; }
Conclusão
Se você já é um desenvolvedor C++, o Carbon deve ter uma curva de aprendizado tranquila, já que é construído a partir de um conjunto consistente de construções de linguagem que são familiares e fáceis de ler e entender.
Referências
turbofuture.com/computers/Google-has-released-Carbon