Vala: Vale a pena aprender uma nova linguagem de programação?

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.

[ Hits: 25.729 ]

Por: Francisco Souza em 14/04/2009 | Blog: http://www.franciscosouza.net


Usando o compilador Vala



Como já foi dito, o código do Vala baseia-se fortemente no código do C#. Logo, se você já usou C#, ou mesmo Java, programar em Vala não será um desafio. Principalmente se você tiver experiência também com GObject.

Vamos começar pelo exemplo básico, um "Olá pessoal do Viva o Linux!":

using GLib;

public class HelloWorld : Object {
    public static int main(string[] args) {
        stdout.printf("Olá pessoal do Viva o Linux!\n");
        return 0;
    }
}

Salve o arquivo OlaVol.vala. Agora basta compilar o código.

O compilador Vala chama-se valac. O uso dele é muito semelhante ao uso do gcc.

valac -o OlaVol OlaVol.vala
$ ./OlaVol

Olá pessoal do Viva o Linux!

Simples, não? E como faríamos uma "janelinha"? Vamos agora ver um exemplo usando interface gráfica Gtk. Nada muito complexo, só um pequeno botão escrito "Click me".

Crie um arquivo chamado Click.vala e coloque o seguinte conteúdo:

using Gtk;

static int main (string[] args) {
    Gtk.init (ref args);

    var window = new Window (WindowType.TOPLEVEL);
    window.title = "First GTK+ Program";
    window.set_default_size (300, 50);
    window.position = WindowPosition.CENTER;
    window.destroy += Gtk.main_quit;

    var button = new Button.with_label ("Click me!");
    button.clicked += (source) => {
        source.label = "Thank you";
    };

    window.add (button);
    window.show_all ();

    Gtk.main ();
    return 0;
}
Salve e feche o arquivo. Vamos compilá-lo. Ao compilar um arquivo que usa Gtk+, temos que especificar isso explicitamente no comando:

valac --pkg gtk+-2.0 Click.vala
$ ./Click
Linux: Vala: Vale a pena aprender uma nova linguagem de programação?
Linux: Vala: Vale a pena aprender uma nova linguagem de programação?
Gostou? Simples, não?

Para programadores C# e Java isso foi quase brincadeira de criança, mas sei que para os leigos não foi bem assim.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Usando o compilador Vala
   3. Conclusão e referências
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando uma agenda com o Lazarus

Implementando servidor web Java com Tomcat no Linux

Backuppc - Solução de backup corporativo

LaTex no Fedora 20 - Instalação via YUM

LAMP no Fedora 17

  
Comentários
[1] Comentário enviado por removido em 14/04/2009 - 15:37h

Acredito que conhecimento nunca é demais.

[2] Comentário enviado por evaldoavelar em 14/04/2009 - 15:56h

Por acaso exite alguma IDE ou projeto de IDE?

[3] Comentário enviado por franciscosouza em 14/04/2009 - 16:00h

Ola evaldo! :)

Existe sim, tem um plugin para o Monodevelop, um plugin para o Eclipse, uma IDE independente.

Confere no site oficial: http://live.gnome.org/Vala#head-6c397c4077ef096e78ea90d62f6d511a82e1e9ea

Abraços! ;)

[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.

Abraços e mais uma vez parabéns...

[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.

[6] Comentário enviado por removido em 14/04/2009 - 22:48h

Parabéns!

Flw

[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.

Um abraço.

[9] Comentário enviado por remontti em 15/04/2009 - 01:45h

Aprender sempre é bom!

[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


[12] Comentário enviado por franciscosouza em 16/04/2009 - 23:48h

Olá andre_asn, tudo bem?

O Vala não é 100% compatível com o C#, logo para a questão do código C#, te aconselho usar Mono.

Quanto ao problema do Vala, está dizendo que o flex não foi encontrado. Basta você dar um

# apt-get install flex

Que resolve. Vale lembrar que no Debian tu também pode dar um:

# apt-get install valac

Pra instalar o Vala mais facilmente.

Abraços,
Francisco

[13] Comentário enviado por andre_asn em 18/04/2009 - 15:30h

Obrigado Francisco agora deu certo aqui .. já estou usando o mono apenas gostei da dica de mais uma opção para trabalhar com essa linguagem

[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/Vala http://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.

[15] Comentário enviado por Azraelm em 15/08/2016 - 10:21h

Muito bom.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts