Dart



Introduzione          

Un'altra interessante mossa di Google è la creazione di questo linguaggio pensato per il Web. Nato nel 2011, il suo scopo, la sua "mission" è di diventare il linguaggio di riferimento in luogo di Javascript per la creazione di applicazioni client based. A dire il vero l'accoglienza nel mondo della programmazione è stato piuttosto freddino. A parte Chrome, il browser di Google stessa, non mi è noto alcun tentativo diretto di supporto nativo per questo linguaggio. Anzi sia la comunità Firefox che, naturalmente, Microsoft, oltre al padre di Javascript, Eich, hanno bocciato completamente il progetto. Peraltro Dart emette anche codice Javascript (tramite l'utility dart2js offerta con l'SDK dedicato) per cui gli sviluppatori potranno comunque giovarsi dei vantaggi di Dart ed applicarli nelle modalità più consuete. Evidentemente motivi commerciali non sono assenti da questi comportamenti anche se Dart è offerto gratuitamente ed è un progetto open source per cui non dovrebbe dare fastidio in questo senso. Le motivazioni ufficiali che hanno portato alla nascita di Dart comunque, come è facile capire, stanno nella volontà di risolvere le criticità ed i punti deboli di Javascript (che, secondo un documento interno di Google non possono essere superati evolvendo il linguaggio) offrendo uno strumento moderno, veloce e potente in linea con le ultime tendenza nel mondo della programmazione. Google ha offerto supporto a quei vendor di browser che volessero includere il motore Dart nei loro prodotti incoraggiandoli in questo senso. Finora questa offerta è caduta nel vuoto e non paiono esservi spiragli a breve. Anche se poi dovrebbero essere gli sviluppatori a far sentire la loro voce.

Il linguaggio in se stesso è parecchio interessante e vediamo in sintesi alcune delle sue caratteristiche salienti.
Dal punto di vista sintattico è vicino al C/C++ o Java e C#, o anche, forse di più, allo stesso Javascript, quindi linguaggi molto conosciuti; questo, come al solito, per offrire un apprendimento più rapido possibile. E' basato sulle classi e supporta il paradigma di programmazione a oggetti. Peraltro le classi non sono strettamente necessarie per costruire complete applicazioni in Dart. Il modello a oggetti supporta l'eredità singola supportato dalle interfacce, sulle quali, come negli altri linguaggi che prevedono questi costrutti,  si può utilizzare l'ereditarietà multipla. Sono presenti le ormai irrinunciabili chiusure e la tipizzazione statica opzionale; in pratica questa ultima affermazione significa che la tipizzazione può essere considerata sia statica che dinamica nel senso che vengono supportati i tipi ma la loro dichiarazione non è obbligatoriamente richiesta al programmatore. Questa è una feature moderna ed interessante. In Dart le funzioni sono elementi di prima classe e, come per ogni linguaggio moderno, è stato previsto una efficiente gestione della concorrenza; musa ispiratrice per lo sviluppo di questa parte è stato il linguaggio Erlang ed il suo concetto di isolamento
Tra i suoi punti di forza dovrebbe esserci la costruzione di applicazioni web single page (il celebre Google Maps è un ottimo esempio di questo tipo) per le quali l'intero codice è caricato in una sola pagina. Questo tipo di applicazioni sta prendendo piede grazie alla diffusione di browsers moderni con supporto sempre migliore ad HTML5 ed alle sue specifiche (caching ecc..) che favoriscono questo tipo di approccio che prevede un certo lavoro anche da parte del client. Onestamente non ho ancora avuto modo di testare questa predisposizione.

Non è comunque detto che Dart sia esclusivamente votato al mondo Web; la sua capacità di lavorare sul client a pieno regime parrebbe strizzare l'occhio anche alle abituali applicazioni desktop. Offrendo un pieno supporto per files, directory, sockets e quant'altro potrebbe rivelarsi uno strumento utile anche in questo senso. 

La panoramica delle caratteristiche è ovviamente parziale, anche perchè il linguaggio, al momento in cui scrivo, è ancora in piena evoluzione.... man mano che avrò delle certezze assolute provvederò ad un aggiornamento e ad una miglior schematizzazione delle varie features.

Dart è un progetto in continua modifica ed il suo futuro è comunque ancora incerto. Le obiezioni sono prevalentemente legate al vero scopo di questo strumento e, d'altra parte, c'è una buona fetta di programmatori abituata al caro vecchio Javascript proprio per quello spirito come dire un po' libertino che Dart dovrebbe andare a contrastare. Fermo restando che la possibilità di produrre codice Javascript dovrebbe (forse meglio dire potrebbe) comunque essere un passaporto per la sua adozione, aspettiamo gli sviluppi. Dart deve combattere nemici potenti: strumenti più o meno affermati come Coffescript o Haxe, o nascenti come TypeScript di Microsoft, le ambizioni al supporto verso Javascript di numerosi linguaggi che lo individuano come backend (Fantom, Scala, Ceylon, Kotlin ecc...) favorendo comunque la sopravvivenza dello strumento creato quasi 20 anni fa da Netscape (e che ha i suoi meriti, questo va detto).

Sul sito ufficiale trovate tutte le istruzioni per iniziare a lavorare con questo strumento. Google ha investito molto in questo progetto e fornisce una discreta serie di strumenti (tra i quali un potente editor simile ad Eclipse.... eh, lo so, può piacere ma può anche non piacere (io, ad esempio, non ne sono un fan sfegatato)... qui l'uso è però molto ma molto facilitato per lo sviluppo, il test, insomma tutte le fasi per la creazione delle vostre applicazioni.