Introdução à linguagem de programação Borgo
- Quer uma linguagem para escrever aplicações que seja mais expressiva que Go, mas menos complexa que Rust
- Go é simples e intuitiva, mas às vezes dá vontade de ter mais segurança de tipos
- Rust é boa de usar (pelo menos no caso de código single-thread), mas é ampla e complexa demais e, às vezes, dolorosa
- Borgo é uma nova linguagem que é transpilada para Go e é totalmente compatível com pacotes Go existentes
- A sintaxe do Borgo é semelhante à de Rust, com ponto e vírgula opcional
Principais recursos
- Tipos de dados algébricos e pattern matching
- Uso de
Option no lugar de nil
- Uso de
Result no lugar de múltiplos valores de retorno
- Tratamento de erros com o operador
?
Executando localmente
- Como o Borgo foi escrito em Rust, é necessário ter
cargo
- Para compilar todos os arquivos
.brg da pasta atual:
- O compilador gera arquivos
.go, que podem ser executados normalmente
Opinião do GN⁺
- Rust é uma linguagem poderosa, mas tem uma curva de aprendizado íngreme e uma barreira de adoção relativamente alta; o Borgo parece uma tentativa interessante de aproveitar as vantagens do Rust dentro do ecossistema Go. No entanto, como ainda está em estágio inicial, é de se esperar que o ecossistema seja limitado
- O uso de
Option e Result para melhorar o tratamento de nil e erros, assim como a simplificação do tratamento de erros com o operador ?, parece resolver pontos que desenvolvedores Go frequentemente consideram incômodos
- Poder usar bibliotecas Go existentes sem mudanças é uma grande vantagem. Mas, como adota sintaxe inspirada em Rust, pode levar algum tempo para desenvolvedores Go se adaptarem
- Como usa a abordagem de transpile, pode haver desvantagens em depuração e performance em tempo de execução em comparação com código Go nativo. Ainda parece cedo para aplicar isso em código de produção de grande escala
- Assim como Kotlin vem ganhando espaço no ecossistema JVM, para que Borgo se torne uma solução relevante para Go, parece necessário melhorar continuamente em vários aspectos, como qualidade do código, produtividade no desenvolvimento e curva de aprendizado. Se continuar evoluindo, pode se tornar uma alternativa atraente no universo Go
1 comentários
Opiniões no Hacker News
Resumo:
enume tiposOptionalimpl, sintaxe de canais e goroutines, função embutidazeroValue()etc.enumdo Rustpub/privateem vez do método do Go de distinguir visibilidade de campos destructpor letras maiúsculas e minúsculas