Introduzione al linguaggio Scala



In questi ultimi tempi si fa un gran parlare di linguaggi che possano superare Java nel medio periodo. Molti sono gli estimatori di linguaggi dinamici come Ruby o Pyton, anche se questo tipo di strumenti genera numerosi dubbi in chi è da sempre abituato a linguaggi che, come Java, posseggono una tipizzazione statica. Vi è inoltre da considerare che per il linguaggio di Sun vi è una enorme disponibilità di librerie che possono aiutare gli sviluppatori in quasi ogni ambito della programmazione, cosa non sempre vera per i suoi concorrenti. Altro punto a favore di Java è la sua diffusione capillare, dai telefonini ai main-frame, ed anche questa è una caratteristica che molti pretentendi alla sua successione non possono vantare.
Il linguaggio Scala, nato presso il Politecnico di Losanna, cerca di dare una risposta a tutte queste obiezioni.
Scala è un linguaggio a tipizzazione statica che gira nella Java Virtual Machine. Il compilatore Scala generara dei normalissimi file .class interpretabili da una qualsiasi JVM 1.4 o superiore. Questi file possono essere eseguiti tramite il comando scala, che altro non è se non un file batch per lanciare l’ambiente di esecuzione Scala all’interno della JVM. Tutte Le le librerie Java possono essere utilizzate in Scala, anzi il package java.lang viene importato automaticamente. Inoltre da Scala si possono estendere classi o implementare interfacce Java, consentendone l’integrazione con i più comuni framework.
E’ giunto ora il momento di scrivere il nostro primo programma Scala. Prima di procedere è però necessario procurarsi una distribuzione di Scala, che prevede come unico prerequisito il JDK 1.4 o superiore. Una volta installata è possibile compilare i programmi con scalac per poi eseguirli con il comando scala. Se però siete già degli utenti di Eclipse (se ancora non lo foste, vi invito caldamente a diventarlo), la soluzione migliore è quella di installare il plugin per questo IDE. In questo caso i prerequisiti sono Eclipse 3.3 e quindi il JDK 1.5.
Ma torniamo al nostro primo programma. Indovinate un po’ cosa scriveremo…

import javax.swing.JOptionPane

object ciao extends Application {
  JOptionPane.showMessageDialog(null, "Ciao, mondo!")
  System exit 0
}

Il codice, come si può notare, è simile a Java, ovviamente con qualche differenza. Andiamo con ordine. Prima di tutto notiamo la parola riservata object. Con essa intendiamo definire una classe che avrà un’unica istanza (detta anche Singleton).
Vediamo inoltre che nella nostra applicazione Scala possiamo importare ed utilizzare senza alcun problema oggetti delle librerie Java, nel nostro esempio un JOptionPane. Vediamo inoltre che gli oggetti di java.lang come System vengono importati automaticamente.
L’ultima linea di codice, necessaria a terminare i thread di Swing che altrimenti rimarrebbero penzolanti, potrebbe essere scritta con una sintassi più simile Java: System.exit(0). In questo caso ho però sfruttato la possibilità offerta da Scala di omettere punti e parentesi nel caso di invocazione di metodi con un solo parametro. La cosa potrebbe sembrare marginale, ma rivela invece una delle caratteristiche più interessanti del linguaggio: tutto in Scala è un oggetto, inclusi numeri e funzioni. Cerco di spiegarmi meglio. L’espressione 2 + 3 - 5 non è altro che una sequenza di invocazione dei metodi + e - sugli oggetti 2, 3 e 5 scritta omettendo punti e parentesi. In modo prolisso essa corrisponde cioè a 2.+(3.-(5)).
Ma cosa si intende dicendo che anche le funzioni sono oggetti? Vediamolo con un esempio.

object Funzioni extends Application {

  def quadrato(x: int) = x * x
  def cubo(x: int) = x * x * x 
  def stampa(funzione: int => int, valore: int) = 
    println(funzione(valore))
  
  stampa(quadrato, 3)
  stampa(cubo, 2)
  
}

Il risultato di questa elaborazione, indovinate un po’, è

9
8

Come si può facilmente intuire, il metodo stampa ha due parametri, il primo è una funzione che prende in ingresso un intero e restituisce un intero, il secondo parametro è l’intero al quale la funzione sarà applicata. Potente, vero?
Prima di darci appuntamento al prossimo articolo, qualche link su questo linguaggio: una prima guida introduttiva ed il mio piccolo blog in italiano sull’argomento.

Annunci sponsorizzati:
Condividi su Facebook Condividi su Twitter!
Pinterest