Successivo

News

Ruby Thursday

Michele Costabile | 13 Marzo 2008

Fosse stato martedì, la citazione dei Rolling Stones sarebbe stata corretta, ma non si poteva aspettare. Ruby è un linguaggio simpatico, regolare, facile, potente, sintetico e anche popolare.

Fosse stato martedì, la citazione dei Rolling Stones sarebbe stata corretta, ma non si poteva aspettare. Ruby è un linguaggio simpatico, regolare, facile, potente, sintetico e anche popolare, quindi è proprio ora che abbia uno spazio fisso nella rubrica.

Facciamo un piccolissimo esempio per vedere cosa ci può elettrizzare in Ruby.
Ecco qualche riga di codice apparentemente innocente:

10.times do |i|
	print "#{i} "
end

Cominciamo dal primo elemento:

10.times

. Tutto in Ruby è un oggetto, anche una costante numerica, quindi 10 ha dei metodi, in particolare il metodo

times

itera un numero di volte pari al numero a cui è applicato.
La seconda parte della prima riga, non è per niente innocente: do |i| è l’inizio di un blocco di codice in cui di dichiara che i è un parametro locale al blocco. Segue la parte più interessante: print “#{i} “.
Non è tanto interessante l’istruzione che serve per stampare un numero seguito da uno spazio, quanto il fatto che un blocco di codice viene passato come parametro al metodo

times

del numero i. Ripetiamo e metabolizziamo: un blocco di codice viene passato come parametro al metodo times del numero i, una cosa che in altri linguaggi, come Java è estranea al linguaggio.
Lo stesso modello di programmazione è al lavoro in questo esempio:

numbers = [1, 2, 5, 6, 9, 21]
 
numbers.each do |x|
	print "#{x} "
end

Bene, adesso pensiamo a questi esempi di codice Java, presi dal Java Almanac

// For a set or list
for (Iterator it=collection.iterator(); it.hasNext(); ) {
    Object element = it.next();
}

// For keys of a map
for (Iterator it=map.keySet().iterator(); it.hasNext(); ) {
    Object key = it.next();
}

// For values of a map
for (Iterator it=map.values().iterator(); it.hasNext(); ) {
    Object value = it.next();
}

// For both the keys and values of a map
for (Iterator it=map.entrySet().iterator(); it.hasNext(); ) {
    Map.Entry entry = (Map.Entry)it.next();
    Object key = entry.getKey();
    Object value = entry.getValue();
}

Direi che non c’è molto da aggiungere per mettere in luce la potenza e la sinteticità  del linguaggio. Un altro esempio è questo:

diz = {}

confrontato con questo:

Dictionary<string, string> diz = new Dictionary<string, string>();

Aggiungiamo quello che per me è il tassello finale: Ruby è disponibile sulla piattaforma Java e Sun dà  il suo sostegno a Ruby sulla VM Java. In altre parole la vostra prossima applicazione bancaria potrebbe essere scritta usando l’ambiente Java che avete a disposizione, ma in un linguaggio molto più scattante e produttivo.
Cominciamo quindi a installare Ruby, seguendo le istruzioni di uno dei tanti ottimi manuali online o tagliando tutti gli angoli e scaricando il pacchetto di installazione su Windows.