Microsoft kritiserer Googles Dart-sprog: Vi foretrækker Javascript

Googles bud på et nyt scriptingsprog på internettet, Dart, bliver ikke mødt med begejstring hos Microsoft, som hellere vil satse på at forbedre Javascript.

Det er bedre at fokusere kræfterne på Javascript, end at begynde at opfinde afløsere for Javascript, som Google gør med Dart.

Sådan lyder det fra Microsoft i et blogindlæg om fremtiden for Javascript, skriver Cnet.com.

Google præsenterede Dart i Aarhus til Goto-konferencen i oktober måned, som en måde at udvikle nettet på, uden at være begrænset af Javascripts mangler.

Javascript, som helt officielt hedder ECMAscript, stammer fra midt-halvfemserne og blev ikke udviklet til at drive de tunge webapplikationer, som er blevet normale i dag, med op til en million linjers Javascript.

Læs også: Sprognørds håb for Dart: Skal bryde isvinteren for programmeringssprog

Men Microsoft, der jo også har Google som ærkerival, vil ikke satse på Dart som en løsning på nettet fremover. Og udmeldingen i blogindlægget tyder ikke på, at der kommer understøttelse af Dart i Microsofts browser Internet Explorer i nogen nær fremtid.

Google har da heller ikke droppet udviklingen af Javascript. Ligesom Microsoft og mange andre kom Google med forslag til forbedringer af Javascript på det seneste møde om standarden, der fandt sted hos Apple.

Læs også: Googles Dart skuffer udviklerne: ’Putter Java tilbage i Javascript’

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (15)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#2 Gert Peter Brigsted

Nu skal man huske på, at dokumentationen stadig er i draft version 0.01. Specifikationen kan derfor nå at ændre sig meget. Man skal derfor nok heller ikke satse hele butikken på Dart endnu! :)

Jeg er i øvrigt indædt fortaler for JavaScript, men må dog indrømme, at Dart ser spændende ud. Et nyt websprog ville ikke skade, hvis det kan give lidt konkurrence. Så længe det bare ikke ender med at splitte internettet i to lejre.

  • 2
  • 0
#3 Mikkel Høgh

Specifikationen kan derfor nå at ændre sig meget.

Tjaeh, det kan selvfølgelig godt være at de starter forfra og laver noget nyt og revolutionerende, men indtil videre er vi vel nødt til at forholde os til det der er offentliggjort.

Et nyt websprog ville ikke skade

Der er jeg nu ikke enig. Jeg mener at det er godt og sundt for internettet at vi kun har et sprog og at browserleverandørerne (minus Microsoft) kappes om at lave den bedste JavaScript-motor, og at der findes et kæmpe community af JavaScript-kyndige, som bygger fantastiske værktøjer som jQuery, Backbone, Node.js, Sproutcore, Modernizr osv. Jeg synes heller ikke det ville være en god idé med et alternativ til HTML og CSS.

  • 4
  • 2
#5 Jonas Finnemann Jensen

Helt enig, vi skal bare have standardiseret en VM mere :)

Jeg er enig i at en VM is browseren ville være det bedst. Helt afgjort det bedste! Men vi har haft JVM og CLR i browseren, begge er standardiseret. Så hvorfor skulle en VM mere gøre nogen forskel?

Hvorfor slog JVM og CLR aldrig igennem som Javascript (til DOM manipulation, altså)? Dårlig implementing? (fordi det er langsomme plugins) Eller patent skræk? (har bestemt skræmt mange fra CLR)

(Med moonlight er begge cross-platform, med libraries kunne man sikkert godt lave nem DOM manipulation)

  • 0
  • 0
#6 Jesper Kristensen

@Baldur Norddahl:

Nej, vi skal ikke have PNaCl i browserne. (og vi skal slet ikke have NaCl, men det tror du mente PNaCl, da du har nævnt LLVM) Det ville være endnu værre end Dart i browserne.

Hvis vi ender med at hver browser skal implementere flere konkurrerende VM'er, vil det bare betyde mere arbejde for hver browserleverandør for at videreudvikle de forskellige VM'er, og det giver færre forbedringer til hver VM. Så skal de hellere fokusere al deres energi på at forbedre hver deres implementeringer af den eksisterende JavaScript-VM.

Hverken Dart-VM'en eller PNaCl-VM'en har store nok fordele, som ikke vil kunne implementeres i JavaScript-VM'en, til at det retfærdiggør et komplet brud på al begudkompatibilitet og den store mængde udvikler-viden, der eksisterer omkring JavaScript. JavaScript-VM'en er i stand til at køre programmer i hvilket som helst sprog (http://emscripten.org/ ) og vi har langt fra nået grænsen for hastighed endnu.

@Jonas Finnemann Jensen:

JVM og CLR var ikke VM'er i browseren. De krævede plugins, og en ordentligt lavet webapplikation skubber ikke ansvaret for, at tingene teknisk virker, over på brugeren, ved at kræve at han/hun installerer diverse plugins. Plugins har aldrig været "just works", og de er det slet ikke længere nu hvor iOS og Windows 8 har slået dem helt ihjel.

  • 1
  • 3
#7 Jonas Finnemann Jensen

@Jesper Kristensen, Okay, so du mener slet ikke vi skal have standardiseret VM i browseren? Pointen med det ville jo netop være at du kunne skrive performance krævende ting i statisk typede sprog med manual hukommelse håndtering. Den type sprog kræver typisk meget mindre hukommelse og er meget hurtigere at afvikle, end javascript selv med diverse optimeringer.

Hvis vi standardisere os til en bestemt VM, så får browserne konkurrende implementeringer, men kun af den ene VM.

Det sagt, så tror jeg desvære ikke vi får en VM. Der er patent skræk og nogle mener at man skal kunne se koden (sådan som man kan med JS).

  • 1
  • 1
#8 Jesper Kristensen

JavaScript er en VM. Hvis vi skal have en anden VM (med statiske typer og manuel hukommelseshåndtering), så har vi to VM'er.

Der er masser af spekulationer om hvorvidt en JavaScript-VM kan være lige så hurtig som en mere maskinnær VM. Vi to lader til at have forskellige overbevisninger på det punkt, men ingen af os ved det. JavaScript-implementeringer bliver stadig hurtigere, og den udvikling har endnu ikke vist tegn på at stagnere.

Den dag vi ikke kan presse mere performance ud af JavaScript, kan vi overveje at anvende en anden VM. Ind til da er det spild af ressourcer at have to VM'er på www.

  • 3
  • 0
#9 Jonas Finnemann Jensen

JavaScript er en VM.

Okay, jeg ville måske sige sprog. Men jeg forstår hvad du mener...

Men det vi gør når vi afvikler javascript effektivt i dag er at kompilere det til noget med statiske typer. Så man kan godt kører JS på en VM som f.eks. CLR, JVM eller LLVM, altså noget med optional garbage collection.

Den dag vi ikke kan presse mere performance ud af JavaScript, kan vi overveje at anvende en anden VM. Ind til da er det spild af ressourcer at have to VM'er på www.

Uenig, at tilføje en maskinnær VM er da en lavt hængende frugt, som er lige til at plukke. Hvorfor ikke, de er jo standardiserede...

Der er masser af spekulationer om hvorvidt en JavaScript-VM kan være lige så hurtig som en mere maskinnær VM

Jeg enig i at det ikke er til at vide. Jeg lavede forresten en implementering af en en beregningstung algoritme i CoffeeScript og C++, for at teste V8 mod GCC for et par uger siden. Ved sammenligningen fandt jeg at CoffeeScript/V8 tog kun dobbelt så lang tid som C++/GCC, hvilket må siges at være vildt godt! Men CoffeeScript/V8 brugte tilgengæld mere end 6 gange så meget hukommelse. Hukommelse har vi nok af, men transmission fra ram til CPU tager tid.

  • 0
  • 2
#10 Jesper Kristensen

Interessant at sammenligne hukommelsesforbruget, det har jeg ikke set før. Men jeg vil tro det er et område browser-udviklerne ikke har haft fokus på, og hvor der derfor kan være plads til forbedringer.

Jeg er ikke enig i at der er nogle lavt hængene frugter. At tilføje et nyt format til web-platformen er en stor ting. Hverken CLR, JVM eller LLVM har været rigtigt integreret i web-platformen før, og hvis man skulle integrere en af dem, ville det være et større arbejde, både at lave og at vedligeholde bagefter. Og ethvert nyt format der tilføjes skal vedligeholdes i al fremtid. Hvorvidt CLR og JVM kan kaldes åbne standarder, på samme måde som dem vi har på web-platformen, kan vidst diskuteres. Selvom jeg ikke kender til detaljerne i hvordan LLVM virker, har jeg hørt fra en del personer, som har undersøgt PNaCl, at LLVM ikke ikke egner sig som VM, da det er en compiler IR.

  • 0
  • 0
#11 Baldur Norddahl

Hvorfor slog JVM og CLR aldrig igennem som Javascript (til DOM manipulation, altså)?

JVM slog ikke igennem til DOM manipulation fordi Sun aldrig lavede et API til dom manipulation. En Java applet lever sit eget lille liv i en kasse og kan ikke rigtig interagere med resten af browseren. Dertil kommer at den er langsom til at starte og at den er ekstremt bloated og en tilsyneladende uendelig række af sikkerhedsproblemer. Nu er der alt for mange som ikke stoler på produktet. JVM har vist haft sin chance og forspildt den.

CLR er måske et bedre bud. Man kan dog sige noget af det samme som om JVM'en. Min viden om CLR er begrænset i forhold til JVM. Jeg vil dog holde på at både JVM og CLR har for meget baggage og vækker formodentlig for mange følelser i folk.

Javascript som VM - det er ekstremt naivt det der bliver skrevet her. Det er da muligt at man kan oversætte alle mulige sprog til javascript, men HURTIGT bliver det aldrig. En af fordelene ved statisk typede sprog er at det er meget nemmere at generere effektiv maskinkode. Ud fra et performance perspektiv er det ren katastrofe at smide type informationen væk, ved at oversætte til javascript før det rammer VM'en.

NaCl er en mere moderne VM end både JVM og CLR. Den kan acceptere rå maskinkode. Man kan kode i C til den. Hvis man har brug for en funktion fra et gammelt standard program, lad os sige ImageMagick, jamen så inkluderer man da bare programmet.

Hvis vi forholder os til de sikkerhedsproblemer der har været med JVM, så har stort set ingen været i selve sikkerhedsmodellen. Jeg er faktisk ikke bekendt med at der har været en fejl i VM'en. Det har alt sammen været i de millioner linjer af C(++) kode som Javas standard bibliotek er kodet i og som kører udenfor VM'ens beskyttede miljø. Med NaCl er det muligt at køre alt det inden for beskyttelsen og kun have en meget minimal kontaktflade ud i verdenen. Ja, faktisk er det muligt at køre hele JVM'en som en NaCl applikation med en rimelig forventing til performance.

Vi er kun interesseret i den rå VM. Det skal være uden standard bibliotek og andet gejl. Den slags kan vi (web-programmører) selv levere. Der er brug for et API til DOM manipulation med mere, og det API findes allerede: Vi skal bare have adgang til de værktøjer der er defineret af HTML5.

På den måde skal browser leverandøren kun kode et meget lille system. En mand kan realistisk kode en NaCL VM på kort tid. Det kræver hundrede af mandeår at lave en JVM. At systemet er lille betyder også at det er overskueligt at lave god code review på. Det kan laves vandtæt.

  • 1
  • 0
#12 Baldur Norddahl

Selvom jeg ikke kender til detaljerne i hvordan LLVM virker, har jeg hørt fra en del personer, som har undersøgt PNaCl, at LLVM ikke ikke egner sig som VM, da det er en compiler IR

LLVM er ikke en VM og bliver ikke brugt som en VM i NaCl. Du skal i stedet betragte LLVM som maskinkode. Ideen med NaCl er jo at man kan sende maskinkode i for eksempel 32 bit x86, 64 bit x86, 32 bit ARM, etc. Men hvad så når der kommer en gut forbi med en 64 bit ARM? Løsningen er at give ham LLVM kode. Det bliver så oversat af klienten til assemblerkode og derefter behandlet på præcis samme vis, som hvis du havde leveret assemblerkoden direkte.

Så når du spørger om jeg mener PNaCl, så er svaret ja og nej. Mest nej. Jeg mener at alle bør understøtte LLVM varianten som minimum og andre CPU arkitekturer som valgfrit tilvalg.

Jeg har på fornemmelsen at du opfatter PNaCl som mere beskyttet end NaCl med native code. Men det er misforstået. Beskyttelsen er præcis den samme. Hverken mere eller mindre. LLVM har ingen indbygget beskyttelse. Det er som du siger, bare sidste trin i en oversætter - det trin som skal generer kode til den specifikke arkitektur.

Det man også skal forstå omkring NaCl er at beskyttelsen er absolut. Der er tale om matematiske beviser for at koden er god. Og det er meget simpelt at checke for klienten. Det er ikke et kæmpe hul ind i din computer, som bare venter på at hackerne slår til. Et NaCl program kan det samme som javascript i browseren. Og kun det.

  • 0
  • 0
#13 Rico Wind

Men det vi gør når vi afvikler javascript effektivt i dag er at kompilere det til noget med statiske typer. Så man kan godt kører JS på en VM som f.eks. CLR, JVM eller LLVM, altså noget med optional garbage collection.

Hvad mener du med at vi oversætter det til noget med statiske typer? En Javascript VM kompilerer i dag direkte til maskinkode.

  • 1
  • 1
#14 Jonas Finnemann Jensen

[qoute]Hvad mener du med at vi oversætter det til noget med statiske typer? En Javascript VM kompilerer i dag direkte til maskinkode.[/qoute] Man kan vist roligt sige at der ikke foregår dynamisk type tjek på hardware niveau :)

Men ja, det jeg mener er at man forsøger at minimere type tjek i koden ved at gætte typer.

  • 0
  • 0
#15 Daniel Madsen

Jeg mener at det er godt og sundt for internettet at vi kun har et sprog og at browserleverandørerne (minus Microsoft) kappes om at lave den bedste JavaScript-motor

Uden at starte en religionskrig så er Microsoft altså med på vognen med IE9 (og der skete også store forbedringer i IE8).

Tjek f.eks. http://www.tomshardware.com/reviews/internet-explorer-9-chrome-10-opera-...

IE9 klarer sig såmænd ganske udmærket i selskab med de andre browsere, så jeg synes måske ikke det er en helt fair bemærkning :-)

  • 0
  • 0
Log ind eller Opret konto for at kommentere