Dessa vez o pessoal do Gnome acertou a mão. Estou falando da linguagem de programação Vala.Até hoje, quem queria programar em C# era obrigado a usar ou um sistema operacional problemático, ou uma ferramenta monstruosamente pesada e ineficiente.
Não mais.
O projeto Gnome lançou há algum tempo a linguagem Vala, fortemente baseada na sintaxe do C#, mas voltada para aplicações Gnome. Quem manja de C# ou maja de Java e já viu C# não terá dificuldade em lidar com Vala.
Instalação
Segundo a página do projeto, Vala foi feito para plataforma Gnome. Surgiu aí meu primeiro problema: uso Slackware e o Volkerding decidiu que Slackware não terá mais suporte a Gnome! Em sua total substituição, há o Xfce.
Simplesmente não há um pacote oficial de Gnome para Slackware – e os não-oficiais que já experimentei simplesmente detonaram o sistema todo.
Ainda mais: e quem usa outros SOs? Se não tiver Gnome já era?
Qual não foi minha agradável surpresa quando descobri que Vala compilou e instalou sem problemas no Slackware 12.2?! Sua dependência verdadeira é GTK+ 2.x, que você encontra em praticamente qualquer distribuição GNU/Linux ou BSD.
E Windows? Também tem!
Usando
Um «Olá Mundo» em Vala é bastante simples (tanto quanto Java, pelo menos):
using GLib;
public class HelloWorld : Object {
public static int main(string[] args) {
stdout.printf("Olá Mundo!\n");
return 0;
}
}Ao contrário do .NET, não há código escondido do programador. Por exemplo:
using GLib;
public class HelloWorld : Object {
private Gtk.Window window;
public HelloWorld() {
window = new Gtk.Window(Gtk.WindowType.TOPLEVEL);
window.set_default_size(300, 200);
window.destroy += Gtk.main_quit;
window.add(new Gtk.Label("Olá Mundo!"));
}
public void show() {
window.show_all();
Gtk.main();
}
public static int main (string[] args) {
Gtk.init(ref args);
var sample = new HelloWorld();
sample.show();
return 0;
}
}[update]Ajeitei pra ninguém ficar me chateando.[/update]
Maturidade
Estranhamente a linguagem já está bastante madura na 0.5.7. Não encontrei quebras inusitadas nem erros bizarros.
[update 2009-04-01]
Encontrei uma quebra inusitada: Vala não lida bem com closures e escopo dinâmico. Ela se perde um pouco gerando alguns erros inesperados.
Outro erro inconveniente está na API com C: o bind de método destruidor não suporta parâmetros, o que pode ocorrer em alguns casos da GLib – lembre-se do que não há métodos destruidores reais em C, mas sim funções de desalocação.
[/update]
A única coisa que tenho a reclamar muito é a documentação precária, bem longe das documentações de API bem organizadas da SUN Microsystems e da Microsoft.
IDE
Por enquanto há uma IDE chamada Val(a)IDE – só que essa já desarmou na minha cara algumas vezes – e a promessa de uma extensão para o Eclipse – que ainda não apareceu na página da própria extensão.
Segundo a página official, há também extensões para MonoDevelop (Deus me livre!) e para GEdit.
**
É isso aí! Quando eu ganhar um pouco mais de intimidade com a linguagem, escrevo mais alguma coisa. Por enquanto foi só divulgação. Um tutorial meia-boca pode ser encontrado aqui.
[]'s
Cacilhas, La Batalema

9 comentários:
Muito interessante a linguagem, parece que pelo menos dessa vez o povo do gnome acertou a mão :D
Já tô começando a estudar, vai ser interessante criar programas GTK mais rapidamente sem necessitar de bindings lentas e estranhas.
O esquema de sinais da linguagem também é muito legal :]
Sim, Cainã!
Também gostei do esquema de sinais. É uma forma interessante e enxuta de registrar callbacks.
Só não lembro se em C# é assim também (a última vez que vi C# foi na faculdade).
[]'s
Cacilhas, La Batalema
Ótimo post Cacilhas, sempre é bom divulgar um projeto tão legal e promissor quanto esse.
Um ponto importante a se destacar sobre a linguagem Vala é que seu código fonte é compilado para C e após em binário nativo e ela usa objetos do sistema GLib2/GTK para a orientação a objetos. Sendo assim não são necessários nenhum tipo de máquina virtual ou biblioteca runtime para a sua execução mas ainda garante sua portabilidade entre diversas plataformas.
Até mais,
Zappala.
La Batalema,
O porém é que C# é .NET, o que implica em Monões de problemas :P
Zappala,
Exatamente, e outra vantagem é que não precisamos mais fazer aquelas gambiarras que é pra programar GTK em C, com uma pseudo-orientação à objetos.
Tem uma diferença básica:
O Exemplo em Java não usa Formulário e o outro sim.. por isso o código é maior.
Que exemplo Java? Onde?
[]'s
Puxa... não consigo fazer o Gtk funcionar, fica dando um erro de 'namespace Gtk can not be found' :/
Você precisa compilar com a flag --pkg gtk+-2.0
[]'s
Cacilhas, La Batalema
Achei a linguagem muito interessante também. O fraco do projeto é a documentação, como você apontou no teu post.
Abraços.
Postar um comentário