Um momento
Todos os artigos
Ruby 12 min de leitura

O Que É a Linguagem de Programação Ruby? Um Guia Simples da Linguagem Feita para a Felicidade

Um guia simples e sem jargões sobre o Ruby, a linguagem de programação feita para deixar os programadores felizes. Entenda por que o código Ruby parece inglês, como o Ruby on Rails move sites como GitHub e Shopify, e onde o Ruby brilha.

nbkhope
Nesta página

A maioria das linguagens de programação é pensada em torno do que é mais fácil para o computador. O Ruby foi pensado em torno de outra coisa: o que deixa os programadores felizes.

Criado no Japão nos anos 1990, o Ruby ficou famoso no mundo todo graças ao Ruby on Rails, uma caixa de ferramentas para construir sites que ajudou a lançar empresas como GitHub, Shopify e Airbnb. Este artigo explica, em linguagem simples, o que é o Ruby, por que o código dele parece quase inglês, o que o Rails faz e onde o Ruby brilha e onde tem dificuldades.

Uma linguagem feita para dar alegria

Em 1993, um programador japonês chamado Yukihiro Matsumoto, conhecido como "Matz", decidiu criar uma linguagem que ele gostasse de usar todo dia. Ele gostava de ideias de várias linguagens existentes e queria misturá-las em algo poderoso e agradável ao mesmo tempo.

O nome foi uma escolha brincalhona. Uma linguagem popular na época se chamava Perl, e a pérola (pearl, em inglês) é a pedra do mês de junho. Matz escolheu a pedra do mês seguinte: o rubi (ruby).

O Ruby foi lançado ao público em 1995. Matz já disse muitas vezes que o objetivo do Ruby é ajudar os programadores a serem produtivos e a gostarem de programar. Essa ideia guiou quase todas as decisões da linguagem.

Ruby parece inglês

O jeito mais fácil de sentir a personalidade do Ruby é compará-lo com outra linguagem. Veja a mesma tarefa, mostrar "Hello!" três vezes, em Java e em Ruby:

A mesma tarefa em Java e em Ruby: dizer "Hello!" três vezes. O Java usa 7 linhas: uma classe, um método main, um laço for que conta rodadas de 0 a 3 e um comando de escrita. O Ruby usa 1 linha: 3.times, e depois puts "Hello!" entre chaves. Dá para ler quase como inglês: "3 vezes, diga Hello!". Os dois mostram "Hello!" três vezes. O Java detalha cada passo; o Ruby deixa você dizer o que quer

O Java detalha cada passo: crie uma classe, comece um contador em zero, continue enquanto for menor que três, some um a cada vez. O Ruby simplesmente diz 3.times { puts "Hello!" }, que em inglês se lê quase como uma frase: 3 vezes, diga "Hello!" (puts vem de "put string", o jeito do Ruby de escrever uma linha).

Esse estilo de frase aparece em todo o Ruby:

Código Ruby muitas vezes parece uma frase, com código Ruby de verdade e o que o Ruby respondeu. 5.even? pergunta "o 5 é um número par?" e o Ruby responde false. [].empty? pergunta "esta lista está vazia?" e o Ruby responde true. "hello".upcase quer dizer "deixe hello em maiúsculas" e o Ruby responde "HELLO". [3, 1, 2].sort.reverse quer dizer "ordene a lista e depois inverta" e o Ruby responde [3, 2, 1]. palavras.tally quer dizer "conte quantas vezes cada palavra aparece" e o Ruby responde red 3 vezes, e assim por diante. No Ruby tudo é um objeto, até um simples número, então o próprio 5 sabe responder "você é par?". Nomes que terminam com ? são perguntas

Dois detalhes deixam o Ruby amigável:

  • Tudo é um objeto. No Ruby, até o número 5 é um objeto com as suas próprias habilidades, então dá para perguntar direto para ele: 5.even? ("5 é par?"). Você não precisa de um "ajudante de matemática" separado para descobrir.
  • Pontuação com significado. Nomes que terminam com ? são perguntas que respondem verdadeiro ou falso, como empty? ("está vazio?"). Nomes que terminam com ! são um aviso de que algo vai ser alterado ali mesmo: nome.upcase! transforma o texto guardado em nome em letras maiúsculas, em vez de criar uma cópia nova.

Como é o Ruby

Este é o primeiro programa clássico:

puts "Hello, world!"

Esse é o programa inteiro. Sem classes, sem main, sem ponto e vírgula.

Assim como o Java e o C#, o Ruby deixa você descrever um tipo de coisa como uma classe (uma planta) e criar objetos a partir dela. Veja um carrinho:

1class Carro
2  attr_reader :cor, :velocidade
3
4  def initialize(cor)
5    @cor = cor
6    @velocidade = 0
7  end
8
9  def acelerar
10    @velocidade += 10
11  end
12
13  def frear
14    @velocidade = 0
15  end
16end
17
18meu_carro = Carro.new("vermelho")
19meu_carro.acelerar
20meu_carro.acelerar
21puts "O meu carro #{meu_carro.cor} anda a #{meu_carro.velocidade} km/h"

Quando roda, ele mostra: O meu carro vermelho anda a 20 km/h. Algumas coisas para reparar: def começa cada ação e end a termina, nomes que começam com @ pertencem ao objeto, e #{...} encaixa um valor direto no meio de uma frase.

E veja como separar os adultos de uma lista de pessoas e ordenar os nomes:

1pessoas = [
2  { nome: "Maria", idade: 34 },
3  { nome: "Ana", idade: 17 },
4  { nome: "Pedro", idade: 25 },
5  { nome: "Lucas", idade: 15 },
6]
7
8adultos = pessoas
9  .select { |pessoa| pessoa[:idade] >= 18 }
10  .map { |pessoa| pessoa[:nome] }
11  .sort
12
13puts adultos.join(", ") # Maria, Pedro

Select (selecionar) as pessoas com 18 anos ou mais, map (transformar) cada uma no seu nome, sort (ordenar) os nomes. A parte entre |...| dá um nome a cada item enquanto o Ruby percorre a lista.

Ruby on Rails: a caixa de ferramentas que deixou o Ruby famoso

Na primeira década, o Ruby era popular principalmente no Japão. Isso mudou em 2004, quando um programador dinamarquês, David Heinemeier Hansson, lançou o Ruby on Rails (normalmente chamado só de "Rails"). Ele o construiu enquanto criava o Basecamp, um app de gestão de projetos, e o compartilhou de graça.

O Rails é um framework web: uma estrutura pronta para construir sites. Ele cuida das partes repetitivas que todo site precisa (conversar com um banco de dados, mostrar páginas, tratar formulários, fazer login de usuários), para que os desenvolvedores se concentrem no que torna o site deles único:

Como um site em Ruby on Rails responde a uma visita. O navegador visita /produtos. O roteador decide quem cuida do pedido. O controller, o gerente, junta o que for preciso. O model conversa com o banco de dados. A view preenche o modelo da página. A página pronta é enviada de volta para você. O Rails dá a todo projeto a mesma organização e as mesmas regras de nomes, "convenção em vez de configuração", e os desenvolvedores gastam o tempo no app, não em ligar peças

Pense num restaurante. O roteador é o recepcionista que leva você à mesa certa, o controller é o gerente que coordena o seu pedido, o model busca os ingredientes na despensa (o banco de dados) e a view monta o prato bonitinho antes de servir.

O Rails é famoso por duas ideias:

  • Convenção em vez de configuração: em vez de obrigar os desenvolvedores a configurar tudo, o Rails assume padrões sensatos. Se você tem um model chamado Product, o Rails já sabe que os dados dele ficam numa tabela do banco de dados chamada products.
  • Não se repita (don't repeat yourself): cada informação deve morar num lugar só, para que as mudanças precisem ser feitas uma vez só.

Um vídeo famoso dos primeiros tempos mostrava alguém construindo um blog funcionando em uns 15 minutos com o Rails, algo que levava dias com outras ferramentas da época. As startups adoraram, e muitas das grandes empresas de tecnologia de hoje começaram como apps em Rails.

Onde o Ruby é usado

Onde o Ruby é usado. GitHub, onde milhões de programadores guardam o seu código. Shopify, lojas on-line de milhões de negócios. GitLab, outra grande casa para projetos de código. Airbnb, que fez o seu primeiro site com Ruby on Rails. Basecamp e HEY, a empresa onde o Rails nasceu. Homebrew, o instalador de apps popular no Mac. O Ruby on Rails é um dos favoritos das startups: ele permite que uma equipe pequena construa e lance um site completo rapidamente
  • O GitHub, a maior casa de código do mundo, roda em Rails desde o seu lançamento, em 2008.
  • A Shopify, que move lojas on-line de milhões de negócios, roda uma das maiores aplicações Rails do mundo, e os engenheiros dela contribuem bastante para o próprio Ruby.
  • O GitLab, o Basecamp e o serviço de e-mail HEY também são apps em Rails.
  • O Airbnb fez o seu primeiro site com Rails, e o Twitter começou em Rails em 2006, antes de passar boa parte do sistema para outras linguagens conforme cresceu.
  • O Homebrew, a ferramenta popular para instalar programas no Mac, é escrito em Ruby.

Ele é rápido?

O Ruby foi pensado primeiro para a felicidade dos programadores e depois para a velocidade. Cronometramos o mesmo programa simples, que conta os números primos abaixo de 2 milhões, em quatro linguagens:

Teste de velocidade: fácil de escrever, não o mais rápido. Contando os números primos abaixo de 2 milhões, do início ao fim, medido para este artigo como a mediana de 5 execuções num notebook Windows. C: 0,41 segundo. JavaScript: 0,48 segundo. Ruby: 5,06 segundos. Python: 20,07 segundos. Versões: GCC 14, Node.js 26, Ruby 3.3 e Python 3.11. Esta versão do Ruby para Windows não inclui o YJIT, o acelerador embutido do Ruby, que pode deixar um código como este bem mais rápido no Linux e no Mac

O Ruby levou uns 5 segundos: bem mais lento que C e JavaScript, mas mais rápido que o Python neste teste em particular. Duas coisas valem saber:

  • O Ruby agora inclui o YJIT, um acelerador criado por engenheiros da Shopify que compila o código mais usado para código de máquina rápido enquanto o programa roda. Ele não estava disponível na versão para Windows que testamos, então o Ruby no Linux ou no Mac pode se sair bem melhor.
  • Para a maioria dos sites, a velocidade bruta de cálculo importa menos do que parece. Uma página típica passa boa parte do tempo esperando o banco de dados ou a rede, e a produtividade do Rails muitas vezes importa mais que alguns milissegundos.

Os pontos fracos

  • Não é o mais rápido. Para cálculos pesados, jogos ou outros trabalhos em que a velocidade é crítica, linguagens como C++, Rust ou Go combinam melhor.
  • Os erros aparecem tarde. O Ruby não confere os tipos dos valores antes de rodar, então alguns erros, como chamar um método em algo que não o tem, só aparecem com o programa rodando. Bons testes automatizados (o Ruby tem uma forte cultura de testes) ajudam a pegá-los.
  • A "mágica" pode confundir iniciantes. O Rails faz muita coisa por trás das cortinas, o que é ótimo até você precisar entender por que algo aconteceu.
  • Menos badalação que antes. O Ruby viveu o auge da popularidade no fim dos anos 2000 e começo dos anos 2010. Ele continua muito usado e em desenvolvimento ativo, mas linguagens mais novas recebem mais atenção, e há menos vagas de Ruby do que de JavaScript ou Python.

Uma breve história

Uma breve história do Ruby, numa linha do tempo. 1993: Yukihiro "Matz" Matsumoto começa o Ruby no Japão. 1995: primeira versão pública. 2000: o primeiro livro em inglês espalha o Ruby. 2004: lançamento do Ruby on Rails. 2006: o Twitter estreia, feito com Rails. 2008: o GitHub estreia, feito com Rails. 2020: chega o Ruby 3.0. 2022: o acelerador YJIT fica pronto para uso

Uma tradição bonita: uma versão nova do Ruby é lançada todo ano no dia de Natal, 25 de dezembro.

Vale a pena aprender Ruby?

  • Ótimos motivos: você quer construir apps web rapidamente, entrar numa startup ou trabalhar num código em Rails como o do GitHub ou da Shopify. O Ruby também é uma primeira linguagem gentil e divertida: o estilo legível deixa os iniciantes se concentrarem nas ideias, e não na pontuação.
  • Bom saber: o Ruby é gratuito e roda no Windows, no Mac e no Linux. Ele vem com o irb ("Ruby interativo"), onde dá para digitar Ruby uma linha de cada vez e ver a resposta na hora, um ótimo jeito de experimentar.

Um pequeno glossário

  • Ruby: uma linguagem de programação criada por Yukihiro "Matz" Matsumoto, lançada em 1995.
  • Matz: o criador do Ruby, que ainda lidera o seu desenvolvimento.
  • Objeto: uma coisa com os seus próprios dados e habilidades. No Ruby, tudo é um, até os números.
  • Método: uma ação que um objeto sabe fazer, como upcase ou even?.
  • Bloco: um pedaço de código entre { } ou do ... end entregue a um método, como { puts "Hello!" }.
  • Gem: um pacote pronto de Ruby que você pode acrescentar a um projeto.
  • Ruby on Rails (Rails): um framework para construir sites rapidamente, lançado em 2004.
  • Roteador / controller / model / view: as partes de um app Rails que encaminham um pedido, o coordenam, cuidam dos dados e montam a página.
  • Convenção em vez de configuração: seguir padrões sensatos em vez de configurar tudo à mão.
  • YJIT: o compilador embutido do Ruby que acelera o código mais usado enquanto ele roda.
  • irb: uma janela interativa para experimentar Ruby uma linha de cada vez.

Concluindo

O Ruby é aquela linguagem rara pensada em torno das pessoas, e não das máquinas. O código dele parece quase inglês, tudo nele é um objeto com que você pode conversar diretamente, e pequenos toques, como os métodos com ponto de interrogação, o deixam amigável. Graças ao Ruby on Rails, essa simpatia ajudou a lançar algumas das empresas mais conhecidas da web.

Ele não é a linguagem mais rápida nem a mais na moda, mas, se você visita o GitHub, compra numa loja on-line feita com a Shopify ou instala um app com o Homebrew, ainda está aproveitando o trabalho de uma linguagem criada, como Matz queria, para fazer da programação uma alegria.

Obrigado pela leitura!

Conhece alguém que vai gostar? Mande para essa pessoa.

Mais artigos

Read next

Comentários

Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.