Corso
Introduzione

Scala è stato progettato da Martin Odersky, professore all’École Polytechnique Fédérale de Lausanne (EPFL) in Svizzera e informatico tedesco. Martin ha iniziato a lavorare su Scala nel 2001 e il primo rilascio risale al 2004.
Scala sta per Scalable Language. È un linguaggio general-purpose, orientato agli oggetti, che condivide alcune caratteristiche con il linguaggio Java. Fornisce supporto alla programmazione funzionale. Molte delle decisioni progettuali di Scala miravano a risolvere gli svantaggi del linguaggio Java.
Ecco alcune funzionalità offerte da Scala:
-
Il codice sorgente Scala può essere compilato in bytecode Java e, quindi, eseguito su una Java Virtual Machine (JVM).
-
Offre interoperabilità con Java, così che le librerie scritte in entrambi i linguaggi possano essere utilizzate in un codebase Scala o Java.
-
Come Java, anche Scala utilizza una sintassi con parentesi graffe.
-
Include molte caratteristiche dei linguaggi di programmazione funzionale come Scheme, Standard ML e Haskell, tra cui currying, inferenza dei tipi, immutabilità, valutazione pigra e pattern matching.
-
Supporto per applicazioni Web tramite JavaScript.
-
A differenza di Java, Scala supporta anche l’overloading degli operatori, i parametri opzionali, i parametri nominati e le stringhe raw.
Un fatto interessante su Scala è che è ampiamente utilizzato da aziende come Apple, Twitter, Walmart e Google grazie alla sua scalabilità e alla possibilità di impiegarlo nelle operazioni di backend.
Configurare Scala in Jupyter Notebook
Jupyter Notebook è uno degli strumenti più usati in informatica, soprattutto nell’ambito data science. Supporta anche lo sviluppo in Scala grazie a spylon-kernel.
Nota: Se sei alle prime armi con Jupyter Notebook, dai pure un’occhiata a questo tutorial completo.
Configurare l’ambiente Scala in Jupyter Notebook non è affatto complicato. Vediamo come farlo in pochi passaggi.
-
Per prima cosa, installa
spylon-kernel.pip install spylon-kernel(Python 2)pip3 install spylon-kernel(Python 3) -
Poi crea una specifica di kernel che ti permetta di selezionare il
scala-kernelin Jupyter Notebook.python -m spylon_kernel install(Python 2)python3 -m spylon_kernel install(Python 3) -
Quindi, come passaggio importante, installa
pysparkefindsparkpoichéspylon-kernelinstalla anche alcuni componenti dispark.pip install pyspark findspark(Python 2)pip3 install pyspark findspark(Python 3) -
Infine, avvia Jupyter Notebook, scegli come kernel
spylon-kernele sei pronto per iniziare!

- Eseguiamo un piccolo pezzetto di codice per verificare che il kernel Scala sia stato configurato correttamente.
val x = 2
val y = 3
x*y
x: Int = 2
y: Int = 3
res1: Int = 6
Ottimo! Come puoi vedere dall’output sopra, sei riuscito a configurare l’ambiente Scala in Jupyter Notebook.
Sintassi di base
Iniziamo stampando Hello, World! in Scala.
print("Hello, World!")
Hello, World!
Come vedi, è semplicissimo: basta un comando print seguito dall’input come argomento.
Ora vediamo alcuni dettagli relativi alla sintassi in Scala:
-
Scala è case-sensitive, il che significa che gli identificatori
DataCampedataCamphanno un significato diverso in Scala. -
In Scala, la prima lettera di tutti i nomi delle classi dovrebbe essere in
Maiuscolo. Se più parole sono combinate per formare il nome della classe, la prima lettera di ogni parola dovrebbe essere maiuscola. Per esempio,class MyScalaDataCampTutorial. -
I nomi dei metodi in Scala funzionano in modo leggermente diverso rispetto ai
nomi delle classi, principalmente per distinguerli da questi ultimi. I nomi dei metodi dovrebbero iniziare con una lettera minuscola (Fonte). Se più parole sono combinate per formare il nome del metodo, allora la prima lettera di ogni parola interna dovrebbe essere maiuscola. Per esempio,def firstDatacampScalaTutorial() -
In Scala, il nome del file del programma deve corrispondere esattamente al nome dell’oggetto. Quando salvi il file, devi usare il nome dell’oggetto e aggiungere
.scalaalla fine. Ad esempio, supponiamo cheScalaTutorialsia il nome dell’oggetto. Allora il file dovrebbe essere salvato comeScalaTutorial.scala.Nota: se il nome del file e quello dell’oggetto non coincidono, il programma non verrà nemmeno compilato.
-
Infine, come nella maggior parte dei linguaggi, anche l’esecuzione di un programma Scala inizia dal metodo
main(), che è una parte cruciale di ogni programma Scala.
La figura seguente mostra le parole riservate in Scala, che non possono essere usate come costanti o variabili o come altri identificatori.
Tipi di dato
I tipi di dato in Scala sono quasi identici a quelli di molti altri linguaggi di programmazione come C, C++, Java, Python, ecc., con un’impronta in memoria e una precisione simili.
Infine, vediamo alcuni dei tipi di dato presenti in Scala:
-
Int: Un valore con segno a 32 bit (può assumere valori positivi e negativi) ha un intervallo da $2^{-31}$ a $2^{31} - 1$
-
Byte: Un valore con segno a 8 bit ha un intervallo da $2^{-7}$ a $2^{7} - 1$
-
Short: Un valore con segno a 16 bit ha un intervallo da $2^{-15}$ a $2^{15} - 1$
-
Long: Un valore con segno a 64 bit ha un intervallo da $2^{-63}$ a $2^{63} - 1$
-
Float: Sia 32 bit (virgola mobile a singola precisione) sia 64 bit (virgola mobile a doppia precisione)
-
Char: Un carattere Unicode senza segno a 16 bit (può assumere solo valori positivi).
Altri tipi di dato sono String, Boolean, Null.
Conclusione
Congratulazioni per aver completato questo tutorial.
È un buon punto di partenza per chi è interessato a imparare Scala.
Per saperne di più, dai un’occhiata ai tutorial di DataCamp su Scala:
Basi di Funzioni e Metodi in Scala
C’è un’enorme quantità di informazioni su Scala che resta da esplorare, come if/else, cicli for, vari operatori in Scala, ecc., che verranno trattate in futuri tutorial. Resta sintonizzato!
Riferimenti:
Per qualsiasi domanda relativa a questo tutorial, scrivi pure nei commenti qui sotto.

