Cos'è Dart, e perché dovresti prenderti cura?

In questo tutorial, ti presenterò al nuovo linguaggio di programmazione Web di Google, Dart, e ti spiegherò perché ti piacerebbe e cosa devi sapere al riguardo. Scopri di più su questa nuova lingua e forma alcune opinioni a riguardo - sostituirà davvero JavaScript?


Cos'è Dart?

Direttamente dalla bocca del cavallo (che si trova qui):

Dart è un linguaggio di programmazione orientato agli oggetti basato sulla classe, a ereditarietà pura. Dart è opzionalmente digitato ... e supporta reifigenerici ed interfacce.
I programmi Dart possono essere controllati staticamente. Il controllo statico segnalerà
alcune violazioni delle regole di tipo, ma tali violazioni non annullano la compilazione
o preclude l'esecuzione.

Se questa è una grande pila fumante di mumbo-jumbo, permettimi di parafrasare quanto sopra.

Class-based: Dart si aspetta che tu usi le classi. Mentre JavaScript è in qualche modo basato sulla classe, non puoi scrivere Dart senza scrivere classi.

Single-eredità: Le classi possono estendere altre classi, ma solo una alla volta. Questa è una struttura comune nella programmazione orientata agli oggetti. Rari pochi linguaggi supportano l'ereditarietà multipla, ma il consenso generale è che ciò causa più problemi di quanti ne risolva, quindi la maggior parte dei linguaggi OOP è destinata all'ereditarietà singola.

Linguaggio di programmazione orientato agli oggetti: Questa affermazione è un po 'ridondante, dato il bit "basato sulla classe" di prima. Ma è significativo: Dart è OOP fino in fondo. In effetti, ricorda piuttosto Java (non JavaScript, Java), che è anche basato sulla classe.

Opzionalmente digitato: La maggior parte delle lingue sono scritte o meno. JavaScript, per esempio, non lo è. Quando si definisce una variabile, essa non sarà definita. Puoi impostarlo su a Stringa, quindi a a Numero, e nessuno si lamenterà (beh, io volontà). Inoltre, puoi chiamare schieramento metodi su quella variabile, e non avrai problemi finché non eseguirai effettivamente quella riga di codice. Al contrario, Java è digitato. Ogni variabile deve essere dichiarata con un tipo, ad esempio Stringa o int. E quando una variabile viene digitata, non puoi inserire un diverso tipo di valore in essa. E se hai provato a chiamare un metodo che non esiste su quel tipo, il compilatore genererà un errore, facendoti sapere il tuo errore prima di eseguire il tuo codice. C e le sue varianti sono altri linguaggi tipizzati, mentre Ruby e Python sono altri linguaggi non tipizzati.

Opzionalmente digitato significa, come puoi ora intuire, che hai l'opzione che dichiara un tipo per le variabili. È semplice: puoi lasciare il tipo spento e il compilatore non eseguirà alcun controllo aggiuntivo. Se fornisci un tipo, il compilatore ti aiuterà con errori. ActionScript è un esempio di un altro linguaggio tipizzato facoltativamente.

Si tratta di una mossa piuttosto intelligente, probabilmente destinata a velocizzare l'adozione. I programmatori di dart saranno molto probabilmente programmatori di JavaScript che fanno il salto. Fornire supporto per un linguaggio non tipizzato offre agli autori JavaScript una curva di apprendimento più semplice, mentre fornisce una funzionalità che molti programmatori insistono è essenziale per una programmazione seria, che può essere ripresa in un secondo momento.

Generici reificati: I generici sono una funzione linguistica che ti consente di digitare gli elementi di una raccolta. Ad esempio, a schieramento in JavaScript non può garantire che gli oggetti in esso contenuti siano di un tipo specifico (a parte il fatto che JavaScript non è una lingua tipizzata). Tuttavia, i generici consentono di specificare che ogni elemento in un schieramento - o qualsiasi altro tipo di raccolta - deve essere di un certo tipo, forse a Stringa. Quindi se provi a inserire un Numero nel schieramento, puoi ricevere avvertimenti. Reifii generici generano un passo in più e consentono a questo tipo di sicurezza di superare il compilatore. L'integrità del tipo in fase di esecuzione viene mantenuta.

interfacce: Un'interfaccia è una pratica tecnica orientata agli oggetti. Definisce un tipo senza definire la funzionalità. Gli usi sono difficili da riassumere in una frase o dieci, basti dire che sono parte integrante delle avanzate (e pulite) tecniche di programmazione orientata agli oggetti (ovvero i modelli di progettazione). Una volta che avrai delle interfacce, ti lamenterai della mancanza di queste in altre lingue.

Controllato staticamente: Questo torna alla cosa di battitura. Quando si utilizza la digitazione, una variabile con un tipo viene considerata "tipizzata staticamente" e, pertanto, il tipo non può essere modificato una volta che è stato dichiarato. Ciò consente al compilatore (o "controllore statico") di formulare ipotesi sulle proprie intenzioni con il proprio codice; cioè, se dichiari una variabile come a Stringa, allora non dovresti provare a chiamare changeTimeZone su di esso. Se l'hai fatto (forse hai digitato quello che tu pensiero era quella variabile che conteneva il Data oggetto), quindi il compilatore può avvisarti dell'errore senza dover eseguire il codice.


Quindi cos'è veramente la freccia??

Sì, ho dovuto fornire la spiegazione "ufficiale" di Dart. Ma questo potrebbe o non potrebbe soddisfarti. Ecco cosa è Dart, con in mente il tipico sviluppatore web.

Dart è la sostituzione di Google per JavaScript. È stato annunciato nell'ottobre del 2011 e l'intenzione generale è quella di fornire gli stessi strumenti di JavaScript, solo come strumenti potenti. Come spiegato nel passaggio precedente, ha un sacco di funzioni orientate agli oggetti che il tipico programmatore JavaScript non conoscerà. Ma la maggior parte dei programmatori che hanno familiarità con queste caratteristiche li sosterrà facilmente come essenziali per uno sviluppo serio.

In breve, Google ritiene che JavaScript non sia all'altezza del compito di essere un linguaggio di programmazione "reale", data la quantità di lavoro pesante che sta facendo da quando l'iPhone ha fatto un buco nello zeppelin di Flash.

La speranza di Google è che Dart sarà supportato a livello nativo da tutti i principali browser a lungo termine. Questo ovviamente non sta accadendo proprio ora, dato che Dart è ancora in modalità early-release e non possiamo aspettarci che Apple, Microsoft o Mozilla stiano saltando a bordo. Tuttavia, ciò che rende Dart degno di attenzione adesso è che Google ha fornito un compilatore per convertire il codice Dart in un normale JavaScript.

Personalmente, questo è qualcosa che desideravo da quando ho iniziato a utilizzare JavaScript, proveniente da ActionScript. Dì quello che vuoi su Flash (e stai tranquillo, probabilmente l'ho già detto), ma ActionScript 3 è un buon linguaggio. Provare da AS3 avanzato a JavaScript ha dimostrato di causare parolacce. In realtà ho giocato con il mio compilatore JavaScript (non sono andato molto lontano e sono abbastanza felice di abbandonare il progetto), e volevo qualcosa che potesse almeno farmi sviluppare con alcune sottigliezze, come classi, interfacce e tipi reali , anche se compilato in JavaScript prototipo non tipizzato. Il processo di compilazione può rilevare alcuni errori prima di eseguire il progetto, che è un enorme risparmio di tempo.

Quindi, indipendentemente dal fatto che Google ottenga la sua strada, è certamente possibile scrivere progetti Dart per il web oggi, e faremo proprio questo alla fine di questo tutorial. Spero, lungo la strada, ti convincerò che Dart è in realtà piuttosto promettente.


Cosa c'è di sbagliato con Dart?

Ora che sei eccitato per "JavaScript 2.0", ora per la dura verità. Solo Google ha in programma di incorporare il supporto per Dart nel suo browser. Nessun altro ha espresso interesse in questo. In effetti, sono state fatte alcune dichiarazioni contro Dart, o almeno l'idea di supportare Dart in modo nativo, dagli stessi produttori di browser.

E mentre i progetti Dart possono essere compilati in JavaScript, c'è necessariamente un sovraccarico in questo processo. Il compilatore Dart non è proprio come il compilatore CoffeeScript, che è più un processo one-to-one. Dart è un linguaggio proprio, con librerie e simili, e quando si compila in JavaScript, di conseguenza, compila un codice libreria extra nel codice JavaScript risultante. Attualmente pesa più di una libreria come jQuery. Questo è destinato a cambiare quando il Dart Team rifinisce la compilation, ma fondamentalmente si tratta di una libreria jQuery-ish che è necessaria per normalizzare le differenze del browser e anche un po 'di "zucchero" extra per rendere JavaScript un po' più onesto sulla sua natura dinamica. Questo tipo di peso extra non è terribile, ma se stai creando un semplice widget UI per un sito mobile, forse Dart non è la scelta migliore. Brillerà di più con applicazioni web su larga scala che si basano su JavaScript significativo.

Infine, Dart è attualmente in sviluppo. È eccitante, e non è qualcosa di "sbagliato" con Dart di per sé, ma se inizi a sviluppare in Dart ora, c'è una certa possibilità che l'API cambierà, o che le cose non saranno documentate completamente o correttamente, e la quantità di le informazioni sul Web sono inferiori, ad esempio, all'importo che puoi trovare su jQuery. È sanguinante, e potrebbe non essere adatto a te, o per un dato progetto.


Che cosa è fantastico su Dart?

Allo stesso tempo, è all'avanguardia, ed è fantastico. Investire in un po 'di tempo per imparare Dart potrebbe essere un bel posto una volta che Dart è più stabile. Se ti coinvolgi adesso, hai anche l'opportunità di contribuire a plasmare la lingua. La mailing list di Dart su Google Gruppi ha spesso un po 'di contrasti tra le persone che suggeriscono idee e gli ingegneri di Google che rispondono a questa idea. Spesso vengono prese in considerazione le idee fornite dagli utenti e non è raro vederle incorporate.

Ho già discusso i vantaggi di un linguaggio tipizzato, orientato agli oggetti, e probabilmente è inutile dire che anche questi tratti sono fantastici.

Dart è anche piuttosto reminiscente di Java, e dovrebbe essere fantastico se si è più di un programmatore Java (o C) che vuole entrare nello sviluppo web. Dart dovrebbe fornire una transizione migliore in quel mondo rispetto a JavaScript.

Infine, Dart non riguarda solo un concorrente JavaScript. È una lingua completamente nuova, ed è pronta a funzionare ovunque. Viene utilizzato sul lato server, a la Node.js, e promette di essere un altro strumento diffuso, come Ruby o Python.


Se ti interessa?

Questa è, naturalmente, una domanda caricata e inviterò un'inquisizione basata sui commenti, indipendentemente da come rispondo. Ma risponderò.

Probabilmente ti interesserà, o meno, a seconda di quanto sei infastidito dai problemi di Dart, o eccitato dai vantaggi di Dart. I due passaggi precedenti ti forniscono molte informazioni che ti portano alla tua conclusione.

Se sei il tipo di persona la cui idea di programmazione di JavaScript è quella di cercare sul web i plugin jQuery e installarli sulla tua pagina HTML, quindi Dart probabilmente non ti offrirà molta eccitazione. Sentiti libero di non preoccuparti. E lascia che ti risparmi un po 'di tempo e sveli che baso il resto di questo tutorial sul presupposto che il lettore si preoccupi, almeno quanto basta per esplorare.

Tuttavia, se sei il tipo di sviluppatore front-end che crede davvero nel JavaScript orientato agli oggetti, prova a creare errori nei tuoi script e tende a scrivere più JavaScript che HTML, allora potresti essere un redneck qualcuno a cui importa della buona programmazione, indipendentemente dalla lingua o dalla piattaforma, nel qual caso ti interesserà Dart. Almeno devi a te stesso provarlo.

Secondo me, Dart mostra molte promesse e ha un posto nella programmazione web. Ma non penso che sostituirà o addirittura compenserà davvero il dominio di JavaScript sugli script sulle pagine HTML. Penso che troverà un posto con le applicazioni web più serie, ma a meno che i creatori di browser (tranne Google) acconsentano a costruire in una Dart VM - cosa che non credo sia probabile - il destino di Dart è relegato agli esperimenti di Chrome e ai grandi applicazioni web in scala. Semplici attività di scripting, come un trattino di interattività su una pagina altrimenti statica, non trarranno grandi benefici da Dart.

Detto questo, penso valga sempre la pena di imparare nuove cose. Potresti imparare che la nuova cosa non vale il tuo tempo, ma dovresti formulare questa opinione da solo, attraverso l'esperienza. Forniremo una certa esperienza in questo tutorial, quindi se ti senti avventuroso, preparati per Dart.


Conclusione

Spero che questa breve discussione su Dart abbia suscitato il tuo interesse in questa nuova lingua che potrebbe non avere la possibilità di conquistare il web. Se vuoi provarlo, dai un'occhiata al mio tutorial esclusivo su Facebook che ti sporcherà le mani con un semplice progetto Dart.

(Se non sei su Facebook, non ti preoccupare, il tutorial sarà sul sito Activetuts + alla fine, e nel frattempo avremo molti altri contenuti Dart allineati.)

Grazie per aver letto! Condividi le tue opinioni su Dart nei commenti.