Successivo

News

Ruby tuesday: commenti e identificatori

Michele Costabile | 17 Marzo 2009

I commenti in Ruby Iniziano con il carattere hash, il cancelletto, come nella shell di unix e in Perl, una […]

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                                                                
>>