apenas uma figura bonitinha

11.  Além deste Tutorial

 

Então, onde é que podemos ir agora? Se você tiver uma pergunta, para quem pode perguntar? E se você quer que seu programa abra uma página da Web, envie um e-mail, ou redimensione uma foto digital? Pois bem, há muitos, muitos lugares onde encontrar ajuda para Ruby. Infelizmente, essa resposta não tem muita utilidade, não é? :-)

Para mim, realmente existem apenas três lugares onde procuro para ajuda para o Ruby. Se for uma pequena questão e eu acho que posso experimentar sozinho para encontrar a resposta, uso irb. Se for uma questão maior, procuro no meu Pickaxe. E se simplesmente não consigo dar conta do recado, então peço ajuda na lista ruby-talk.

IRB: Ruby interativo

Se você instalou Ruby, então você instalou irb. Para usá-lo, basta ir ao seu prompt de comando e digitar irb. Quando você estiver em irb, você pode digitar qualquer expressão ruby que você queira, e ele devolverá o valor da mesma. Digite 1 + 2, e devolverá 3. (Note que você não precisa usar puts). É como uma espécie de calculadora Ruby gigante. Quando tiver concluído, digite simplesmente exit.

Há muito mais do que isso a respeito do irb, mas você pode aprender tudo sobre ele no Pickaxe.

O Pickaxe: "Programming Ruby"

O livro sobre Ruby que você não pode perder de jeito nenhum é "Programming Ruby, The Pragmatic Programmer's Guide", de Andrew Hunt e David Thomas (os Programadores Pragmáticos). Embora eu recomende fortemente a 2ª edição deste livro excelente, com a cobertura de todas as últimas novidades do Ruby, você também pode obter uma versão on-line grátis de pouco mais antiga (mas ainda relevante). (Na verdade, se você instalou a versão do Ruby para Windows, você já tem ela).

Você pode encontrar praticamente tudo sobre Ruby, do básico ao avançado, neste livro. É fácil de ler; é abrangente; é quase perfeito. Eu gostaria que todas as linguagens (de programação) tivessem um livro desse nível. Na parte final do livro, você encontrará uma enorme seção detalhando cada método de cada classe, explicando-o e dando exemplos. Eu simplesmente amo este livro!

Há um sem número de lugares onde você pode obtê-lo (incluindo o próprio site do Pragmatic Programmers), mas o meu lugar favorito é no ruby-doc.org. Esta versão tem um bom índice , bem como um índice remessivo (no ruby-doc.org tem muitas outras ótimas documentações, tais como a API Central (Core API) e a Biblioteca Padrão (Standard Library)... Basicamente, isso documenta tudo que vem com o Ruby. Verifique.).

E por que é chamado de "o Pickaxe" (picareta)? Pois bem, há uma imagem de uma picareta na capa do livro. É um nome bobo, eu acho, mas pegou.

Ruby-Talk: uma lista de discussão sobre Ruby

Mesmo com o irb e o Pickaxe, às vezes você ainda pode não dar conta sozinho. Ou talvez você queira saber se alguém já fez o que você está fazendo, para ver se você pode utilizá-lo. Nestes casos, o melhor lugar é ruby-talk, a lista de discussão do Ruby. É cheia de gente amigável, inteligente, colaborativa. Para saber mais sobre ela, ou para se inscrever, procure aqui.

ATENÇÃO: Existe um grande número de e-mails na lista todos os dias. Eu criei uma regra no meu cliente de e-mail para que não fique tudo na mesma pasta. Mas se você não quiser ter que fazer isso, você não precisa! A lista de discussão ruby-talk tem um espelho no grupo de notícias comp.lang.ruby, assim, você pode ver as mensagens por lá. Em suma, você verá as mesmas mensagens, mas de uma maneira um pouco diferente.

Tim Toady

Tenho tentado proteger você de algo com o que vai esbarrar em breve, é o conceito de TMTOWTDI (pronunciado como "Tim Toady"): There's More Than One Way To Do It (Há Mais De Uma Maneira Para Fazer Isso).

Agora alguns vão lhe dizer que TMTOWTDI é uma coisa maravilhosa, enquanto outros se sentem bastante diferente. Eu realmente não tenho fortes sentimentos sobre o assunto em geral, mas eu acho que é uma péssima maneira de ensinar para alguém como programar. (Como se aprender uma maneira de fazer alguma coisa não fosse suficientemente desafiante e confuso!).

No entanto, agora que você está indo além deste tutorial, você verá muito código diversificado. Por exemplo, posso pensar em pelo menos cinco outras maneiras de criar uma string (além de circundar algum texto com aspas simples), e cada um deles funciona de maneira um pouco diferente. Eu só lhe mostrei o mais simples dos seis.

E quando conversamos sobre ramificações, mostrei para você if, mas não lhe mostrei unless. Eu vou deixá-lo entender isso no irb.

Outro agradável atalho que você pode usar com if, unless, while, é a elegante versão de uma linha:

#  Estas palavras são de um programa que escrevi para gerar
#  baboseiras em inglês. Bacana, não?
puts 'grobably combergearl kitatently thememberate' if 5 == 2**2 + 1**1
puts 'enlestrationshifter supposine follutify blace' unless 'Chris'.length == 5
grobably combergearl kitatently thememberate

E, finalmente, há uma outra forma de escrever métodos que recebem blocos (não procs). Vimos isso onde recebemos o bloco e o transformamos em uma proc usando o truque do &block na lista de parâmetros quando se define a função. Depois, para chamar o bloco, você usa block.call. Pois bem, há um caminho mais curto (embora pessoalmente eu o julgue mais confuso). Em vez disto:

def facaDuasVezes(&bloco)
  bloco.call
  bloco.call
end

facaDuasVezes do
  puts 'murditivent flavitemphan siresent litics'
end
murditivent flavitemphan siresent litics
murditivent flavitemphan siresent litics

...você faz isso:

def facaDuasVezes
  yield
  yield
end

facaDuasVezes do
  puts 'buritiate mustripe lablic acticise'
end
buritiate mustripe lablic acticise
buritiate mustripe lablic acticise

Não sei ... O que você acha? Talvez seja eu, mas... yield?! Se fosse algo como chame_o_bloco_escondido (call_the_hidden_block) ou algo assim, faria muito mais sentido para mim. Muitas pessoas dizem que yield faz sentido para elas. Mas acho que esse é o propósito de TMTOWTDI: elas fazem do jeito delas, e eu vou fazer à minha maneira.

O FIM

Use-o para o bem e não para o mal. :-) E se você achou este tutorial útil (ou confuso, ou se você encontrou um erro), me faça saber!

 

© 2003-2015 Chris Pine