03 mar 2014, 08.28link html
 Chiudi
Apri tutti i messaggi03 mar 2014, 14.46link html
04 mar 2014, 00.05link html
- Scritto da: rintaro okabe
> Ma dart è uno standard? Perché anche con IE si
> poteva usare vbscript invece di
> javascript...

No, Dart non è uno standard ma è un'idea di Google e progettata dagli stessi ingegneri che hanno costruito V8.

VBScript era un tentativo di Microsoft di imporsi. Non aveva grossi vantaggi rispetto a Javascript e non c'era modo di eseguire codice VBScript su browser che non lo supportassero nativamente. Tuttavia l'idea di poter eseguire qualsiasi linguaggio sul proprio browser non è male (espando più avanti).

L'esistenza di Dart è motivata da un lato dall'esperienza (javascript ha molte rogne) dall'altro dal fatto che per costruire applicazioni complesse ti servono strumenti adatti, che ti permettano per esempio di individuare determinati errori subito, e non a runtime, che ti permetta di lavorare in team su diversi aspetti dell'applicazione senza pestarsi i piedi a vicenda, che abbiano un linguaggio chiaro e non ambiguo, che permettano la condivisione di librerie senza, per esempio, dover includere l'intera libreria nella distribuzione (come invece si fa con javascript) anche quando magari ne usi una sola funzione, ecc.

Certo, nel tempo si sono sviluppati vari tool e librerie per javascript che hanno come scopo quello di indirizzare le sue mancanze, ma queste librerie non sono coerenti fra loro, hanno una documentazione "sparsa" e ognuna adotta i suoi standard... a volte è addirittura difficile farle convivere assieme e, come dicevo, alla fine ti trovi a dover includere magari 10 librerie diverse quando tutto quello che ti serve è una funzione qui, una là, ecc.

L'idea di Dart è quella di costruire un linguaggio che:
1) sia adatto alla realizzazione di WEB-App complesse (con anche milioni di linee di codice)
2) che fosse per lo più già familiare con chi ha a che fare con la programmazione così da non dover imparare tutto da capo
3) che fosse adatto ad essere accelerato dalla VM il più possibile (Javascript non è adatto a questo scopo, rende la realizzazione della VM molto complesso e quindi, per natura, lento)
4) che permetta l'accesso a funzionalità avanzate fornite dai computer odierni (come le istruzioni SIMD del processore che velocizzano di _parecchio_ diverse operazioni su molti dati [non so se in questo o in altri video di Google IO mostrano quanto queste istruzioni di Dart velocizzino determinati aspetti della programmazione, in particolare videogiochi, calcoli scientifici, ecc])
5) ....

Tieni conto che Javascript, quando fu progettato, non era affatto pensato a questi scopi ma doveva semplicemente automatizzare qualche aspetto lato client. Insomma, era pensato per poche linee di codice. Nel tempo hanno cercato di aggiornarlo... ma più di tanto non si può fare senza stravolgere il linguaggio e quindi rompere la compatibilità con tutti i siti già "lì fuori".

Né Firefox né IE al momento vogliono implementarlo (da un lato IMO perché probabilmente _non ne sono in grado_ [sia da un punto di vista di esperienza che di fondi a disposizione], come non sono stati in grado di eguagliare V8 in termini di prestazioni [anche se dopo lo "schiaffo" morale ricevuto da Chome sono migliorati di molto... prima non ci pensavano nemmeno], dall'altro non vogliono usare quello di Google [che è opensource ed ha API apposite per essere integrato e anzi, il team V8 è disponibile persino ad _aiutarli_ a farlo] per via probabilmente del loro amor-proprio nascondendosi dietro lo standard W3C [salvo modificarlo a piacere quando ci sono feature che gli piacciono]), ma non è un problema dato che Dart può compilare in Javascript ottenendo codice che a volte è addirittura più ottimizzato e veloce di quello scritto a mano e quindi di fatto la compatibilità non è un fastidio.

Certo... su Chrome con Dart integrato otterrai prestazioni incomparabili per via del fatto che la VM di Dart è intrinsecamente più veloce di quella di Javascript... ma questi sono cazzi loro. Quando vedranno che la gente li abbandona o si adatteranno o verranno giustamente spazzati via dal buon vecchio Darvin.

Tieni anche conto che avere un solo linguaggio per lo scripting del WEB è un'idiozia. Nel mondo dei computer c'è stato storicamente un proliferare di linguaggi, ogni sviluppatore ha il suo linguaggio preferito e ogni linguaggio ha i suoi pro e contro, non si vede perché debba essere diverso per il WEB. Se da un lato gli standard nel WEB sono importanti, dall'altro non c'è motivo per cui debba esserlo anche il linguaggio di scripting. Sarebbe molto meglio se anziché un linguaggio di scripting solo (fra l'altro vecchio, lento, poco chiaro ed inadeguato come javascript) i browser fornissero una sorta di "codice macchina virtuale" (come quello di LLVM per esempio) cui compilare il proprio programma a prescindere dal linguaggio utilizzato. Questo ci permetterebbe di avere un fiorire di linguaggi [procedurali, ad oggetti, funzionali, ecc], VM velocissime, ecc. Non solo, ma permetterebbe a noi sviluppatori di compilare i nostri sorgenti in "linguaggio macchina virtuale" senza doverli rendere pubblici, creare file di "script compilati" estremamente compatti (molto più compatti della "minificazione" che si fa ora), ecc.
I vantaggi sono così tanti che davvero mi chiedo come mai non si sia già fatto.

Il punto è questo... sempre più in futuro il browser diventerà un contenitore di applicazioni sempre più complesse. O i browser si aggiornano o moriranno.

Da quello che dice il team di V8 Dart nel video, se ho ben capito, già ora, nonostante sia così giovane e ci siano ancora aspetti da ottimizzare, in determinate operazioni equipara se non addirittura supera in velocità la Java Virtual Machine...

> il video di 1h l'ho skippato

Male. I video di Google IO valgono tanto oro quanto pesano, inoltre se guardi il video, vedrai come gli stessi creatori di V8 ritengono Dart necessario per poter progredire e lo spiegano con diverse ragioni (ovviamente dal loro punto di vista di progettisti di VM).