Vala é uma linguagem moderna proposta pelo pessoal do Gnome. Sua sintaxe é baseada no C#. Trata-se de um compilador, sendo, assim, uma alternativa a linguagens interpretadas que possuem menor desempenho. Este artigo apresenta a linguagem e instrui o leitor a instalá-la em seu sistema, independente de qual distribuição.
A linguagem Vala foi criada pelo pessoal do Gnome Live! com o objetivo de trazer recursos avançados aos desenvolvedores Gnome, sem a imposição de requisitos adicionais e sem reinventar a roda. Isto quer dizer que você pode trabalhar com a API do C e pode brincar com interfaces gráficas Gtk.
Também é possível compilar/programar Vala para o Windows, assim como acontece com C e C++.
Na verdade, Vala é um compilador para o sistemas de tipo GObject, desenvolvido e utilizado no GIMP, GTK e, consequentemente, no Gnome.
Neste artigo tentarei demonstrar a instalação e o uso do compilador, para abrir o apetite do leitor para a linguagem.
Hora de instalar o Vala
Requisitos:
O Vala, apesar do que muitos podem pensar, não depende do Gnome. Pode ser instalado perfeitamente em um SlackwareLinux com KDE ou WindowMaker. A única dependência do Vala é que você tenha um compilador C devidamente configurado, o Gtk2.x (com GLib 2.12 ou superior) e o Bison.
Isso significa que você pode instalar o compilador Vala sem muitos problemas no Windows, no FreeBSD, no NetBSD, ou qualquer outro BSD, assim como qualquer distribuição Linux.
[4] Comentário enviado por f_Candido em 14/04/2009 - 20:11h
Legal, muito interessante o artigo.
Você afirmou que o desempenho e semelhante ao do Java e C#, correto?
Existe algum benchamark comparando as linguagens??
Interessante notar é a sintaxe simples. Isso é bom.
[5] Comentário enviado por franciscosouza em 14/04/2009 - 20:39h
Olá f_candido, na verdade não existe nenhum benchmark ainda. Mas de repente eu faço um...
Quanto ao desempenho, na TEORIA, Vala tende a ser mais rápida, por ser compilada. Mas vale lembrar que as máquinas virtuais possuem diversos recursos que possibilitam ganho de desempenho.
[7] Comentário enviado por mslomp em 14/04/2009 - 23:40h
não conhecia o vala, e pelo que li no site oficial não se trata de um compilador rigorosamente falando, e sim de um tradutor vala->c. ou seja, o código vala será transformado em c, e então compilado/montado/ligado de fato por um compilador externo - no caso, o gcc. desse modo, eventuais benchmarks não serão aplicados à eficiência do compilador vala, e sim ao quão enxuto e otimizado está o código c gerado por ele, o que é muito interessante de se observar à medida que novas versões surjam.
parabéns pelo artigo, realmente uma novidade bem abordada.
[8] Comentário enviado por franciscosouza em 15/04/2009 - 00:43h
Olá mslomp. Vale atentar que o número de compiladores que geram código Assembly é quase nulo.
Hoje em dia, praticamente todos os compiladores para binários passam pelo C, pra depois passarem pelo Assembly e por fim chegarem no código de máquina.
[10] Comentário enviado por mslomp em 15/04/2009 - 09:39h
para o caso do gcc, o código assembly é gerado no back-end do compilador (cc1), e então montado pelo gnu assembler (as), e finalmente ligado pelo realocador (collect2) e pelo gnu linker (ld). no fundo no fundo, o que determinará uma boa saída assembly é o tratamento das linguagens intermediárias. no gcc, para o exemplo de um código em c, a ordem de linguagens intermediárias até o código assembly final é:
c -> generic -> gimple -> rtl -> assembly
a mágica acontece especialmente nas fases gimple (otimizações ssa) e no rtl (otimizações rtl), que é um 'pseudo baixo nível' para uma máquina hipotética com infinitos registradores.
como implícito no comentário do colega chicoBento, a partir daí o compilador nada mais tem a ver com o processo, então também é preciso levar isso em conta ao interpretar benchmarks.
[11] Comentário enviado por andre_asn em 16/04/2009 - 23:13h
Boa noite chicobento tive o seguinte problema no final da instalação :
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking for flex... no
checking for lex... no
configure: error: flex not found but required
download@Matrix:~/vala-0.7.0$ make
make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.
download@Matrix:~/vala-0.7.0$ make install
make: *** Sem regra para processar o alvo `install'. Pare.
download@Matrix:~/vala-0.7.0$
pode me dar uma ajuda estou começando a faculdade e la usam o C# com Windows mas em casa meu micro e o note rodam Debian 5
[14] Comentário enviado por jntesteves em 21/07/2009 - 01:31h
A documentação tem crescido exponencialmente à medida que aumenta o número de usuários da linguagem. Confira o último "draft" e muitos exemplos (em inglês) no site oficial. http://live.gnome.org/Valahttp://live.gnome.org/Genie
.
Para os que ainda procuram por um benchmark, tem no site http://code.google.com/p/vala-benchmarks/ Inclusive existe uma página lá com alguns resultados. Como era de se esperar, programas escritos em Vala (ou Genie) rodam quase tão rápido quanto C puro, ganhando até de C++ em vários testes, com a grande vantagem de ser escrita num dialeto muito mais simples e moderno que C e C++.
.
C#, é claro, é muito mais lenta que essas linguagens na hora da execução.
.
Resumindo, Vala e Genie são simples e limpas como C# e Python na hora de escrever o código, mas rápidas como C na hora de executar!
.
A versão final estável de Vala está prevista para ser lançada junto com o Gnome 2.8, ainda este ano. Quem quiser já pode ir migrando para Vala (ou Genie) em todas as plataformas que suportam C + GObject.
.
Vala é o futuro! Abraços e bom aprendizado.