I commenti in Ruby Iniziano con il carattere hash, il cancelletto, come nella shell di unix e in Perl, una scelta molto gettonata, anche per usare un trucco molto comune su Unix, quello di associare un file di testo al suo interprete.
Su Windows il sistema si basa su una tabella di estensioni per associare i documenti con il codice che li può trattare, per esempio facendo corrispondere i file *.doc a Word.
Su Unix, quindi Linux e MacOS, la convenzione è di usare il primo short o il primo long che inizia un file dati come marcatore mettendoci un magic number, cioè un codice unico che identifica il tipo di file in una tabella di sistema. Questa è la ragione per cui MacOS riconosce, per esempio, i file di tipo Pdf anche se non hanno l’estensione .pdf.
Chi crea un tipo di file può scegliere un numero qualsiasi, purché non sia già usato per altri documenti. Per esempio, le classi Java corrispondono al numero 3405691582, che in esadecimale si legge 0xcafebabe, come dire ragazza da bar.
Fra questi numeri magici ce n’è uno che è interpretato dalla componente del sistema operativo che carica in memoria e avvia un eseguibile. Si tratta del numero corrispondente ai codici Ascii delle lettere #!. Il loader di Unix esamina il resto del file per cercare il path di un eseguibile a cui passare il file invocato come parametro. Grazie a questo trucco si possono mandare in esecuzione comandi shell iniziando il testo di uno script con
#!/bin/sh
e quindi si può eseguire il testo di un programma Ruby marcandolo come eseguibile con il comando
> chmod 755 ilmioscript.rb
e facendo iniziare il codice con la riga
#!/usr/bin/ruby
Questa è la ragione per cui diversi linuaggi interpretati adottano il carattere ‘#’ (letto hash oppure number) come iniziatore di un commento.
Ruby supporta anche commenti multilinea con un marcatore di inizio e di fine, per esempio
=begin Questo è un commento a testo libero che può spaziare su più righe. Adatto per scrivere un editoriale in testa al codice. =end
Gli identificatori, sono nomi che possono indicare gli elementi lessicali del linguaggio come variabili, costanti e metodi.
Alcuni nomi, quelli contenuti in questa tabella, sono riservati per il linguaggio e non possono essere usati come identificatori
=begin =end alias and begin BEGIN break case class def defined? do else elsif END end ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield
Maiuscole e minuscole sono importanti, come in tutti i linguaggi seri, che lasciano al programmatore la libertà di sbagliare.
Proviamo subito nell’interprete online su tryruby.hobix.com:
>> a = 3 => 3 >> A = 5 => 5 >> a == A => false >>