Dart è un nuovo linguaggio di programmazione presentato da Google concepito per lo sviluppo di applicazioni web. Lars Bak lo definisce come adatto agli scenari più disparati, dal semplice progetto personale agli applicativi su vasta scala con infrastrutture complesse. Ovviamente il progetto è in fase iniziale e Google mira a raccogliere esperienze e feedback dagli sviluppatori per capirne le reali potenzialità.
Il codice è progettato per essere simile ai linguaggi tipo C#/Java, ma con la necessaria flessibilità dei linguaggi web-oriented, inoltre è evidente la somiglianza con javascript. Dart è dinamicamente tipizzato e orientato agli oggetti; i programmi scritti in Dart possono essere eseguiti in due modalità: con virtual machine DartVM oppure utilizzando un apposito compilatore per tradurre il codice in javascript. Attualmente è in discussione la possibilità di integrare DartVM all’interno di Google Chrome.
Dart può essere eseguito anche all’interno del codice HTML con l’apposito MIME type 'application/dart', in definitiva sembrerebbe avere tutte le caratteristiche necessarie di una buona tecnologia di sviluppo per il web, ma non credo che se ne sentisse davvero il bisogno.
Via | Chromium Blog
picchio picchiatello
10 ott 2011 - 13:30 - #1Ennesima dispersione di energie nel wrappare qualcosa!!
tassinarimauro
10 ott 2011 - 13:50 - #2Un altro linguaggio!?? No!!!!
…Scherzi a parte:
Se Dart potesse mandarne in pensione un paio dei vecchi sarebbe ben accolto.
Un Altro Scettico
10 ott 2011 - 13:58 - #3Mah, non capisco cosa ci sia di sbagliato in JavaScript da doverlo sostituire… JS è uno standard (almeno di fatto) nel web, e con Node.js va anche ben oltre (dai server web alle applicazioni command line).
Non capisco Google e questo spreco di energie… Per non tirare in ballo, poi, Native Client, che rievoca le ombre del vecchio ActiveX…
-.-
10 ott 2011 - 14:04 - #4ma si frammentiamo un altro po’
Caterpillar'909099
10 ott 2011 - 14:17 - #5Basta frammentazione!!!
Dukom
10 ott 2011 - 14:19 - #6Ottimo, un altro linguaggio da imparare e rimpinguare il CV!
D.
MpMp
10 ott 2011 - 14:20 - #7e gwt che fine fa?
non sono la stessa cosa?
Kim Allamandola
10 ott 2011 - 14:34 - #8@MpMp #7
GWT (Google Web Toolkit) è una piattaforma Java by Google, questo è un teorico
sostituto di javascript…
Se javascript crepa faccio i salti di gioia al punto da dimagrire di 5Kg, ma
se viene sostituito dall’ennesimo linguaggio inutile quando ci sono Python,
Ruby (che a Google non piace, forse per la gestione malata di Unicode) ecc
l’unica cosa che faccio è imprecare…
plutarco
10 ott 2011 - 14:41 - #9a prima vista sembra anche a me inutile, ma definire buono javascript mi sembra eccessivo… è uno dei pochi linguaggi in circolazione che si è evoluto relativamente poco.. non ha una chiara e semplice sintassi per usarlo ad oggetti… ogni browser c’ha messo il suo…
se non fosse per librerie alla jquery sfido chiunque a scrivere del buon codice, con buone performance.. che va bene piu’ o meno ovunque..
non ha niente a che vedere con gwt, almeno apparentemente, visto che è proprio un linguaggio tutto suo che ha tra le varie cose un traduttore in javascript
daddye
10 ott 2011 - 14:46 - #10Si infatti, penso più che altro sia il caso invece di buttarsi su queste schifezze che frammentano e basta di puntare su qualcosa di esistente.
Io suggerirei di rinnovare i javascript usando la sintassi Coffee nativa, allora si che sarebbe rivoluzione.
Paul123
10 ott 2011 - 16:13 - #11@daddye
Guarda che Dart offre esattamente questa cosa. Se leggi l’articolo principale si dice appunto che possa essere eseguito in maniera nativa da una JVM o tradotto in JavaScript attraverso un compilatore.
A me come linguaggio sembra essere molto interessante, JavaScript per certi aspetti è veramente una schifezza.
Il semplice fatto, ad esempio, di dover usare continuamente gli operatori === e !==, perché == e != non si comportano come in qualsiasi altro linguaggio, o il weak typing (’2′ + 2 === ‘22′ && ‘2′ * 2 == 22) mi fanno venire il voltastomaco.
Inoltre che già il problema della minimizzazione del codice JS, quindi aggiungere ad un applicativo web un ulteriore substrato converta il codice Dart in JavaScript non costerebbe praticamente nulla.
Paul123
10 ott 2011 - 16:17 - #12Nell’esempio del weak typing intendevo ‘2′ + 2 === ‘22′ && ‘2′ * 2 === 4.
MpMp
10 ott 2011 - 19:01 - #13Con GWT scrivi in Java e compili in Javascript, il che mi sembra molto simile a questo linguaggio di programmazione, almeno per la parte non eseguibile nella JVM.
Florianoo
10 ott 2011 - 21:31 - #14sperando non lo cambino frequentemente..
già con android dimostrano che la stabilità delle api non è una priorità.
duncanita
11 ott 2011 - 09:14 - #15Personalmente mi piacerebbe se al posto di JS ci fosse la possbilità di usa Ruby come linguaggio di scripting lato client…
abral
11 ott 2011 - 10:18 - #16Mi sa che è proprio inutile. Con JavaScript già è possibile fare tutto semplicemente, che bisogno c’è di un nuovo linguaggio? Piuttosto Google potrebbe concentrare le risorse per creare qualche utile libreria JavaScript!
DevURandom
11 ott 2011 - 17:31 - #17quoto paul123 100%.
Hahaha quanti commenti stupidi da mediocri inutili pseudo-programmatori…
mi fate sbellicare. Ma pensate che google non sappia quello che fa?
Javascript non e’ un linguaggio. Un linguaggio non tipizzato E’ un ABORTO.
Ben venga Dart, finalmente…
/V ---
11 ott 2011 - 17:44 - #18L’impressione che mi ha dato é che dovrebbe permettere anche al piú mediocre programmatore di scrivere del codice mediamente decente. Inoltre a un type system “opzionale”, per cui uno puó teoricamente, tirare su del codice non tipizzato in fretta e furia per fare un prototipo e successivamente implementargli su i tipi.
Credo che il type system (ma potrei sbagliarmi) sia anche quel che dovrebbe permettere a google ottimizzazioni a livello di compilatore e VM non possibili in javascript.
Gli esempi di codice sono chiari e francamente mi pare abbiano implementato su il minimo indispensabile per fare della programmazione pulita ma potente (ereditarietá singola, classi e interfacce esplicite e distinte, sintassi derivata dai soliti C/C++/Java).
Insomma ha il potenziale per diventare una gran figata.
PS: no, javascript é una schifezza universalmente nota. Se pensate il contrario o ci avete speso troppo tempo su o troppo poco. Fatevene una ragione.
abral
12 ott 2011 - 00:33 - #19DevURandom la tua arroganza è davvero proverbiale. Un linguaggio non tipizzato è un aborto? Dall’alto della tua infinita conoscenza potresti spiegarmi per quale motivo?
@/V —: Tu saresti il depositario della verità? Perché dovrei farmi una ragione che un linguaggio con cui mi trovo bene in realtà fa schifo solo perché tu dici così?
duncanita
12 ott 2011 - 09:20 - #20A me sembra quasi un aborto, difficile da leggre come tutti i linguaggi che riprendono la sintassi del C.
Pieno di punti e virgola, parentesi e graffe generalmente inutili.
Interfacce, inutili, meglio se avessero implementato il Duck Typing.
Ribadisco che avrei preferito che avessero pescato a piene mani da Ruby.
0xdeadbeef
12 ott 2011 - 11:58 - #21Introdurre un linguaggio dalla sintassi e il comportamento simili a quelli di java - che, volenti o nolenti, è attualmente il più diffuso - mi pare tutt’altro che sciocco.
Ora la cosa che a Google deve importare è un’altra: definire uno standard nella maniera più completa possibile, lasciando poche possibilità ad eventuali interpreti/VM di terze parti di creare n-mila varianti inutili - ed intenzionalmente dannose - con lo stesso nome. Con un’accorta definizione del linguaggio il brevetto si può anche evitare.
duncanita
12 ott 2011 - 12:52 - #22Sarà anche la più diffusa, ma basta mettere affiancati due sorgenti che fanno la solita cosa per vedere quale sia il più leggibile tra i vari (Java, C#, JS ecc) e Ruby.
0xdeadbeef
12 ott 2011 - 13:16 - #23@duncanita
Ciò è molto soggettivo. Per te sarà così mentre per me, che ho evidentemente abitudini molto diverse, è l’esatto contrario.
Ma alla fine il dibattito sulle sintassi lo vedo un po’ fine a sé stesso. La differenza di qualità la fa il trio progettista-piattaforma-sviluppatore, raramente il linguaggio.
duncanita
12 ott 2011 - 13:45 - #24Gurda, scrivo tutti i giorni codice C# pert lavoro da anni ormai, magari non sono un mostro, a casa mi sto dilettando con Ruby per progetti personali, prima gli avevo dato un occhio superficiale, ma appena capite due otre cose semplicissime la differenza di espressività tra Ruby ed altri linguaggi C Style è enorme, almeno personalmente.
Niente punti e virgola che nel 99% dei casi sono inutili, tutto molto più coinciso, ma espressimo.
Non concordo sul fatto che il linguaggio più framawork faccia poca differenza, dal, piccolo, confronto che ho potto fare in ruby si fanno le medesime cose scrivendo meno, un esempio? spariscono le interfacce con il duck typing non servono, tutto codice in meno da scrivere.
apeacox
12 ott 2011 - 15:16 - #25@duncanita concordo sui pregi di ruby, visto che lo uso con profitto tutti i giorni. tuttavia, vorrei farti presente che anche javascript supporta l’approccio al duck-typing ;)
0xdeadbeef
12 ott 2011 - 16:09 - #26Sul lavoro sono un analista programmatore ma ho fatto una lunga gavetta come programmatore semplice. Secondo me i punti e virgola sono l’ultimo dei problemi, ammesso che lo siano. Tutti i linguaggi hanno un modo di contrassegnare la fine di un comando o di distinguerlo da quello successivo. Il CR in questo senso mi sembra più “equivoco” perché può essere interpretato da chi lo legge come un normale modo di spezzare la riga e ciò riduce la leggibilità del codice. Ma come sempre parlo per me.
Il ruby è un bel linguaggio, mi ci sono dilettato anch’io per un po’ senza alcuna pretesa. Anche la sua piattaforma di sviluppo mi pare molto interessante. Mi piace ma, come dicevo prima, sta a chi lo usa sfruttarne le caratteristiche.
Sul duck typing non nego che possa offrire dei vantaggi, soprattutto nel prototyping, ma il problema più grande che porta con sé è il fatto di permettere grossi pasticci e di vederne le conseguenze soltanto al runtime. Non che senza ciò sia impossibile, ma molto più raro. Allora la domanda da porsi prima di rifiutarsi di scrivere un’interfaccia è: “pago prima o pago dopo?” Poi quanto occorra pagare dipende ovviamente dalle circostanze.
0xdeadbeef
12 ott 2011 - 16:19 - #27PS. se hai avuto problemi con i punti e virgola allora ti sconsiglio fortemente di omettere parentesi. Insomma evita di fare cose tipo:
if (foo())
bar();
perché basta una svista e ti ritrovi un punto e virgola dopo l’if. Poi hai voglia a cercare il problema…
egoalesum
12 ott 2011 - 17:03 - #28Magari potrebbe interessare anche questo punto di vista :)
http://www.quirksmode.org/blog/archives/2011/10/dart_or_why_jav.html
Kim Allamandola
12 ott 2011 - 18:54 - #29Dire che assomigliare a Java sia utile è essere come quelle code-monkeys php
che dicono di aver scelto il php perché assomiglia al C che hanno imparato
all’università…
Le sintassi tipo Python e Ruby sono *vincenti* come lo fu ai tempi la sintassi
del C rispetto all’assembly, e questo indipendentemente da ogni altro aspetto
del linguaggio (vedi performance, compilato-vs-interpretato, interprete-vs-vm
ecc.); il perl oggi è sempre più in calo un po’ per l’enorme tempo di attesa
di Parrot&c ma sopratutto perché è un linguaggio che permette di scrivere del
codice assai difficile da leggere.
Del resto Google stà pagando e caro la scelta di Java per Android (e, ot, stà
pagando la scelta della licenza Apache, se avesse puntato sulla GPLv3 il caso
Baidu e le liti coi vari carrier sarebbero ben diversi).
Volete un linguaggio che abbia successo? Ok, la sintassi e la standard library
del Python, grazie. La possibilità di fare WebApp con il layout gestito tipo
librerie GTk/Qt/Wx e il resto son cavoli dei designer con CSS, la possibilità
di fare WebApp e DesktopApp con la stessa libreria, una documentazione chiara
e nessuna interpretazione personale del singolo browser (stile Java). Fatelo,
e avrete un successo, fateci un OS ed avrete una nuova UNIX-revolution.
Continuate a puntare su Java, PHP ecc e seguirete l’esperienza di Go (lo avete
presente?) del D, e di tutti gli altri linguaggi creati in tempi recenti: non
si impara qualcosa che non serve, specie se ex-novo.
0xdeadbeef
12 ott 2011 - 20:04 - #30@Kim
Come al solito, trovo che confrontare linguaggi con la stessa potenza e lo stesso livello di astrazione sia utile più o meno come fare a gara a chi ce l’ha più lungo. Queste cose le lascio a chi ha voglia di sfigheggiare o a chi non ha mai scritto codice serio in vita sua. Si leggono flame così dappertutto ma - poiché siamo un Paese di fenomeni - li si trova soprattutto in italiano.
Del resto creare bindings per python occupa lo stesso tempo che crearle per java. E uno sviluppatore con un cervello sulla testa sa scrivere ottimo codice indipendentemente dal linguaggio/piattaforma su cui si specializza. Se non ce l’ha, difficilmente combinerà qualcosa di buono in un qualsivoglia linguaggio.
Google fa quello che gli dice il mercato. Se il mercato gli dice che java lo conoscono tutti - dai code monkeys ai lead programmers - ed ha la piattaforma più produttiva in assoluto, Google segue java. Se il vento cambia, hanno abbastanza uomini e mezzi per cambiare anche loro. Non mi pare ci sia molto da capire. E di certo non andranno falliti per questo. Poi possiamo anche fare manifestazioni contro le discriminazioni su python ma la sostanza non cambia.
Kim Allamandola
12 ott 2011 - 20:27 - #31@0xdeadbeef #30
Sul fatto che le discussioni sui linguaggi di programmazione sono in genere dei
flame, siamo assolutamente daccordo; sul seguire il mercato no: se il mercato
va verso i derivati (es. del 2006-8) è giusto e logico andarci? Se si deve
perseguire il rendimento maggiore è logico comprare bond greci?
Il discorso sui linguaggi è lo stesso.
Ritengo che un’azienda debba essere amministrata da manager e guidata, specie
nel plannig da tecnici del suo settore. Il mercato non “si segue” si segue la
propria competenza tecnica, l’unica cosa che vale nel medio e lungo periodo.
Fare come i lemming porta alla stessa fine dei lemming e ci sono n-mila esempi
che lo provano. All’inizio Symbian era l’ideale, eppure i tecnici dicevano che
non poteva andare, nessuna azienda era disposta ad ascoltare, i risultati li
sai. Oggi è il turno di Android con Java, anche qui direi che i risultati siano
molto prevedibili; hint: che ti dicono i recenti (e non solo recenti) problemi
evolutivi di Android? Che ti dicono le applicazioni Java che trovi in giro da
Eclipse a Netbeans passando per WebSphere?
duncanita
12 ott 2011 - 22:58 - #32@apeacox
Si, ha il duck typing, ma come leggibilità non è il massimo. Il riferimento riguardava Dart, che a quanto pare ha le interfacce…
Poi un bravo programmatore è bravo a prescindere dal linguaggio, ma lavorare con uno strumento migliore aiuta anche chi è bravo.
0xdeadbeef
13 ott 2011 - 00:04 - #33Mi pare che il discorso sui bond greci abbia poca attinenza qui; gli strumenti di sviluppo java che non evolvono sono legati a dei paradigmi di sviluppo - in cui i produttori di tool di progettazione lucrano alla grande, altro che websphere - che sono rimasti invariati da almeno 20 anni; eventuali problemi di android sono problemi di android.
Senza offesa ma ci vedo un totale nonsense solo per insistere sull’ennesimo java vs python. Quindi con permesso me ne traggo fuori.
Saluti.
abral
14 ott 2011 - 22:44 - #34Anche questo mi sembra molto interessante: http://lethalman.hostei.com/maja/index.html