L'autore ha un'esperienza più che decennale nello sviluppo Java, unita ad un forte interesse per la programmazione funzionale, soprattutto in Scala, lo sviluppo di Domain Specific Languages. Sfruttando queste due passioni ha anche creat la libreria open source Hammurabi, un motore di regole scritto in Scala che consente di scrivere le proprie regole con un DSL interno.
Quasi tre anni fa ho scoperto il linguaggio Scala, ed è stata la prima volta dopo una dozzina di anni di programmazione in Java che ho ritenuto valesse la pena imparare un nuovo linguaggio.
Da allora sto provando a convincere (con alterna fortuna) i miei amici e colleghi che "Scala è bello", mostrando loro con che eleganza riesce a unire due paradigmi apparentemente antitetici come l'OOP e il FP ottenendo codice conciso e leggibile. Ho cercato anche di "catturarli sin da giovani" , tenendo dei corsi introduttivi in un paio di università del Nord Italia, dove vivo.
Ma solo ora mi sto rendendo conto che, se il mio intento è di favorire la diffusione di questo splendido linguaggio, mi sto rivolgendo all'audience sbagliata. Le prime persone che io e gli altri fan di Scala dobbiamo convincere sono quelli che mettono il denaro nell'Information Technology. Questo post è quindi indirizzato agli imprenditori e a chi ha responsabilità di budget e contiene la mia breve lista di motivi per i quali adottare Scala come principale linguaggio di sviluppo è molto sensato prima di tutto da un punto di vista economico.
MENO CODICE => MENO TEMPO => MENO DENARO
Nella mia esperienza di sviluppatore Scala ho riscontrato che un qualunque segmento di codice Scala è circa tre volte più breve del suo equivalente in Java. Effettivamente Scala permette di eliminare tutta la verbosità tipica di Java, in modo che il programmatore possa concentrarsi solo sullo sviluppo della business-logic del problema.
Se si considera la linea di codice come il più piccolo componente di un manufatto (software), questa affermazione ha lo stesso impatto che avrebbe, per un produttore di auto, la possibilità di utilizzare 1000 componenti invece che 3000.
In altre parole, utilizzando Scala il team di sviluppo deve disegnare, scrivere, testare, debuggare, refattorializzare e mantenere solo un terzo del codice. Non è evidente il vantaggio in termini di ROI in utto questo? Io sono convinto che il passaggio da Java a Scala abbia lo stesso impatto che ha avuto quindici anni fa il passaggio da C/C++ a Java; la riduzione, talvolta drammatica, del tempo speso a sviluppare e mantenere il codice e, quindi, del suo costo. E più il progetto è grande, più il vantaggio economico si rende evidente.
MIGLIOR time to market
E' una diretta conseguenza di quanto ho scritto precedentemente. Ridurre il tempo speso nello sviluppo del prodotto da la possibilità di consegnare l'applicazione più rapidamente.
Arrivare sul mercato più velocemente dei concorrenti è un vantaggio che non deve essere neanche spiegato ad un imprenditore, da tanto è evidente. Ma lo stesso vale se si tratta di un'applicazione ad uso interno. La sua disponibilità in tempi rapidi ha un valore anche in questo caso.
FARE IN MODO CHE GLI ANALISTI E GLI SVILUPPATORI PARLINO LA STESSA LINGUA
Una delle principali cause di fallimento di molti progetti IT sono le frequenti incomprensioni tra analisti di business e sviluppatori. Alcune delle caratteristiche di Scala sono state esplicitamente aggiunte con lo scopo di rendere il codice molto leggibile.
Ciò rende Scala particolarmente adatto all'implementazione dei DSL, Domain Specific Language, disegnati per esprimere le Business Rules con la stessa terminologia utilizzata all'interno del dominio che si intende modellare.
Utilizzando questa tecnica gli sviluppatori possono codificare le regole di business in una modalità che permetta agli analisti di comprenderle e validarle leggendo direttamente il codice, riducendo così la possibilità di incomprensione tra chi esprime i requirement e chi li trasforma in codice.
100% COMPATIBILE Java
I programmi Scala sono compilati con lo stesso bytecode e girano sulla stessa Virtual Machine dei tradizionali programmi Java. Ciò significa che Scala è pienamente interoperabile con Java e che permette il riutilizzo dei componenti Java e tutte le straordinarie librerie e ramework che si è abituati ad usare nel lavoro quotidiano senza alcuno sforzo.
Non ci sarà bisogno di riscrivere il codice già realizzato, non si perderà alcun investimento già effettuato e si potrà decidere di migrare gradualmente verso Scala solo quando nasce una opportunità su un progetto specifico.
ATTIRA IL MEGLIO DELLE RISORSE UMANE
Mi rendo conto che si tratta di un punto controverso, e i programmatori Java potrebbero odiarmi per questo, ma ho ritenuto opportuno aggiungere questo punto perchè, come altri punti della lista, è parte della mia esperienza quotidiana sia come sviluppatore Java, sia come sviluppatore Scala.
Innazitutto chi decide di imparare un nuovo linguaggio (non necessariamente Scala), invece che rimanere attaccato a quello che già conosce per tutta la vita, normalmente mostra una particolare apertura mentale, è entusiasta del proprio lavoro ed è ansioso di sperimentare nuove idee e tecnologie.
Inoltre, come ho già detto, Scala unifica i mondi della programmazione funzionale con quello della programmazione a oggetti, perciò chi è in grado di lavorare con efficacia in Scala è anche in grado di dominare questi due paradigmi e prendere il meglio da entrambi. In effetti, con Scala ci sono sempre diversi modi di fare la stessa cosa e cercare la soluzione che meglio si adatti al problema su cui si sta lavorando finisce col perfezionare la propria capacità di ragionamento ed i propri skill. Per questo ritengo che la conoscenza di Scala possa essere usata come strumento per la selezione di personale di qualità.
UNA FANTASTICA COMUNITA'
In generale si tratta di un importante elemento quando si sta esaminando se è il caso o meno di adottare una nuova tecnologia. Avere una comunità di gente appassionata che può aiutare a risolvere i problemi che il team di sviluppo deve affrontare ogni giorno è essenziale in quanto permette di salvare sforzi, tempo e denaro. La comunità che circonda Scala è quasi imbattibile in quanto a questo: in tutta la mia carriera professionale non ho mai trovato così tanti sviluppatori intelligenti, ed allo stesso tempo modesti, che siano felici di aiutarti a risolvere i problemi tecnici che si possono incontrare, nel modo più rapido possibile.
La stessa comunità è impegnata a lavorare costantemente per sviluppare e migliorare un enorme numero di librerie, framework e tool che possono ulteriormente semplificare e accellerare il lavoro di un team di sviluppo.
PRODOTTI E SERVIZI DI CLASSE ENTERPRISE
Scala non è più nella fase dove un piccolo gruppo di pionieri fa esperimenti. La nascita di società come Typesafe, fondata da Martin Odersky, l'inventore del linguaggio stesso, permette di avere servizi e prodotti a livello enterprise.
In questa categoria, in particolare, spicca Akka, un framework creato da Jonas Boner, che fornisce un impressionante insieme di tool e di soluzioni destinate a rendere la programmazione parallela più facile e più efficace. La disponibilità di un simile insieme di solide tecnologie non solo ha permesso ad una nuova generazione di aziende come Twitter, Linkedin e Foursquare di lavorare efficacemente con esse, ma ha anche convinto aziende che sono in ambiti di business più tradizionali a migrare a Scala.
Giusto per dare un esempio, EDF, la più grande azienda europea nell'ambito dell'energia, e banche internazionali come UBS e Credit Suisse hanno già migrato a Scala. Inoltre, se Scala è abbastanza solido per applicazioni "mission critical" come quelle richieste dalla NASA, un altro entusiasta utente di Scala, perchè non adottarlo nella tua azienda?
Compila questo form per essere invitato ai nostri seminari
Mate organizza ogni mese un seminario di 2 ore (dalle 17.30 alle 19.30) in cui presentiamo le evoluzioni del progetto e discutiamo l'utilizzo del linguaggio Scala con docenti universitari, clienti, collaboratori ed appassionati
Compila questo Form per ricevere regolarmente i nostri inviti.




