Google Carbon

BLOG

Google Carbon

30 de agosto de 2022

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

github.com/carbon-language

turbofuture.com/computers/Google-has-released-Carbon

 

Compartilhe

Subscribe
Notify of
guest

0 Comentários
Mais velho
Novos Mais votados
Inline Feedbacks
View all comments

Assine nossa Newsletter

Receba dicas de tecnologia, inovação e outras inspirações

0
Would love your thoughts, please comment.x