Já disse anteriormente que o Ruby é uma linguagem totalmente orientada a objetos e dinamicamente tipada, agora é hora de sermos mais específicos e analisar a linguagem um pouco mais a fundo

Olhando pra trás

O Ruby foi criado por Yukihiro “Matz” Matsumoto, que como o nome indica, é japonês. Matz se interessou por programação pouco depois de ser apresentado aos computadores, e como consequência natural, se formou em Ciência da Computação.

Em 1993, Matz conversava com um colega sobre linguagens de script, estando ele neste momento bastante impressionado devido ao seu poder e possibilidades. Ao pesquisar na Internet sobre o assunto, ele encontrou Perl e Python, mas de alguma forma não era exatamente isso o que ele queria. Como ele mesmo disse em uma entrevista realizada em 2001, ele queria uma linguagem de script que fosse mais poderosa que Perl e mais orientada a objetos que Pythton. E foi por isso que Matz decidiu criar sua própria linguagem.

Sendo assim, em 24 de fevereiro de 1993, Matz começou a desenvolver o Ruby usando a linguagem C. Quando iniciou o projeto, Matz brincava com um amigo dizendo que a linguagem deveria ter o nome de uma pedra preciosa, em alusão ao Perl, e então este amigo o sugeriu Ruby. Matz gostou do nome, e acabou o adotando como nome oficial da linguagem.

A primeira versão foi lançado para o público em dezembro de 1994, na forma de uma versão alpha. Depois disso ele continuou desenvolvendo a linguagem sozinho até meados de 1996, quando uma comunidade Ruby começou a se formar, e desde então ele passou a ter cada vez mais ajuda desta crescente comunidade.

Embora a popularidade do Ruby crescesse consideravelmente no Japão, pode-se dizer que inicialmente trata-se de um fenômeno apenas naquele país. Mas então surgiu o famoso livro PickAxe, que nada mais é que o apelido do livro Programming Ruby: A Pragmatic Programmer’s Guide, escrito por Dave Thomas e Andy Hunt. A importância deste livro para o Ruby fora do território japonês foi tão grande, que o próprio Matz credita à 1ª edição do livro parte da popularidade mundial do Ruby.

Desde então, o Ruby tem se tornado cada vez mais popular, em especial após o lançamento 3 anos atrás do Ruby on Rails, um framework web escrito em Ruby que revolocionou o desenvolvimento web, sendo definitivamente o maior responsável pela atual popularidade da linguagem.

Uma visão mais técnica

Considerando os aspectos técnicos do Ruby, chegamos à seguinte lista de características:

Orientação a objetos: o Ruby é considerado uma linguagem totalmente orientada a objetos, o que significa que tudo que você manipula em Ruby é um objeto, incluindo dados que normalmente são tipos primitivos em outras linguagens, como números inteiros e números de ponto flutuante. Como consequência disso, as variáveis no Ruby sempre armazenam referências a objetos.

Tipagem dinâmica: na maioria das linguagens, nós temos que declarar uma variável e associá-la a um tipo, o que é chamado de tipagem estática. Já no Ruby, uma variável ao longo da sua vida pode armazenar referências a objetos de várias classes. Isto é chamado de tipagem dinâmica, que é quando o tipo de uma variável pode mudar ao longo do tempo. É importante ressaltar que tipagem dinâmica não significa tipagem fraca, o Ruby por exemplo é uma linguagem com tipagem dinâmica e forte, ou seja, não se tratam de conceitos excludentes.

Execução: código fonte Ruby possui a extensão .rb e é executado diretamente por uma VM (Virtual Machine), sem qualquer processo de compilação. Por esta razão, o Ruby é uma linguagem interpretada.

Flexibilidade: o Ruby é extremamente flexível, permitindo aos programadores até mesmo mudar a sua estrutura interna, se assim o desejarem. Então, caso você não goste, por exemplo, de usar o sinal aritmético “+” para efetuar uma soma, basta alterar a classe Numeric.

Operadores: os operadores no Ruby são syntatic sugar para métodos, e você pode redefini-los a vontade.

Convenções: existem algumas convenções ao nomear variáveis que faz com que rapidamente identifiquemos a sua natureza, como por exemplo uma variável chamada @idade. Neste caso, devido à convenção do Ruby, podemos afirmar que se trata de uma variável de instância.

Expressões regulares: o Ruby oferece suporte nativo a expressões regulares, além disso, o seu uso é extremamente simples.

Blocos: esta é uma das características mais interessantes da linguagem. Blocos podem ser descritos como uma forma alternativa de passar argumentos para métodos, no entanto, é mais preciso dizer que se trata de uma transferência de fluxo entre um método e um trecho de código externo. Através dos blocos podemos, entre outras coisas, implementar iterators. Além disso, os blocos tamvém possibilitam a existência de uma outra capacidade do Ruby bastante festejada: closures.

Tratamento de exceções: assim como muitas linguagens modernas, o Ruby oferece tratamento de exceções nativamente, e como não poderia deixar de ser, o seu uso é bastante simples.

A filosofia por trás do Ruby

Ao projetar o Ruby, Matz foi guiado pelo Príncipio da Menor Surpresa, o que significa que o código escrito em Ruby deve se comportar de maneira a minimizar a surpresa daqueles que o lerem. Dessa forma, Matz esperava possibilitar que os programadores se expressassem naturalmente usando o Ruby. Como resultado dessa redução da surpresa, o Ruby tornou-se uma linguagem orientada aos humanos, de forma que o código escrito na linguagem seja facilmente compreendido, transferindo o trabalho difícil de para os computadores.

Outro princípio por trás da criação do Ruby é tornar o processo de desenvolvimento divertido, o que acaba resultando em uma maior produtividade, afinal, somos mais produtivos quandos estamos envolvidos em atividades divertidas.

Implementações Alternativas

Existem implementações alternativas do Ruby, como o JRuby, que é uma versão do interpretador do Ruby para a JVM (Java Virtual Machine). Existe também uma implementação do Ruby para o .NET Framework chamada IronRuby, no entanto, esta implementação ainda está na versão pré-alpha. Além dessas, há ainda outras menos conhecidas, como Rubinius e YARV.

Desvantagens

Seria leviano da minha parte introduzir alguns conceitos básicos sobre Ruby sem mencionar seus pontos fracos, uma vez que toda e qualquer linguagem tem os seus.

Um dos maiores problemas atuais do Ruby é a performance da sua VM, que deixa a desejar mesmo se não a compararmos com máquinas virtuais mais avançadas, como a JVM.

Outra característica negativa da linguagem é a sua relativa dependência em relação ao desenvolvimento em C, já que a biblioteca principal do Ruby possui muitas partes escritas nesta linguagem, não sendo, portanto, totalmente escrita em Ruby.

O futuro

O Ruby atualmente está na versão 1.8.6, sendo que a versão 1.9 está em desenvolvimento.

Ruby no Brasil e no mundo

Atualmente, o Ruby é a 10ª linguagem de programação mais utilizada no mundo, de acordo com o Tiobe. Já no Brasil, o Ruby é utilizado por mais de 15% dos programadores, sendo que em 2008 há a previsão desta quantidade aumentar para 33%, segundo os resultados da pesquisa internacional feita pelo instituto Evans Data.

E agora?

Agora cabe a você decidir se irá estudar Ruby on não. Enfim, eu acho que é uma linguagem maravilhosa, mas esta é sempre uma decisão pessoal. Então, se você gostou do que leu acima, ou está insatisfeito com a linguagem/plataforma que está utilizando no momento, dê uma chance ao Ruby. E mesmo que você não venha a utilizá-lo, aprender uma nova linguagem de programação sempre o tornará melhor nas outras linguagens que você utiliza.

Por fim, gostaria de mencionar que uma linguagem pode ter valor sem que este valor seja tirado da linguagem que você já utiliza. Qualidade definitivamente não é uma característica excludente entre as linguagens de programação.