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
ri
invece 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
, eprotected
per 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
true
efalse
invece diTrue
eFalse
(enil
invece diNone
). - Nei controlli di verità, solo
false
enil
sono considerati dei valori falsi, ogni altra cosa è sempre vera (anche0
,0.0
,""
, e[]
). - Si usa
elsif
invece dielif
. - Si usa
require
invece 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
del
di 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.