A Fexibilidade do Ruby
O Ruby é visto como uma linguagem flexível, uma vez que permite aos seus usuários alterar partes da Linguagem. Partes essenciais do Ruby podem ser removidas ou redefinidas à vontade. Partes existentes podem ser acrescentadas. O Ruby tenta não restringir o programador.
Ruby
Histórico
Ruby se tornou reconhecida no meio especializado desde que Dave Thomas, conhecido como um dos "Programadores Pragmáticos", adotou-o como uma de suas linguagens preferidas e acabou por escrever um dos mais completos livros sobre a linguagem, o Programming Ruby. Com o advento desta publicação, a linguagem passou a contar com uma boa fonte de iniciação e referência em inglês, aumentando consequentemente o número de adeptos da linguagem no Ocidente.
Ultimamente, devido a grande exposição de um framework web feito em Ruby, o Ruby on Rails desenvolvido por David Heinemeier Hansson, a linguagem tem sido foco da mídia especializada justamente pela sua praticidade.
Esta mesma praticidade inclusive é um dos conceitos básicos desta linguagem. É possível fazer algoritmos que resolvam seus problemas, não necessitando se preocupar com as limitações da linguagem ou do interpretador.
Características
Para manter a praticidade, a linguagem possui algumas características interessantes:
-
- a) A sintaxe é enxuta, quase não havendo necessidade de colchetes e outros caracteres.
- b) Todas as variáveis são objetos, onde até os "tipos primitivos" (tais como inteiro, real, entre outros) são classes.
- c) Estão disponíveis diversos métodos de geração de código em tempo real, como os "attribute accessors".
- d) Através do Ruby Gems, é possível instalar e atualizar bibliotecas com uma linha de comando, de maneira similar ao APT do Debian Linux.
- e) Code blocks (blocos de código), ajudam o programador a passar um trecho de instruções para um método. A idéia é semelhante aos "callbacks" do Java, mas de uma forma extremamente simples e bem implementada.
- f) Mixins, uma forma de emular a herança múltipla, sem cair nos seus problemas.
- g) Tipagem dinâmica, mas forte. Isso significa que todas as variáveis devem ter um tipo (fazer parte de uma classe), mas a classe pode ser alterada dinamicamente. Os "atalhos" citados acima, por exemplo, se beneficiam da tipagem dinâmica para criar os métodos de acesso/alteração das propriedades.
- h) Ruby está disponível para diversas plataformas, como Microsoft Windows, .NET, Linux, Solaris e Mac OS X, além de também ser executável em cima da máquina virtual do Java (através do JRuby).
Orientada a objetos
Muitos programadores consideram o Ruby uma linguagem de programação totalmente orientada a objetos (de maneira similar ao SmallTalk), porém devido a inexistência de conceitos padrões para especificação de linguagens OO, isto não pode ser provado.
Ruby não possui tipos primitivos, mas sim todos tipos são classes, assim como todas variáveis são objetos. Como exemplo, conjunto de caracteres é uma instância da classe String, inteiro é da Fixnum e matriz é Array.
Um conceito interessante também é que a maioria dos operadores binários e unários são, na realidade, métodos. Ou seja, podem ser alterados da mesma forma que os operadores em C++.
Os Ideais do Criador do Ruby
O Ruby é uma linguagem com um equilíbrio cuidado. O seu criador, Yukihiro "matz" Matsumoto, uniu partes das suas linguagens favoritas (Perl, Smalltalk, Eiffel, Ada, e Lisp) para formar uma nova linguagem que equilibra a programação funcional com a programação imperativa.
Ele diz com frequência que quer: "tentar tornar o Ruby natural, não simples, de uma forma que reflita a vida".
Além disso, ainda acrescenta: "O Ruby é simples na aparência, mas muito complexo no interior, tal como o corpo humano".
Inicialmente, Matz estudou diversas outras linguagens em busca da sintaxe ideal para o Ruby. Recordando a sua busca, disse, "Eu queria uma linguagem interpretada que fosse mais poderosa que o Perl e mais orientada aos objectos do que o Python3".
Em Ruby, tudo é um objeto. Cada parcela de informação e de código pode receber as suas próprias propriedades e ações.
Além do Básico
O Ruby é rico em outras características, entre as quais se destacam as seguintes:
-
- a) Capacidade de tratamento de exceções, tal como o Java ou Python, por forma a facilitar o tratamento de erros.
- b) Um verdadeiro mark-and-sweep garbage collector para todos os objectos Ruby. Não é necessário manter contadores de referência em bibliotecas de extensão (extension libraries). Tal como Matz diz, "Isto é melhor para a sua saúde".
- c) Escrever extensões C em Ruby é mais fácil do que em Perl ou Python, com uma API refinada para chamar Ruby desde o código C. Isto inclui chamadas para embeber Ruby em software externo podendo ser utilizado como uma linguagem interpretada por scripts dentro do software. Uma interface SWIG também se encontra disponível.
- d) O Ruby pode carregar bibliotecas de extensão (extension libraries) dinamicamente se o Sistema Operacional permitir.
- e) O Ruby tem um sistema de threading independente do Sistema Operacional. Portanto, para todas as plataformas nas quais o Ruby corre, temos multithreading, independentemente de o Sistema Operacional suportar ou não este resucrso. Até no MS-DOS temos multithreading!
- f) O Ruby é altamente portável: é desenvolvido principalmente em ambiente GNU/Linux, mas trabalha em muitos tipos de ambientes UNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc.

