Ruby

Ruby é uma linguagem de programação interpretada multiparadigma, de tipagem dinâmica e forte, com gerenciamento de memória automático, originalmente planejada e desenvolvida no Japão em 1995, por Yukihiro "Matz" Matsumoto, para ser usada como linguagem de script.

Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python. Ruby suporta programação funcional, orientada a objetos, imperativa e reflexiva. Foi inspirada principalmente por Python, Perl, Smalltalk, Eiffel, Ada e Lisp, sendo muito similar em vários aspectos a Python. Atualmente, Ruby é a 10ª linguagem de programação mais popular do mundo, de acordo com o Índice Tiobe.
Ruby on Rails ®
A implementação 1.8.7 padrão é escrita em C, como uma linguagem de programação de único passe. Não há qualquer especificação da linguagem, assim a implementação original é considerada de fato uma referência.

Atualmente, há várias implementações alternativas da linguagem, incluindo YARV, JRuby, Rubinius, IronRuby, MacRuby e HotRuby, cada qual com uma abordagem diferente, com IronRuby, JRuby e MacRuby fornecendo compilação Just-In-Time e, JRuby e MacRuby também fornecendo compilação Ahead-Of-Time. A série 1.9 usa YARV (Yet Another Ruby VirtualMachine), como também a 2.0 (em desenvolvimento), substituindo a lenta Ruby MRI (Matz's Ruby Interpreter).

Características

Uma série de características foram definidas para atender às propostas do Ruby:
  • Todas as variáveis são objetos, onde até os "tipos primitivos" (tais como inteiro, real, entre outros) são classes;
  • Métodos de geração de código em tempo real, como os "attribute accessors";
  • Através do RubyGems, é possível instalar e atualizar bibliotecas com uma linha de comando, de maneira similar ao APT do Debian Linux;
  • Code blocks (blocos de código) passados como parâmetros para métodos; permite a criação de closures;
  • Mixins, uma forma de emular a herança múltipla;
  • 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 Ruby está disponível para diversas plataformas, como Microsoft Windows, Linux, Solaris e Mac OS X, além de também ser executável em cima da máquina virtual Java (através do JRuby) e haver um projeto para ser executável em cima da máquina virtual Microsoft .NET, o IronRuby.

Tipos de dados

Não existem "tipos primitivos" em Ruby; todos os tipos são classes:
  • Object é a classe mãe de todas as outras classes em Ruby.
  • Numeric é uma classe abstrata que representa números.
  • Integer é uma classe que representa números inteiros.
  • Fixnum representa números inteiros de precisão fixa.
  • Bignum representa números inteiros de precisão infinita, dependente apenas da memória disponível.
  • Float é uma classe que representa números de ponto flutuante (números reais).
  • String uma cadeia de caracteres. Pode ser delimitado por apóstrofes (') ou aspas ("). Tudo o que há entre apóstrofes é interpretado literalmente, entre aspas o programador deve se utilizar de símbolos para representar caracteres específicos, como em C. Exemplos: 'azul', "a\nb\nc"
  • Symbol é semelhante a uma string, mas dois símbolos iguais possuem o mesmo endereço de memória, sendo assim é ótimo para se utilizar como índice numa Hash. Porém, devido à sua natureza, o coletor de lixo do Ruby não os elimina. É definido com um sinal de dois pontos (:), por exemplo, :nome
  • Array são arrays dinâmicos, que podem ser usados para representar matrizes e vetores. É delimitado por colchetes ([]) e cada valor é separado por vírgula. Exemplo: [4, 'azul', :termometro]
  • Hash representa um vetor associativo, e, assim como as Arrays, é dinâmica. É delimitada por chaves ({}), e o índice precede o valor com um sinal '=>'. Exemplo: {:controller => 'user', :action => 'index'}. Qualquer objeto pode ser um índice, mas os mais usados são as Strings e os Symbols.
  • Regexp representa expressões regulares, delimitadas por //. Funciona de forma semelhante a Perl. Exemplo: /a|ae/

Aqui vai uns Exemplos: Programa Olá Mundo

puts "Olá, Mundo!"

Strings

a = "\nIsto é uma string de aspas duplas\n"
a = %Q{\nIsto é uma string de aspas duplas\n}
a = %{\nIsto é uma string de aspas duplas\n}
a = %/\nIsto é uma string de aspas duplas\n/
a = <<BLOCO
 
Isto é uma string de aspas duplas
BLOCO

O código a seguir define duas strings "cruas" que são equivalentes:

a = 'Isto é uma string de aspas simples'
a = %q{Isto é uma string de aspas simples}

Tutoriais: Ruby