Kære Dart,

Jeg skriver til dig, fordi jeg har lidt dårlig samvittighed over at tage imod invitationen om “en kop kaffe” på GOTO i Århus her om et par uger. Altså det er meget sødt af dig - vi kender jo ikke hinanden så godt endnu, men jeg kan jo forstå på det hele, at nogle af de andre udviklere er helt oppe at køre over dig.

Det er bare det, at JavaScript og jeg har været sammen rigtigt længe, ja det var vel i virkeligheden mit første programmeringssprog. Og det var nemt, i hvert fald i starten, fordi det var så tilgivende og man ikke lige behøvede at komme med blomster og få alle typerne til at stemme helt tip-top, før der kom noget frem på skærmen.

Som årene går kommer man jo til at kende hinanden, og jeg har satanedme (og undskyld mit sprog) set mange mærkelige sider af JavaScript. Prøv nu bare at se her, hvad tror du, at dette her udtryk evaluerer til?

"NaNNA".replace(/.*/g/ "x")

Nå, men svaret på det kan jeg jo skrive en kommentar til dig i morgen om. Jeg synes lige, at du skal tænke lidt over det. Det er alvorlige sager, vi taler om.

Kan ske, at JavaScript har vist sig lidt tung at danse med, især når vi er inviteret til de lidt større fester. Og du lover guld og grønne skove, men jeg tror altså ikke, at Bill G. og dem fra Mozilla-holdet vil snakke med mig, hvis det kun bliver os to. Så uanset hvad bliver jeg nødt til at have noget kørende ved siden af med JavaScript, og det ved vi jo allesammen er noget rod.

Så jeg tror egentlig lige, at jeg venter og ser, hvad der sker...

Knuzzz(*),

Kommentarer (10)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Deleted User

For dem af os som nu ikke ved hvad det helt store problem med JavaScript åbentbart er, at få det at vide :-) ?

At der lidt snask med NaN, det betyder jo hverken fra eller til. I mine øjne, i hvert fald hvis du skal sidde og lave web apps.

  • 0
  • 0
#4 Casper Bang

Problemet er at JavaScript blev lavet til små "onMouseOver" snippets i og af NetScape, og ikke store RIA applikationer som man jo ser i dag. JavaScript er hvad det er i dag pg.a. de-facto supporten i browsere, og ikke fordi det er specielt egnet til de arbejdsopgaver man sætter det til at udføre.

Mht. Bill G. kommentaren, så husk at Microsoft jo forsøgte sig med VBScript, men tabte fordi det i klassisk Microsoft manér, kun virkede til Microsoft's egen browser, Internet Explorer! Hvis Google har success med et nyt sprog og bedre VM, samt er parat og i stand til at levere plugins til Mozilla og Microsoft, så har vi jo i virkeligheden en ny version af JVM'en (bare uden Java sproget og JRE'et).

I for one salute our new browser overlords. Bring it on! :)

  • 5
  • 0
#5 Teddy K. Nielsen

Jeg har kodet JavaScript i mange aar og er kommet til et punkt, hvor jeg er begyndt at holde af sproget. Javascript er ualmindeligt fleksibelt i forhold til, hvad det tillader, at man skriver som udvikler.

Fleksibiliteten er dog paa en og samme tid sprogets styrke og svaghed - fleksibiliteten giver ogsaa mulighed for at bruge en raekke teknikker, som mere rigide programmeringssprog ikke tillader. Hvis man kender til JavaScripts svagheder og kun anvender "The Good Parts" (som Nikolai Beier henviser til), vil man finde ud af, at JavaScript er et kraftfuldt sprog.

Pt. vinder CoffeeScript stor tilslutning. CoffeeScript er et sprog, som kompilerer til JavaScript, og som sikrer, at du kun anvender de "gode" sider af JavaScript. Det output, som CoffeeScript producerer, overholder i oevrigt altid JavaScript Lint-testen.

(beklager "ae", "oe" og "aa" ... jeg sidder pt. med et udenlandsk keyboard)

  • 1
  • 0
#7 Anne-Sofie Nielsen

Som man kan se ved at eksekvere udtrykket i en browser, bliver resultatet "undefinedNA". Hvorfor?

Jo, første del /.*/g er et regulært udtryk. Dernæst skal dette divideres med "x", hvilket giver NaN (Not a Number). Ikke nogen exceptions her, selvom divisionsstykket er ganske meningsløst.

replace() tager normalt to argumenter, hvor det første er et regulært udtryk eller en streng, der skal søges efter, og andet argument er den streng, som alle matches skal erstattes af. Første argument bliver derfor konvereret til strengen "NaN".

I det konkrete eksempel er der kun givet ét argument til replace - men JavaScript er så venligt og tilgivende, at den indsætter undefined i stedet. Da replace() forventer en streng som andet argument, bliver det til "undefined". Altså vil alle forekomster af strengen "NaN" blive erstattet med strengen "undefined".

Lidt synd, når det udfra den sammenhæng, jeg fandt JavaScriptet i, tyder kraftigt på, at replace(/.*/g/ "x") lader til at være resultatet af, at den stakkels JS-programmør fik ramt "/"-tasten i stedet for ",", da han ville have erstattet alle matches af det regulære udtryk med "x".

Men det fik han ikke nogen fejl om ved kørslen, og har derfor sendt en webapp i luften, der laver noget vrøvl... DET er efter min mening et af de store problemer med JavaScript. Nogle gange har vi måske brug for et rap over fingrene - i tide.

  • 4
  • 0
#8 Lasse Lindgård

Jeg er spændt på Dart, men hvis det man vil er at have et ordenligt sprog, som man tilfældigvis kan compile til javascript (i nødstilfælde), så kan man jo allerede gøre det med Java og Scala (næsten) via GWT.

https://wiki.scala-lang.org/display/SW/ScalaDays+2011+Resources#ScalaDay...

Det ville da være alle tiders hvis browserne understøttede et par rigtige sprog. Lidt som java applets, bare uden det er boxet inde i grå firkanter.

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