Sather

Sather
linguaggio di programmazione
AutoreSteve Omohundro
Data di origine1990
Ultima versione1.2.3 (7 luglio 2007)
Paradigmiorientato agli oggetti, funzionale
Tipizzazionestatica, forte
Implementazione di riferimento
LicenzaGNU GPL v3
Sito webwww.gnu.org/software/sather/

Sather è un linguaggio di programmazione orientato agli oggetti. Nacque all'incirca nel 1990 all'International Computer Science Institute dell'Università della California, sviluppato da un gruppo internazionale guidato da Steve Omohundro. Supporta la garbage collection e la programmazione generica dei sottotipi. In origine si basava su Eiffel ma ora include anche caratteristiche di programmazione funzionale.

Hello World

class HELLO_WORLD is
 main is 
  #OUT+"Hello World\n"; 
 end; 
end;

Alcuni commenti sul codice:

Esempio di iteratori

Questo programma stampa i numeri da 1 a 10.

 class MAIN is
   main is
     loop
      i := 1.upto!(10);
      #OUT + i + "\n";
     end;
   end;
 end;

loop ... end è il costrutto preferito per cicli, anche se while e repeat-until sono disponibili. Nel costrutto possono essere usati uno o più iteratori, i cui nomi finiscono sempre con un punto esclamativo. (Questa convenzione è controllata dal compilatore del linguaggio.) upto! è un metodo della classe INT che accetta un argomento once, un argomento il cui valore non cambierà all'interno dell'iteratore. upto! potrebbe essere implementato col seguente codice.

  upto!(once m:INT):SAME is
    i: INT := self; -- inizializza i al valore di self, 
                    -- che è l'intero per il quale il metodo è invocato.
    loop
      if i>m then 
        quit;  -- Esci dal ciclo quando i è maggiore di m.
      end;
      yield i; -- Altrimenti use i come valore di ritorno e continua il ciclo.
      i := i + 1; -- Incrementa il suo valore di 1.
    end;
  end;

L'informazione sul tipo di una variabile è indicata usando la sintassi post-fissa variable:CLASS. Il tipo della variabile può essere spesso dedotto ed è quindi una informazione opzionale, come in anInteger::=1. SAME è una pseudo-classe che si riferisce alla classe attuale.

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica