Escrever Ruby de uma forma melhor, com tipagem ou código mais bonito!

Depois das ideias super bacanas que a comunidade Ruby trouxe, de fomentar o CoffeScript para escrever um “JavaScript” mais bonito, ou da Google de fazer o Dart para escrever um JavaScript “tipado”, resolvi também trabalhar em algo que deixaria o Ruby perfeito.

Puby e Juby! São dois projetos distintos mas com propósitos excelentes:

Puby

No Puby podemos escrever para a plataforma “Pails”, ou também “Puby on Pails”. A ideia é simples: o desenvolvedor precisa escrever em uma linguagem bonitona, como o Python, e aproveita a plataforma e bacanisse do framework Ruby on Rails.

Nada de indentação feiona, é importante seguir regras básicas para o código ter uma leitura mais humana.

Assim, um código onde está escrito:

print "Hello, World!"

é compilado para:

puts 'Hello, World!'

Não tem muito mistério, é só saber Ruby e Python que dá certo.

Juby

Já no Juby é pra dar maior robustez aos projetos feitos em Rails, assim temos o framework “Juby on Jails”.

A ideia é trazermos todo o conceito de classes e tipagens obrigatórias do Java para o Ruby, além de métodos e própriedades privadas, estáticas, e outras coisas a mais que tornam o Java tão performático.

Assim um código com:

public class HelloWorldConsole  
{  
    public static void main(String args[])  
    {  
        System.out.println("Hello, World!");  
    }  
}

é compilado para:

puts 'Hello, World!'

Traz sempre uma maior liberdade para o desenvolvedor e inclusive da pra trazer boas bibliotecas e elementos de frameworks do Java para o Rails, como o Struts, Hybernante, JSF, etc.

Resultado:

Todo o código é convertido para Ruby, isso pode ocorrer em um momento de deploy, assim, não compromete a performance e boa escrita do seu código, até porque código sempre é bem escrito em python e robusto em Java.

A comunidade Ruby tem muito mais a ganhar de colaboração pois pode ter ajuda massiva da galera de Java e Python e assim criar mais apps interessantes.

Assim que tiver mais resultados efetivos, vou publicar o código que já está no github.com