Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Programming Scala
Recensito da Giordano Scalzo il 26-11-2009 ore 11:23
Copertina ISBN: 9781934356319
Autori: Venkat Subramaniam
Editore: Pragmatic Bookshelf
Lingua: Inglese
Anno: 2009
Pagine: 250
Allegati: Nessuno
Intel Parallel Studio XE 2015
La serie "The Pragmatic Programmers" ha un approccio diretto e pragmatico, anche se non esaustivo, nell'affrontare i più nuovi linguaggi di programmazione. In questo senso "Programming Scala" non fa eccezione; scritto in un semplice e colloquiale stile che non affatica la lettura, è la perfetta introduzione a Scala, dedicato a programmatori Java con poco tempo a disposizione per lo studio di nuove tecnologie.

Il primo capitolo, "Getting Up to Speed with Scala", introduce il linguaggio e le modalità di installazione, sia su Windows che su UNIX, e come lanciarlo da linea di comando, da script o tramite il proprio editor preferito. A seguire, "Classes in Scala" mostra le prime differenze con Java: inizialmente non è necessario lasciare il proprio stile di sviluppo imperativo, ma la potenza di un approccio più funzionale e ad oggetti appare subito evidente. Molti esempi permettono di capire che in Scala non esistono tipi primitivi, ma tutto è un oggetto; l'utilizzo delle tuple, gli assegnamenti multipli e la flessibilità della ridefinizione degli operatori, metodi a tutti gli effetti, permettono a un codice Java di avere una marcia in più.

Nel terzo capitolo, "Sensible Typing", viene introdotta l'elegante gestione dei tipi: Scala è un linguaggio staticamente tipizzato, ma il modo in cui desume il tipo di una variabile, senza necessariamente dichiararlo esplicitamente, lo rende estremamente conciso; ad aumentare la densità del linguaggio, anche il tipo dei metodi viene dedotto dal contesto.

Come Java, Scala è un linguaggio multiparadigmatico, ma con una propensione all'approccio funzionale; nel quarto capitolo vengono mostrate le function value, funzioni come oggetti di prima classe, che si possono assegnare a variabili, passare a metodi, essere passate come valore di ritorno e anche annidate come parametri. A queste si affiancano le closure, una forma speciale di function value che si lega a variabili definite altrove. Usando questi costrutti come blocchi di base si ottiene velocemente codice conciso e riusabile.

Nel quinto capitolo si mostrano i Trait, che possono essere considerate interfacce con una parziale implementazione, che permettono di aggiungere molteplici comportamenti ad altre classi; infatti i Trait vengono usati per decorare oggetti, aggiungendo funzionalità senza dover ricorrere all'ereditarietà. In questo capitolo viene anche mostrata la capacità di Scala di effettuare conversione di tipi in modo implicito, permettendo di estendere il linguaggio e creando un vocabolario o una sintassi specifica alla propria applicazione o DSL. Nel sesto capitolo viene introdotta la seconda più utilizzata funzionalità di Scala, dopo le function value, e cioè il pattern matching. In questa sezione si vede come utilizzare questo meccanismo per sintetizzare ulteriormente il proprio codice.

Come promette il sottotitolo del libro, "Tackle Multi-Core Complexity On The Java Virtual Machine", nel capitolo settimo l'autore non manca di trattare l'elegante approccio alla concorrenza fornita. Ispirandosi al modello ad attori di Erlang, Scala utilizza un sistema di sincronismo tra thread, basato su scambio di eventi composto da messaggi immutabili. Diversamente dalla concorrenza in Java, non è necessario preoccuparsi del sincronismo, regioni critiche, semafori e risorse contese: grazie ai messaggi e all'immutabilità degli stessi, possiamo dimenticarci dei più comuni problemi della concorrenza, così come ci siamo dimenticati dei problemi della gestione della memoria, una volta fatto il passaggio a linguaggi con garbage collector.

Il compilatore Scala produce bytecode esattamente uguale a quanto generato dal compilatore, pertanto è estremamente banale integrare progetti Java già esistenti con le moderne funzionalità di Scala. Il nono capitolo, infatti, si rivolge agli sviluppatori Java, che vogliono estendere codice e librerie già esistenti, in modo da utilizzare parte della potenza di Scala, come ad esempio la gestione della concorrenza.

Un libro di programmazione non può dirsi completo e moderno se non tratta l'aspetto dello unit test. Nel [/b]decimo capitolo[/b] viene mostrato come sia semplice integrare JUnit con il proprio codice Scala e viene illustrato Scalatest, una elegantissima libreria, che segue sia la filosofia di test alla JUnit o TestNg, che la più attuale BDD, con un approccio a specifiche come RSpec e a storie come Cucumber o JBehave.

Come più volte fatto notare, le checked exception non si sono rivelate una idea molto utile, pertanto in Scala non è necessario né dichiararle né catturarle. Per tutto l'undicesimo capitolo viene mostrata una strategia per la gestione delle eccezioni estremamente concisa ed elegante.

Nel capitolo finale, viene mostrata una completa applicazione, sviluppata a partire dai test, che mostra tutti i punti di forza di Scala a cominciare dalla concorrenza, passando per il supporto al processamento dell'XML e finendo con l'integrazione con componenti Swing.

In conclusione, un libro assolutamente consigliato a tutti gli sviluppatori, che permette di avere un'infarinatura sufficiente dell'argomento; nel caso, si voglia approfondire si può passare al più corposo volume di riferimento "Programming in Scala".
proConciso, ma completo, il testo permette di essere operativi con Scala fin da subito.
controNessuno in particolare.
Precedente: Una panoramica sui thread-specific data
Successiva: Il progetto ROAMS, creazione automatizzata di mappe 3D
Intervento di Luigi Z a.k.a. ciupaz del 27-11-2009 ore 09:33, Milano (MI)
Cavaliere
Cavaliere

(162 interventi)
Iscritto il 20-07-2001
Consueta domanda per questo tipo di argomenti un po' di nicchia. Conviene imparare un linguaggio come Scala in Italia? Che prospettive di occupazione ci sarebbero?
Intervento di Giordano Scalzo a.k.a. gscalzo del 03-12-2009 ore 22:16, Milano (MI)
Plebeo
Plebeo
(7 interventi)
Iscritto il 14-04-2006
ciupaz ha scritto:
Consueta domanda per questo tipo di argomenti un po' di nicchia. Conviene imparare un linguaggio come Scala in Italia? Che prospettive di occupazione ci sarebbero?

Beh, per il momento Scala non può essere considerata una alternativa, ma piuttosto un complemento.

Nessuno verrebbe assunto perchè conosce Scala (o Erlang o Clojure o chissà che altro), ma il fatto di conoscerlo, lo dovrebbe rendere più competitivo rispetto al programmatore medio. Ovviamente IMHO
Intervento di Luigi Z a.k.a. ciupaz del 04-12-2009 ore 09:39, Milano (MI)
Cavaliere
Cavaliere

(162 interventi)
Iscritto il 20-07-2001
Bene, grazie per la risposta.
Copyright Programmazione.it™ 1999-2014. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.206 secondi.