Accedi come Scuola



Registrati come Scuola

Oltre questo Tutorial

E adesso, dove andare? Se hai una domanda, a chi puoi chiedere? E se volessi che un programma aprisse una pagina web, mandasse una email, o ridimensionasse un'immagine digitale? Beh, ci sono tanti, tantissimi posti per trovare aiuto con Ruby. Sfortunatamente, sapere questa cosa non ti aiuta molto, o sbaglio? ;-)

Per me, ci sono davvero solo tre posti in cui cerco aiuto con Ruby. Se è una piccola domanda, e penso che posso sperimentare da solo per trovare la risposta, uso irb. Se è una domanda più grande, cerco la risposta nel mio libro pickaxe [NdT: "picozza", è il nome affettuoso con cui la comunità che usa Ruby si riferisce a un libro "storico" di cui l'autore parlerà fra poco]. E se proprio non riesco a cavarmela da solo, chiedo aiuto su ruby-talk

IRB: Interactive Ruby (Ruby interattivo)

Se hai installato Ruby, allora hai installato anche irb. Per usarlo, vai al prompt dei comandi e scrivi semplicemente irb. Quando sei in irb, puoi scrivere ogni espressione in Ruby che vuoi, e irb ti restituirà il risultato. Prova a scrivere 1 + 2, e ti risponderà 3. (NB: non hai bisogno di scrivere puts, irb chiama puts automaticamente su ogni risultato per mostrarti l'output). E' una specie di gicante calcolatrice Ruby. Quando hai finito, semplicemente scrivi exit. [NdT: se qualcosa dovesse andare storto, se per esempio dovessi ficcarti in un ciclo infinito, anche Ctrl+C può essere utile a terminare l'esecuzione].

Ce ne sarebbero di cose da dire su irb, ma puoi imparare tutto quello che ti serve nel libro pickaxe.

The Pickaxe: "Programming Ruby"

Assolutamente il libro su Ruby da procurarsi è "Programming Ruby, The Pragmatic Programmer's Guide", by David Thomas e Andrew Hunt (the Pragmatic Programmers). Sebbene ti raccomandi vivamente di procurarti l'ultima edizione di questo eccellente libro, che copre tutte le novità di Ruby, puoi ottenerne anche una versione più datata (ma ancora rilevante) gratis online. (Effettivamente, se hai installato la versione Windows di Ruby, già ce l'hai).

In questo libro puoi trovare tutto su Ruby, dalle basi sino agli argomenti più avanzati. E' facile da leggere; completo; praticamente perfetto. Vorrei che ogni linguaggio di programmazione potesse vantare un libro di una tale qualità. Nella parte finale del libro, troverai un'enorme sezione che documenta dettagliatamente ogni metodo di ogni classe, comprensiva di esempi. Questo libro, semplicemente, lo amo!

Ci sono diversi posti da cui puoi procurartelo (incluso il sito dei Pragmatic Programmers), ma il mio posto preferito è presso ruby-doc.org. Quella versione ha una bella tabella dei contenuti a lato e un indice. (ruby-doc.org ha tantissima altra ottima documentazione, come la Core API e la libreria standard... praticamente documenta tutto ciò che Ruby ha nativamente).

E perché si chiama "the pickaxe" ("la picozza")? Beh, c'è un'immagine di una picozza sulla copertina del libro. E' un nome ridicolo, ma rimane impresso.

Ruby-Talk: la Mailing List di Ruby

Anche con irb e il pickaxe, certe volte non riesci a capire. O magari vuoi sapere se qualcuno ha già affrontato i problemi su cui stai lavorando, per vedere se puoi adottare le sue soluzioni senza doverle riscrivere. In questi casi, il posto dove andare è ruby-talk, la Mailing List di Ruby. E' piena di persone intelligenti ed amichevoli. Per saperne di più, e/o per iscriverti, vai qui.

Attenzione: Ci sono tante email che circolano sulla mailing list ogni giorno. Le mie ho fatto in modo che siano automaticamente mandate a una differente cartella del mio programma di gestione delle email. Se non sai come gestire tutta quella mole di email, comunque, non devi! La mailing list ruby-talk è agganciata al newsgroup comp.lang.ruby e vice versa, in modo tale che puoi leggere gli stessi messaggi lì. In ogni caso quindi riesci a ottenere le stesse informazioni, solo, in formati leggermente diversi.

Tim il Leccapiedi

Qualcosa da cui ho cercato di proteggerti, ma col quale ti scontrerai presto, è il concetto di TMTOWDI (pronunciato "Tim Toady", tradotto, "Tim il Leccapiedi"): "There's More Than One Way To Do It", ovvero, "C'è Più Di Un Modo Di Fare La Stessa Cosa".

Ora, alcuni ti diranno che cosa meravigliosa sia il TMTOWTDI e ne tesseranno le lodi, mentre altri la penseranno molto diversamente. Io non ho nulla di personale contro il nostro Tim, ma penso che sia un modo terribile di insegnare a qualcuno come si programma. (Come se imparare a fare una cosa in un modo non fosse già abbastanza difficile!)

Tuttavia, ora che andrai aldilà di questo tutorial, vedrai codice molto più variegato. Per esempio, mi vengono in mente almeno altri cinque modi in cui puoi creare una stringa (a parte il circondare del testo fra apici singoli), e ciascuno di essi funziona in modo leggermente diverso. Ti ho mostrato solo il più semplice dei sei.

E quando abbiamo parlato del branching, Ti ho mostrato if (se), ma non ti ho mostrato unless (a meno che). Ti lascierò capire come funziona sperimentando in irb.

Un altra piccola scorciatoia che puoi usare con if, unless, e while, è la carina versione in una singola linea:

# encoding: utf-8
#  Queste parole vengono da un programma che ho scritto per generare
# automaticamente del farfuglìo che somigli a vero inglese. Fico, eh?
puts 'grobably combergearl kitatently thememberate' if 5 == 2**2 + 1**1
puts 'enlestration supposine follutify blace' unless 'Chris'.length == 5
  grobably combergearl kitatently thememberate

E infine, c'è un altro modo di scrivere metodi che prendono blocks (non procs). Abbiamo visto che possiamo prendere il block e trasformarlo in un proc usando la dicitura &block alla fine della lista dei parametri nella definizione di un metodo. Quindi, per chiamare il block, basta scrivere block.call. Ebbene, esiste una scorciatoia per fare la stessa cosa (sebbene personalmente io la ritenga più confusa). Al posto di fare così:

def falloDueVolte(&block)
  block.call
  block.call
end

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

...puoi fare anche così:

# encoding: utf-8
def falloDueVolte
  yield
  yield
end

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

Non saprei... che ne pensi? Forse son solo io, ma... yield?! Se fosse qualcosa tipo chiama_il_block_nascosto o qualcosa del genere in inglese, per me avrebbe avuto molto più senso. Tante persone dicono che secondo loro yield (che si può tradurre, tra le altre cose, in "cedere" e "svelare") ha perfettamente senso. Immagino che questo sia il lato bello di TMTOWTDI: loro fanno a modo loro, io faccio a modo mio.

FINE

Usatelo per il bene e non per il male. :-)
E se lo trovi utile (o confuso, o hai trovato un errore), fammi sapere!

NOTE CONCLUSIVE DEL CURATORE

Uff... finito!
Congratulazioni anche da parte mia per essere arrivato/a fin qui! E' vero che si trattava di un tutorial di livello base ma c'è da dire che gli interessanti esercizi che propone Chris non sono proprio tutti banali. Anzi, alcuni li definirei vere e proprie sfide. Inoltre, la maggiore difficoltà della programmazione sta proprio nell'impararne bene i fondamenti; impresa nella quale, se hai risolto i principali esercizi, puoi considerarti a buon punto!

Ora, se volessi portare alla mia attenzione qualcosa sul tutorial puoi contattarmi commentando in fondo a questa pagina. Sono benaccetti commenti, suggerimenti, richieste, segnalazioni e quant'altro.

Oltre alle fonti per proseguire lo studio che ha indicato Chris, che sono tutte in lingua inglese, ci tengo indicarne un'altra per chi desiderasse altre risorse in italiano: vale a dire... rullo di tamburi... la nostra piattaforma dedicata ai corsi in Italia!

Lì troverai una serie di risorse dedicate all'apprendimento della programmazione in Ruby applicata, in particolar modo, allo Sviluppo di Siti e Applicazioni Web.
Il tutto in continuo aggiornamento e prediligendo sempre, fin dove possibile, la lingua italiana.
Se vuoi essere avvisato quando saranno disponibile altri contenuti gratuiti o corsi sul Web Design etc, non dimenticare di iscriverti alla nostra mailing list compilando il form qui sotto. In bocca al lupo per i tuoi progetti e a presto! :-)

Duccio

Che ne dici?