På årets Goto-konference i Aarhus løftede Google sløret for sit nye sprog Dart, som på sigt skal gøre det nemmere at skrive større webapplikationer i browseren på en mere robust facon end Javascript. Sproget kan afvikles på sin egen virtuelle maskine, men kan også oversættes (krydskompileres) til Javascript og på den måde afvikles i alle nye og gamle browsere, i hvert fald i teorien.
Bag sproget står to it-eksperter: Den ene er danske Lars Bak, der tidligere var den ledende kraft bag Javas virtuelle maskine, og som er ophavsmand til Javascript-motoren V8 i Google Chrome. Den anden er Gilad Bracha, der har mange år på bagen som sprogmand inden for Smalltalk og andre objektorienterede sprog. Dart skal løse problemet med at skrive store webapplikationer.
– Du kan lave biblioteker. En komponent kan ikke modificere et bibliotek, mens det kører, siger Lars Bak og hentyder til Javascripts mulighed for at ændre stort set hvad som helst under kørslen, så adfærden bliver svær at forudsige.
– Specielt for store applikationer, hvor der er flere grupper og personer, der arbejder på den samme kodestump, vil du få bedre strukturer og blive mere produktiv. Der vil altid være en klasse, som synes, man skal holde sig til det, man har, men jeg er i den modsatte grøft, hvor innovation er det, der skal til, hvis man vil fremad.
Familiær kodestil
Dart ligner til forveksling noget, man kender fra Javascript, Java og C#. Det er et objektorienteret sprog med klasser og interfaces som Java, men typer er dog kun vejledning for programmøren og værktøjerne.
– Vi har forsøgt at lave det så familiært, at de fleste programmører, som har brugt webbet eller Java, kan sætte sig ned samme dag og være produktive i Dart.
Darts virtuelle maskine er ikke for fin til at afvikle et program, selvom der er typefejl, for det kan sagtens være, at programmet virker alligevel, pointerer Lars Bak under hovedtalen på Goto-konferencen.
Uden typer er det svært at benytte kodeværktøjer, og typerne hjælper til med at optimere udførslen, men det er altså op til programmøren selv at bestemme, om de skal være der eller ej.
Interfaces kan i modsætning til Java indeholde constructors i form af factories, som kan stille en standard-implementering af interfacet på banen. Det kan minde lidt om dependency injection, der kendes fra Spring og Guice, men inspirationen kommer slet ikke her fra, siger Lars Bak.
Det handler simpelthen om ikke at kræve for mange forudsætninger af programmører, der ikke er bekendt med interface-begrebet. Hvis man bare vil have en liste, kan man nemt få det i form af den implementering, som interface-constructoren leverer.
I modsætning til almindeligt Javascript understøtter Dart parallelle programmer ved hjælp af komponenter, som kaldes for Isolates. Det minder om Actor-komponenter i sprog som Erlang, hvor en komponent kører i sin egen tråd og kommunikerer ved hjælp af beskeder i en kø.
Holde mobilapps stangne
Lars Bak ser de mange forskellige mobilplatforme som konkurrenter til webbet, og det nye og mere effektive sprog til webapplikationer kan i hans perspektiv holde de andre platforme stangne.
Triforks tekniske direktør, Kresten Krab Thorup, som i parentes bemærket er bagmand for Goto-konferencen og selv er et sproghoved, mener, at Dart kan komme til at spille en væsentlig rolle:
– Det kan blive meget betydende. Google har ikke sagt noget om det, men man kunne forestille sig, at det her kan blive det nye programmeringssprog til Android-applikationer. Hvis den virtuelle maskine blev pakket med Android, kunne man afvikle en Dart-applikation superhurtigt.
Det kunne også give Google en fordel i stridighederne med Oracle om Java, mener Kresten Krab Thorup, som betoner, at det naturligvis kun er spekulation. Sproget i sig selv, synes Kresten Krab Thorup, er lidt skuffende. Det er i hans øjne stort set blot Smalltalk med krøllede parenteser, selvom der dog også er positive ting at nævne.
Kan påvirke Java
Det er nok ikke særligt sandsynligt, at andre browserproducenter vil tage Dart til sig, open source eller ej. Den slags sker næsten aldrig i softwareindustrien. Men måske kan sproget bevise Lars Baks pointe om nemmere udvikling af store webapplikationer i klienten. Javascript-opfinderen, Brendan Eich, har tidligere sagt positive ord om et andet Javascript-alternativ, Coffeescript. Han ser forsimplinger som en mulig fremtidig udvikling for JavaScript, og på den måde kan Dart få en betydning.
Dart hører hjemme på Dartlang.org, hvor man også kan downloade et Eclipse-baseret udviklingsværktøj til sproget.