Wat is Dart, en waarom zou je erom geven?

In deze tutorial zal ik je kennis laten maken met de nieuwe webprogrammeertaal van Google, Dart, en uitleggen waarom je het leuk zou vinden en wat je moet weten. Leer meer over deze nieuwe taal en vorm er enkele meningen over - zal het echt JavaScript vervangen??


Wat is Dart?

Rechtstreeks uit de mond van het paard (die zich hier bevindt):

Dart is een op klassen gebaseerde, single-inheritance, pure objectgeoriënteerde programmeertaal. Dart wordt optioneel getypt ... en ondersteunt reified generieke en interfaces.
Dart-programma's kunnen statisch worden gecontroleerd. De statische schijf zal rapporteren
sommige schendingen van de typevoorschriften, maar dergelijke schendingen houden de compilatie niet af
of sluit uitvoering uit.

Als dat een geweldige, stomende stapel mumbo-jumbo voor je is, sta me toe om het bovenstaande te parafraseren.

-Klasse op basis van: Dart verwacht dat je klassen gebruikt. Hoewel JavaScript een beetje op klasse is gebaseerd, kun je Dart niet schrijven zonder klassen te schrijven.

Single-erfenis: Klassen kunnen andere klassen uitbreiden, maar slechts één voor één. Dit is een algemene structuur bij objectgeoriënteerde programmering. Een paar zeldzame talen ondersteunen multiple-inheritance, maar de algemene consensus is dat dit meer problemen veroorzaakt dan het oplost, dus de meeste OOP-talen gaan voor single-inheritance.

Object-georiënteerde programmeertaal: Deze verklaring is een beetje overbodig, gezien het "op klassen gebaseerde" bit van voordien. Maar het is belangrijk: Dart is OOP door en door. In feite doet het eerder denken aan Java (niet JavaScript; Java), dat ook op klassen is gebaseerd.

Optioneel getypt: De meeste talen zijn al dan niet getypt. JavaScript is dat bijvoorbeeld niet. Wanneer u een variabele definieert, wordt deze niet getypt. U kunt dit instellen op a Draad, vervolgens naar een Aantal, en niemand zal klagen (nou ja, ik zullen). Bovendien kunt u bellen reeks methoden op die variabele en u zult geen problemen ondervinden totdat u die regel code daadwerkelijk uitvoert. Java is daarentegen getypt. Elke variabele moet worden aangegeven met een type, zoals Draad of int. En wanneer een variabele wordt getypt, kunt u er geen ander type waarde in plaatsen. En als je probeerde een methode aan te roepen die niet op dat type bestaat, zal de compiler een fout oproepen, waardoor je je fout kunt kennen voordat je je code uitvoert. C en de varianten ervan zijn andere getypte talen, terwijl Ruby en Python andere talen zonder type zijn.

Optioneel getypt betekent, zoals u nu kunt raden, dat u de optie hebt om een ​​type voor variabelen te declareren. Het is zo simpel als dit: je kunt het type laten staan ​​en de compiler zal geen extra controle uitvoeren. Als u een type opgeeft, helpt de compiler u met fouten. ActionScript is een voorbeeld van een andere, eventueel getypte taal.

Dit is een nogal slimme zet, waarschijnlijk bedoeld om de acceptatie te versnellen. Dartprogrammeurs zullen hoogstwaarschijnlijk JavaScript-programmeurs zijn die de sprong maken. Ondersteuning bieden voor een taal zonder taal geeft JavaScripters een gemakkelijkere leercurve, terwijl het bieden van een functie waar veel programmeurs op aandringen essentieel is voor serieuze programmering, die op een later tijdstip kan worden opgehaald.

Reified generics: Generics zijn een taalfunctie waarmee u de elementen van een verzameling kunt typen. Bijvoorbeeld, een reeks in JavaScript kan niet garanderen dat de objecten die het bevat een specifiek type zijn (behalve dat JavaScript geen getypte taal is). Met generieke functies kunt u echter opgeven dat elk item in een reeks - of een ander collectietype - moet van een bepaald type zijn, misschien een Draad. Dus als u probeert een Aantal in de reeks, je kunt waarschuwingen krijgen. Reified generics gaan een extra stap en laten dit type beveiliging voorbij de compiler. Type integriteit tijdens runtime blijft behouden.

interfaces: Een interface is een handige objectgeoriënteerde techniek. Het definieert een type zonder functionaliteit te definiëren. Het gebruik ervan is moeilijk samen te vatten in een zin of tien, het volstaat om te zeggen dat ze een integraal onderdeel zijn van geavanceerde (en schone) objectgeoriënteerde programmeertechnieken (namelijk ontwerppatronen). Zodra je raakvlakken hebt, betreur je het gebrek daaraan in andere talen.

Statisch gecontroleerd: Dit gaat terug naar het typwerk. Wanneer typen is in gebruik, wordt een variabele met een type beschouwd als "statisch getypt", en als zodanig kan het type niet worden gewijzigd nadat het is gedeclareerd. Hierdoor kan de compiler (of "statische checker") veronderstellingen maken over uw intenties met uw code; dat wil zeggen, als u een variabele declareert als een Draad, dan moet je niet proberen te bellen changeTimeZone ben ermee bezig. Als dat zo is (misschien hebt u getypt wat u bent gedachte was die variabele met de Datum object), dan kan de compiler u waarschuwen voor de fout zonder de code uit te voeren.


Dus wat is Dart echt?

Ja, ik moest de "officiële" uitleg van Dart geven. Maar dat kan je wel of niet tevreden stellen. Dit is wat Dart is, met de typische webontwikkelaar in gedachten.

Dart is Google's vervanger voor JavaScript. Het werd aangekondigd in oktober 2011 en de algemene bedoeling is om dezelfde tools te bieden die JavaScript biedt, alleen als elektrisch gereedschap. Zoals uitgelegd in de vorige stap, heeft het veel object-georiënteerde functies die de typische JavaScript-programmeur niet kent. Maar de meeste programmeurs die bekend zijn met deze functies zullen ze gemakkelijk aanbevelen als essentieel voor serieuze ontwikkeling.

Kortom, Google is van mening dat JavaScript niet de taak heeft om een ​​"echte" programmeertaal te zijn, gezien de hoeveelheid zwaar tillen die het heeft gedaan sinds de iPhone een gat in de zeppelin van Flash schoot.

Google hoopt dat Dart op de lange termijn standaard door alle grote browsers wordt ondersteund. Dat gebeurt nu duidelijk niet, aangezien Dart zelf nog steeds in de early-release-modus is en we kunnen niet verwachten dat Apple, Microsoft of Mozilla aan boord aan het springen zijn. Waar Dart nu echter naar op zoek is, is dat Google een compiler heeft geleverd om Dart-code om te zetten in normaal JavaScript.

Persoonlijk is dit iets waar ik naar verlangd sinds ik me tot JavaScript heb gewend, afkomstig van ActionScript. Zeg wat je wilt over Flash (en wees gerust, ik heb het waarschijnlijk ook gezegd), maar ActionScript 3 is een goede taal. Van geavanceerd AS3 naar JavaScript is bewezen dat het vloeken veroorzaakt. Ik heb eigenlijk met mijn eigen JavaScript-compiler gespeeld (ik ben niet ver gekomen en ben heel blij om het project te verlaten), en ik wilde iets dat me op zijn minst kon laten ontwikkelen met wat aardigheidjes, zoals echte klassen, interfaces en typen , zelfs als het is gecompileerd tot niet-typerend, prototypisch JavaScript. Het compileerproces kan enkele fouten opvangen voordat u het project uitvoert, wat een enorme tijdbesparing oplevert.

Dus, ongeacht of Google zijn of haar zin krijgt, het is zeker mogelijk om Dart-projecten vandaag voor het web te schrijven, en we zullen dat doen aan het einde van deze tutorial. Hopelijk, onderweg, zal ik je ervan overtuigen dat Dart eigenlijk best veelbelovend is.


Wat is er mis met Dart?

Nu dat je helemaal opgewonden bent over "JavaScript 2.0", nu voor de harde waarheid. Alleen Google heeft plannen om ondersteuning voor Dart op te nemen in zijn browser. Niemand anders heeft interesse getoond in dat. In feite zijn er nogal wat verklaringen afgelegd tegen Dart, of op zijn minst het idee om Dart native te ondersteunen, van de browser-makers zelf.

En hoewel Dart-projecten kunnen worden gecompileerd in JavaScript, is er noodzakelijk wat overhead in dit proces. De Dart-compiler lijkt niet echt op de CoffeeScript-compiler, wat meer een een-op-een-proces is. Dart is zijn eigen taal, met bibliotheken en dergelijke, en bij het compileren in JavaScript, compileert het consequent extra bibliotheekcode in het resulterende JavaScript. Dit weegt momenteel meer dan een bibliotheek zoals jQuery. Dit zal zeker veranderen als het Dart-team de compilatie finessed, maar in feite is het een jQuery-achtige bibliotheek die browserverschillen moet normaliseren, en ook wat extra "suiker" om JavaScript een beetje eerlijker te maken over zijn dynamische aard. Dit soort extra gewicht is niet verschrikkelijk, maar als je een eenvoudige UI-widget aan het bouwen bent voor een mobiele site, dan is Dart misschien niet de beste keuze. Het zal meer schijnen met grootschalige webapplicaties die op aanzienlijk JavaScript vertrouwen.

Ten slotte is Dart momenteel in ontwikkeling. Dat is spannend, en het is niet per se iets "fout" met Dart, maar als je nu in Dart begint te ontwikkelen, is de kans groot dat de API zal veranderen of dat dingen niet volledig of correct zullen worden gedocumenteerd, en de hoeveelheid informatie op internet is minder dan bijvoorbeeld het bedrag dat u over jQuery kunt vinden. Het is bloedend, en dat is misschien niet voor jou of voor een bepaald project.


Wat is geweldig over Dart?

Tegelijkertijd is het bloedend, en dat is geweldig. Investeer nu in een korte tijd om te leren dat Dart een mooie plaats kan innemen zodra Dart stabieler is. Als je nu betrokken raakt, heb je zelfs de mogelijkheid om de taal mee vorm te geven. De Dart-verzendlijst op Google Discussiegroepen heeft vaak wat heen en weer tussen mensen die ideeën voorstellen en Google-technici die op dat idee reageren. Vaak worden door de gebruiker ingebrachte ideeën beschouwd en is het niet ongebruikelijk om ze te laten opnemen.

Ik heb de voordelen van een getypte, object-georiënteerde taal al besproken en het is waarschijnlijk ook vanzelfsprekend dat die eigenschappen ook geweldig zijn.

Dart doet ook eerder denken aan Java, en dat zou geweldig zijn als je meer een Java (of C) programmeur bent die op zoek is naar webontwikkeling. Dart zou een betere overgang moeten bieden naar die wereld dan JavaScript zou doen.

Ten slotte gaat Dart niet alleen over een JavaScript-concurrent. Het is een hele nieuwe taal en het is klaar om overal te werken. Het wordt gebruikt aan de serverkant, a la Node.js, en belooft een ander wijdverspreid hulpmiddel te worden, zoals Ruby of Python.


Zou je het moeten schelen?

Dit is natuurlijk een beladen vraag en ik zou een op commentaar gebaseerde inquisitie uitnodigen, ongeacht hoe ik antwoord. Maar antwoord zal ik.

Je zult waarschijnlijk al om of niet geven, afhankelijk van hoeveel je last hebt van de problemen van Dart of opgewonden door de voordelen van Dart. De vorige twee stappen geven je voldoende informatie, leid je naar je eigen conclusie.

Als jij het type persoon bent wiens idee om JavaScript te programmeren, is om op het web naar jQuery-plug-ins te zoeken en deze op je HTML-pagina te installeren, dan zal Dart je waarschijnlijk niet veel opwinding bieden. Voel je vrij om het niet te schelen. En laat me je een hoop tijd besparen en onthullen dat ik de rest van deze tutorial baseer op de veronderstelling dat de lezer er om geeft, in ieder geval genoeg om te verkennen.

Als u echter het type ontwikkelaar bent dat echt gelooft in objectgeoriënteerd JavaScript, probeert u foutenvangst in uw scripts op te nemen en heeft u de neiging om meer JavaScript dan HTML te schrijven, dan bent u mogelijk een redneck iemand die geeft om goed programmeren, ongeacht de taal of het platform, in welk geval je misschien om Dart geeft. Je bent het in elk geval aan jezelf verplicht om het uit te proberen.

Naar mijn mening toont Dart veel beloftes en heeft het een plaats in web-programmering. Maar ik denk niet dat het de dominantie van JavaScript over scripting op HTML-pagina's gaat vervangen of zelfs echt zal compenseren. Ik denk dat het een plaats zal vinden met de meer serieuze webapplicaties, maar tenzij de browserfabrikanten (behalve Google) instemmen met het inbouwen van een Dart VM - wat volgens mij niet waarschijnlijk is - is Dart's lot gedegradeerd naar Chrome-experimenten en grote schaal web-apps. Eenvoudige scriptingstaken, zoals een vleugje interactiviteit op een anders statische pagina, zullen niet erg profiteren van Dart.

Dat gezegd hebbende, vind ik dat het altijd de moeite waard is om over nieuwe dingen te leren. Je zult misschien leren dat het nieuwe ding je tijd niet waard is, maar je zou die mening alleen moeten formuleren, door ervaring. We zullen wat ervaring bieden in deze tutorial, dus als je je avontuurlijk voelt, maak je dan klaar voor Dart.


Conclusie

Deze korte bespreking van Dart heeft hopelijk uw interesse gewekt in deze nieuwe taal die het web al dan niet stormenderhand kan veroveren. Als je het wilt uitproberen, kijk dan eens naar mijn Facebook-exclusieve handleiding die je handen vies zal maken met een eenvoudig Dart-project.

(Maak je geen zorgen als je niet op Facebook bent. De tutorial staat uiteindelijk op de belangrijkste Activetuts + -site en we hebben ondertussen veel meer Dart-inhoud in de rij.)

Bedankt voor het lezen! Deel uw mening over Dart in de comments.