5 pontos por GN⁺ 2024-04-09 | 1 comentários | Compartilhar no WhatsApp
  • Vala é uma linguagem de programação que tem como objetivo oferecer recursos modernos de linguagem para desenvolvedores do GNOME
  • Não impõe requisitos adicionais de runtime nem usa uma ABI diferente em comparação com aplicações e bibliotecas escritas em C
  • Recursos modernos de linguagem suportados: interfaces, propriedades, sinais, foreach, expressões lambda, inferência de tipos para variáveis locais, genéricos, tipos non-null, gerenciamento de memória, tratamento de exceções
  • Permite escrever código com conforto usando abstrações de alto nível em um estilo orientado a objetos, além de ser profundamente integrada a tecnologias do GNOME como GObject e GTK
  • Compila o código em binários nativos muito rápidos. É possível reutilizar código C existente em programas Vala ou gerar código C a partir de Vala

Compatibilidade com bibliotecas C existentes

  • Vala foi projetada para permitir acesso a bibliotecas C existentes, especialmente bibliotecas baseadas em GObject, sem bindings em runtime
  • Basta ter arquivos de API contendo declarações de classes e métodos na sintaxe de Vala para usar a biblioteca com Vala
  • Atualmente, Vala já vem com bindings para GLib e GTK+

O compilador Vala valac

  • valac é um compilador self-hosted que transforma código-fonte Vala em código-fonte C e arquivos de cabeçalho
  • Usa o sistema de tipos do GObject para gerar as classes e interfaces declaradas no código-fonte Vala
  • A sintaxe de Vala é semelhante à de C#, mas foi ajustada para se encaixar melhor no sistema de tipos do GObject

Usando classes e métodos escritos em Vala a partir de C

  • Basta instalar os arquivos de cabeçalho gerados por uma biblioteca Vala para que aplicações C possam acessar, da forma usual, a API baseada em GObject dessa biblioteca
  • Como o parser de Vala foi escrito como biblioteca e todas as informações de tempo de compilação podem ser usadas na geração de bindings, também deve ser fácil escrever geradores de bindings para acessar bibliotecas Vala a partir de aplicações escritas em C# e outras linguagens

Opiniões do GN⁺

  • Vala tem a vantagem de ser uma linguagem orientada a objetos com sintaxe semelhante à de C e boa integração com tecnologias do GNOME. Em especial, é otimizada para o desenvolvimento de aplicações GUI e pode ser facilmente integrada com GTK, Granite e outros
  • Vala é uma linguagem especializada no desenvolvimento do ambiente desktop GNOME, e parece ter utilidade limitada em outras áreas
  • Com uma sintaxe semelhante à de C#, Vala pode ajudar desenvolvedores familiarizados com C# a participar do desenvolvimento no GNOME
  • O objetivo do Vala de valorizar a compatibilidade com bibliotecas C existentes ao mesmo tempo em que oferece recursos modernos de linguagem é interessante, mas isso pode acabar reduzindo a originalidade da própria linguagem
  • Ao observar projetos em Vala, há muitos aplicativos desktop voltados para GNOME ou elementary OS, mas a linguagem também pode ser usada em programação de servidores. Ainda assim, nesse campo o ecossistema continua relativamente carente
  • Ainda é incerto o quanto Vala será amplamente adotada, mas dentro do ecossistema GNOME faz sentido esperar ganhos de produtividade ao usar Vala no lugar de C
  • Existe também uma linguagem chamada Genie, com sintaxe semelhante à de Vala e capaz de usar tecnologias do GNOME. Sua característica é separar blocos de código por indentação, como em Python. Vale considerá-la como alternativa ao Vala

1 comentários

 
GN⁺ 2024-04-09
Comentários do Hacker News
  • Há dúvidas sobre se Vala teve atividade de desenvolvimento intensa recentemente. Segundo um post de blog de um desenvolvedor do GNOME, Vala é mantida por um único desenvolvedor e não é recomendada para novos projetos.
  • Um comentarista disse que escreveu um app recentemente em Vala e que foi uma experiência prazerosa. Como queria um app que funcionasse bem no Linux desktop e no PinePhone, Vala se encaixou bem, sendo muito mais agradável e também mais rápida que Python.
  • Vala tem uma linguagem irmã chamada Genie. As duas linguagens são basicamente iguais, mas Vala usa uma sintaxe semelhante à de C#, enquanto Genie usa indentação significativa como Python. Ambas são compiladas pelo mesmo compilador (valac).
  • Sintaticamente, Vala parece muito semelhante a Swift. Além da sintaxe, Vala também se parece com Swift por ter contagem de referências de primeira classe, bindings para C e por compilar diretamente para binários sem runtime externo.
  • Foi levantada a dúvida se Vala oferece ABI estável ou compatibilidade com outras linguagens de alto nível, como C++ ou ObjC. Essa é uma tarefa difícil que Swift vem tentando resolver.
  • É difícil ver em que Vala seria uma linguagem (significativamente) mais produtiva ou poderosa do que Java ou C#. Não está claro qual é a principal vantagem de Vala ou qual problema ela pretende resolver.
  • Uma das vantagens de Vala, segundo uma opinião, é a ampla variedade de bibliotecas nativas acessíveis graças à compatibilidade com GObject. Um excelente site de documentação, com tudo em um só lugar (valadoc.org), também facilita o desenvolvimento.
  • A maior parte dos apps "nativos" do elementary OS teria sido escrita em Vala.
  • Um comentarista que gostava do Geary disse que investigou Vala por causa disso e concluiu que é uma linguagem elegante e boa para criar programas práticos no GNOME. No entanto, afirmou não ter acompanhado Vala nos últimos sete anos.
  • O uso de Rust para desenvolvimento no GNOME está se tornando cada vez mais popular (gtk-rs.org).