Há pouco tempo entrei em um projeto voluntário para Web com Ruby on Rails. Legal né?? O problema é que nunca tinha mexido com RoR ou qualquer coisa parecida. Meu forte sempre foi Java, C# e outras linguagens "estáticas". Para quem vem do Java, Ruby é assustador. De cara já tive uma sensação do tipo: "aqui pode tudo", muito diferente do "quase tudo é proibido" do Java.
Passado o perído do "nossa! o que é isso??" logo me entusiasmei com RoR. Tive a sensação de estar com um microfone passando instruções para meu querido PC, pois, com Ruby é assim mesmo "Você fala, Ruby escuta".
Abaixo listo algumas diferenças substanciais que senti entre Ruby e Java.
Instalação - A instalação do conjunto Ruby + gem + Rails é quase mágica. No Windows, na forma mais complicada, a instalação é uma "sequência de Next, executa UM script, executa UM comando". Mas você também pode optar por um pacote "One-click" onde com poucos clicks você já está com tudo rodando perfeitamente. No linux, o processo é igualmente simples. A facilidade da instalação me fez lembrar como apanhei para instalar o JDK pela primeira vez. (instala pacote, configura PATH, configura variáveis de ambiente, bla, bla bla).
Não há tipos primitivos - Em Ruby "Tudo é um objeto", até mesmo aquele seu Int que é um objeto da classe FixNum. Ou seja, você fazer 4.div(2)
que o interpretador irá aceitar normalmente.
Threads independentes de Sistema Operacional - A implementação de threads é feita diretamente no Kernel do Ruby, o que permite rodar processos paralelos em qualquer SO, inclusive no DOS.
Tipagem dinâmica - Não é necessário definir o tipo do objeto antes de instância-lo. Como na grande maioria das linguagens de scripts os tipos de objetos são definidos em tempo de execução. Porém, apesar disso Ruby também é fortemente tipado, assim como Java.
Definição de métodos - chega de public boolean blablabla() { }
. Em Ruby métodos são iniciados com: def nome()
terminados em end
e a ultima expressão avaliada sempre é retornada, embora seja possível colocar um return
em qualquer parte do código.
Veja um exemplo:
def modelo()
@modelo
end
O código acima é a mesma coisa que:
public String modelo() {
return this.modelo;
}
Sentiu a diferença??
Parametros default - Parâmetros podem receber um valor default que será assumido caso o método seja chamado sem parâmetros.
def marca(tipo=1)
@tipo = tipo
end
Você pode chamar o método acima tanto com marca(9999)
quanto com marca()
. No último caso o valor de tipo será 1. Em java você seria obrigado a implementar no minimo dois métodos.
Gets e Setters - Existem 3 formas de definir métodos getters e setters.
Forma 1:
#declaração da variável
@marca
#método get
def marca
@marca
end
#método set
def marca = (marca)
@marca = marca
end
Forma 2:
#declaração de variável e getter.
attr_reader :marca, :modelo
#declaração de variável e setter.
attr_writer :cor.
Forma 3:
#declaração de variável, getter e setter.
attr_accessor :marca, :modelo, :cor.
Lembra do que eu falei no início?? "Você fala, Ruby escuta".
Giorge Henrique Abdala
#################################################
Referência: http://eustaquiorangel.com/downloads/tutorialruby.pdf
Leia Mais…