Dart en de Javascriptsoep
                =========================
                        2013-07-01

De afgelopen dagen heb ik even goed gekeken naar Dart.  Deze
taal moet als het  aan  Google  ligt  in  de  komende  jaren
Javascript gaan vervangen als dominante clienttaal voor  het
web.

Webdevelopers zijn veelpotige wezens.   Voor  een  gemiddeld
project maak ik al gauw gebruik van  een  halfdozijn  talen.
Html  en  CSS  voor  de  clientweergave.    Javascript   (en
tegenwoordig vaak Coffeescript) voor  rijke  webapplicaties.
Aan de serverzijde gebruik  ik  veel  PHP  (soms  Java)  met
regelmatig een extra taal voor templating, zoals Smarty,  of
(in het geval  van  Typo3)  Typoscript.   Voor  de  database
gebruik ik daar boven op uiteraard SQL en soms PL/pgSQL voor
stored procedured.

Zonder talenknobbel kom je niet ver als webprogrammeur en om
eerlijk te zijn kijk ik wel eens  met  milde  jaloezie  naar
collegaprogrammeurs die hun dagen in een wereldje  van  puur
Java of C++ doorbrengen.  Maar ik ben  ook  wel  dol  op  de
razendsnelle iteratie van technologie van het web. Bovendien
maak ik  tegenwoordig  steeds  meer  mobiele  apps  ook  met
webtechnieken    (dankzij    Cordova/Phonegap    en    goede
ondersteuning voor CSS3/HTML5 in webkit).  Wat ik erg  graag
wil  is  een  taal  die  client  en  serverside  met  elkaar
verbindt, waardoor het mogelijk is om iets meer analoog  aan
de  prototypische  J2EE-developer   binnen   één   taal   en
programmeeromgeving te leven.

Dankzij recente ontwikkelingen is  het  vrij  onvermijdelijk
dat ik over een paar jaar aan server- en clientside dezelfde
taal gebruik. Node.js is extreem hip (Javascript op server),
in de  Haskell  hoek  gebeuren  er  allerhande  interessante
dingen (Yesod/Fay/Happstack) en ook talen  als  Opa  krijgen
volop aandacht.

Het probleem met de enorme wirwar aan nieuwe webtalen is dat
het moeilijk in te schatten is  wat  uiteindelijk  succesvol
gaat worden.  Hoe waanzinnig mooi de ontwikkeling van nieuwe
talen ook altijd zijn, uiteindelijk draait  het  om  adoptie
daarvan.

Haskell is bijvoorbeeld erg academisch en  in  tegenstelling
tot wat veel Haskellfans je zullen zeggen, tamelijk moeilijk
te leren.  Er is een enorme lijst van talen  die  gefundeerd
zijn op Javascript, maar denk je serieus dat  iedereen  over
een paar jaar Opa, of Objective-J gebruikt?  De adoptie  van
zulke talen is moeilijk en gefragmenteerd.  Coffeescript  is
succesvol, omdat je het razendsnel oppikt en feitelijk  niet
meer is dan een mooi gepolijst syntaxlaagje.  Alsof je  hebt
besloten slagroom op je  appeltaart  te  nemen,  het  blijft
uiteindelijk appeltaart.

Begrijp me niet verkeerd, ik vind Coffeescript prettig, maar
het neemt niet het javascript probleem weg, namelijk dat  de
taal een rommeltje is.  Tot 10.000 regels code zit  ik  daar
niet zo mee, maar op het moment  dat  het  echt  heel  groot
wordt en moet schalen, dan  wordt  het  lastig  te  managen.
Natuurlijk  zijn  hier  allerhande  oplossingen  voor  zoals
AngularJS, maar liever switch ik dan naar een  andere  taal.

Dart is een goede kandidaat. Op het eerste gezicht lijkt het
erg op Java, niet erg sexy.  Het is sterk gericht op  object
georiënteerd programmeren, maar heeft in  tegenstelling  tot
Java wel  de  mogelijkheid  om  top-level  functies  toe  te
voegen.   Harige  zaken  zoals  multiple  inheritance   zijn
vermeden en het heeft optionele static typing (nu al “feeble
typing” gedoopt).  Google is duidelijk  erg  pragmatisch  te
werk  gegaan  en  heeft  zoveel  mogelijk   geprobeerd   een
allemansvriend te maken.  Je kunt dus wel raden wat voor een
pissige reviews er zijn geweest, want er zijn weinig  dingen
die zoveel programmeurpedanterie kunnen veroorzaken als  een
nieuwe taal.

Ik ben zelf niet van het “code is poëzie  kamp”.   Zelfs  de
prachtigste stukken Scheme  of  Erlang  zijn  nog  geen  Leo
Vroman  en  hoe  elegant  je  ook   functiecompositie   kunt
toepassen in Scala, het redt het  niet  bij  de  verzen  van
Vasalis.

Ik drijf af. Wat ik bedoel is dat je een programmeertaal een
functioneel nut heeft, als een strijkijzer, en  uiteindelijk
niet te veel in de weg moet zitten.  Het is handig  als  het
snel  op  te  pikken  is   en   lijkt   op   reeds   bekende
programmeertalen.  Het is  mooi  als  de  taal  probeert  te
voorkomen dat de programmeur zichzelf of een ander makkelijk
in de voet schiet en niet als een vervelende drill  sergeant
je dwingt regel na regel aan vervelende boilerplate code uit
te poepen.

Dart voldoet hier aan.  Je  kunt  er  met  grote  teams  mee
werken, het moedigt een pragmatische en heldere stijl aan en
het heeft een paar features die het leven van een webdev een
stuk aangenamer maken.

Die belangrijkste features die mij zo in  het  oog  springen
zijn isolates en futures.  Isolates zijn een  Erlang-achtige
elementen  om  concurrency  te  regelen  aan  de  hand   van
afgezonderde beestjes  die  communiceren  aan  de  hand  van
boodschappen. Isolates zijn zoals de naam al zegt geïsoleerd
en delen dus geen  thread.   Als  je  Dart  naar  Javascript
compiled dan worden ze geïmplementeerd aan de hand  van  web
workers.  Futures zijn  een  handige  manier  om  de  enorme
callbackkluwen een beetje te handelen.

Al met al ziet Dart er gewoon vrij goed  uit.   Het  is  een
beetje de “Gilmore Girls” van de nieuwe webtalen,  maar  dat
is  expres  en  zou  wel  eens  goed  kunnen  zijn  voor  de
populairiteit.  Ik zou er weinig bezwaar tegen hebben als ik
over een paar jaar voornamelijk programmeer  in  deze  taal,
maar mijn milde mening is niet  bepaald  het  ontvangst  dat
Google heeft gekregen.

Veel  programmeurs  zijn  bang   voor   een   ActiveX-achtig
scenario.  Dart zal vanwege de VM die Google in  Chrome  zal
stoppen daar een eersteklas burger zijn en voorlopig  op  de
andere browsers omgezet worden naar Javascript. Het lijkt me
onrealistisch om te verwachten  dat  andere  browserbakkers,
hoe prettig de open source licentie van de VM  dan  ook  is,
dit zullen overnemen.  Bovendien was de manier waarop Google
destijds Dart (toen nog Dash genoemd)  aankondigde  niet  de
meest subtiele.  Het zou een nieuwe standaard moeten  worden
en Javascript gaan vervangen.

Ik zie zelf weinig problemen in Javascript an sich.  Het  is
geen mooie taal, maar het heeft nu de status bereikt van  de
bytecode van het web.  Ik denk dat de  push  voor  Dart  als
nieuwe taal een stuk eenvoudiger zou  zijn  als  Google  dat
volledig had gerespecteerd. Maar goed, als ze maar voldoende
programmeurs  achter  zich  krijgen  dan  kunnen   ze   Dart
natuurlijk tot nieuwe standaard máken.  Dit  is  echter  wel
een staaltje powerplay dat de reus uit  Redmond  ondertussen
niet meer aandurft. We zullen zien of deze hoogmoed Dart ten
val brengt, of juist als nieuwe top dog boven op de webstack
parkeert.


-----------------------------------------------------------
                     Tags: nederlands