Python è un’altro valido linguaggio utilizzabile per diversi scopi. Passando da Python a Ruby, troverai che c’è un po’ più di sintassi da imparare che in Python.
Somiglianze
Come in Python, in Ruby,…
- C’è un prompt interattivo (chiamato
irb). - Puoi consultare la documentazione da riga di comando (con il comando
riinvece dipydoc). - Non ci sono terminatori di riga speciali (eccetto l’accapo).
- Alcune stringhe possono occupare più di una riga, come le stringhe tra triple virgolette in Python.
- Le parentesi quadre sono per le liste, mentre le graffe sono per i dict (che in Ruby sono chiamati “hash”).
- Gli array si usano allo stesso modo (Si possono aggiungere elementi ad un array e comporli tra loro per ottenere delle matrici o array di array).
- Gli oggetti sono fortemente e dinamicamente tipizzati.
- Ogni cosa è un oggetto, e le variabili sono solo riferimenti a oggetti.
- Sebbene le parole chiave siano un po’ diverse, le eccezioni lavorano più o meno nello stesso modo.
- Esiste un tool per generare automaticamente la documentazione direttamente dal codice (quello di Ruby è chiamato rdoc).
Differenze
A differenza di Python, in Ruby…
- Le stringhe sono mutabili.
- È possibile creare delle costanti (variabili che non vengono cambiate).
- Ci sono delle convenzioni riguardanti i nomi e le maiuscole (per esempio i nomi delle classi iniziano con una maiuscola, e le variabili con una minuscola).
- C’è un solo tipo di contenitore per le liste (un Array) ed è mutabile.
- Le stringhe tra virgolette supportano diverse sequenze di escape (come
\t) e una speciale “sostituzione di espressioni” direttamente in altre stringhe senza dover"concatenare" + "più stringhe" + "insieme". Le stringhe tra apici sono ler"raw string"di Python. - Non vi sono classi di nuovo o vecchio stile, ma di un solo tipo soltanto.
- Si accede agli attributi di una classe sempre tramite delle chiamate a metodi.
- Le parentesi per le chiamate a metodi sono normalmente opzionali.
- Esistono le parole chiave
public,private, eprotectedper i controlli di accesso, invece delle_convenzioni_di undescore__volontarie__di Python. - Si usano dei miscugli (mixins) invece dell’eredità multipla.
- È possibile “riaprire” una classe in qualsiasi momento e aggiungere dei metodi nuovi.
- Esistono
trueefalseinvece diTrueeFalse(enilinvece diNone). - Nei controlli di verità, solo
falseenilsono considerati dei valori falsi, ogni altra cosa è sempre vera (anche0,0.0,"", e[]). - Si usa
elsifinvece dielif. - Si usa
requireinvece diimport. Per il resto l’uso è lo stesso - I commenti sopra una riga di codice (invece di docstring sotto di esse) sono usati per generare i commenti.
- Ci sono diversi shortcut che, sebbene siano di più da ricordare, imparerai in fretta e possono essere usati per rendere il codice Ruby più scorrevole e molto produttivo.
- Non c’è modo di desettare una variabile una volta che è stata settata
(come nello statement
deldi Python). Puoi resettare una variabile anil, dando così la possibilità ai vecchi contenuti di essere rimossi tramite garbage collection, ma la variabile rimane nella tabella dei simboli fintanto che è in scope.