I linguaggi di programmazione sono tanti e, a differenza di ciò che possiamo essere portati a pensare, sono tutti potenzialmente uguali. È il programmatore a scegliere il linguaggio più vicino a lui. Esistono ovviamente delle differenze dovute all'implementazione (interpretativa o compilativa) dei vari linguaggi che possono dare una maggiore flessibilità o una maggiore velocità. In definitiva, però, almeno per quanto riguarda l'ambito "amatoriale" se così possiamo definirlo, un linguaggio vale l'altro. Il "Ruby" è un linguaggio che, nell'ultimo periodo, sta guadagnando abbastanza fama (grazie a framework come "Ruby on Rails" per la creazione di applicazioni web) ma che fino a poco tempo fa era quasi sconosciuto, almeno in occidente.
E' importante innanzitutto precisare che il Ruby è attualmente implementato in modo interpretativo: ciò implica, senza scendere nel dettaglio, una maggiore portabilità (uno script Ruby può essere eseguito su Windows, su Linux e su Mac nella maggior parte dei casi senza che ci sia bisogno di cambiare una riga di codice!) a scapito però delle prestazioni che non sono elevate come quelle di un programma scritto in C, ad esempio.
L' utilizzo del Ruby sta anche nel tool per creazione di RPG chiamato RPG MAKER XP.
La caratteristica principale del Ruby è il suo essere completamente orientato agli oggetti. Persino i numeri sono oggetti!
Ma andiamo per gradi. Come esempio sono riportati alcuni "Hello World":
C:
#include < stdio. H>
int main (void) {
printf ("Hello World
");
return 0;
}
Java:
public class Main {
public static void main (String[] args) {
System. Out. Println ("Hello World");
}
}
Ruby:
puts "Hello World"
Salta subito all'occhio che, mentre per C e Java bisogna usare 5 righe di codice, in Ruby ne basta una. Andando più nel dettaglio notiamo che nei primi due esempi c'è bisogno di una sorta di intestazione, di una funzione "main" di ingresso, mentre nel Ruby questo non accade. Infine, ultimo particolare, in Ruby il "; " alla fine dell'istruzione è opzionale e, nell'esempio, è omesso senza che
questo comporti un errore di sintassi. I vantaggi di questi "particolari" sono molti, ma verranno compresi solo con il tempo (per chi non ha mai programmato). Uno dei concetti fondamentali della programmazione è quello di variabile. Cos'è una variabile e a cosa serve?
Le variabili servono a memorizzare valori, numerici o testuali che siano, affinché si possano riutilizzare in futuro. Come in tutti i linguaggi di alto livello, anche nel Ruby l'assegnazione di una variabile è estremamente semplice:
nome = valore
Dopo questa istruzione potremo utilizzare l'identificatore nome al posto di valore. Chi ha già programmato in C, Java, Pascal o in altri linguaggi in cui è necessaria la dichiarazione della variabile, si stupirà del fatto che questa manchi. Non è un errore: in Ruby le variabili non vanno dichiarate. In generale, se una variabile viene assegnata questa esiste; se viene richiamata senza essere assegnata restituisce un errore. Ad esempio è lecito fare:
alfa = 12
beta = alfa + 1
Ma scrivere successivamente:
gamma = beta - delta
darà errore:
"< NameError> Undefined local variable or method'delta' for main: Object".
Un'ultima cosa da sapere per iniziare a scrivere il primo script funzionante è come si gestisce l'input/output. Abbiamo visto per l' Hello World che la funzione "puts" permette di scrivere sulla console, tuttavia questa non è l'unica. Ecco un breve elenco di tutte le funzioni basilari di output su schermo:
- puts string - Scrive la stringa e va a capo
- print string - Scrive la stringa senza andare a capo
- p object - Scrive l'oggetto su schermo. E' utilissima nel debug, ma adesso non ci interessa molto.
La funzione di input è invece una sola: gets. Ecco un esempio di input:
nome = gets
Nella variabile nome verrà memorizzato l'input dell'utente. Per ora l'input può essere solo una stringa del testo; vedremo in seguito come prendere in input numeri.
Ecco quindi un semplice programma di esempio:
print "Nome: "
nome = gets
print "Cognome: "
cognome = gets
puts "Hai inserito i seguenti dati: "
print "Nome: "
puts nome
print "Cognome: "
puts cognome
gets
Analizziamo riga per riga cosa succede sullo schermo:
Riga 1 - Nome:
Riga 2 - Nome: _ (aspetta l'input dell'utente; consideriamo che l'utente inserisca "uno")
Riga 3 - Cognome:
Riga 4 - Cognome: _ (aspetta l'input dell'utente; consideriamo che l'utente inserisca "due")
Riga 5 - Hai inserito i seguenti dati:
Riga 6 - Nome: (non va a capo!)
Riga 7 - Nome: uno (continua a scrivere l'input numero 1)
Riga 8 - Cognome:
Riga 9 - Cognome: due
Una precisazione è d'obbligo: puts, print, p e gets sono funzioni o meglio metodi, oggetti di cui si parlerà più approfonditamente in seguito. Il fatto che non richiedano le parentesi è una particolarità sintattica del Ruby:
print "ciao" - print ("ciao") - print ("ciao"); - print "ciao";
Si tratta di espressioni semanticamente e sintatticamente equivalenti. Si inizia ad intravedere quindi un'ulteriore caratteristica di questo straordinario linguaggio: la grande libertà che concede al programmatore di scrivere nel modo che più gli piace. Abbiamo detto all'inizio che è il programmatore che sceglie il linguaggio: il Ruby è forse uno dei pochi linguaggi adatto a quasi tutti i tipi di programmatore. Pur essendo completamente orientato agli oggetti, si può scrivere codice anche senza usare parentesi.
Simone Scalabrino della Freank-Expo
Autore: Freank