JavaScript: The good, the bad and the evil

JavaScript er programmeringsspråk nr. 1 for weben. Men språket har litt ufortent eit noko frynsete rykte. Douglas Crockford viser i boka «JavaScript: The Good Parts» korleis språket best kan brukast.

Namnet må ta skulda for ein del av feiloppfatningane rundt programmeringsspråket JavaScript:

  1. Mange trur det er slektskap mellom Java og JavaScript. Det er det ikkje!
  2. Mange trur JavaScript ikkje er eit skikkeleg programmeringsspråk på grunn av den andre stavinga. Det er også feil!

JavaScript for amatørar (og profesjonelle)
JavaScript har hatt ei rakettarta utvikling etter å ha vorte introdusert av Netscape som ein del av nettlesaren Netscape Navigator 2.0 i 1995 (då under namnet LiveScript). Etter litt stillstand skaut interessa for JavaScript igjen fart i 2005 med introduksjonen av AJAX. AJAX (Asynchronous JavaScript and XML) er ikkje noko programmeringsspråk eller rammeverk, men heller eit konsept for programmering av dynamiske nettsider; dvs. nettsider som oppdaterer seg automatisk utan at brukaren treng å oppfriska sida. JavaScript vart då interessant også for den profesjonelle delen av utviklarmiljøet.

ECMA-standard
JavaScript vart utvikla som eit språk for programmering av klient-sida (nettlesaren). Språket vart standardisert av ECMA i 1996–97 og heiter offisielt ECMAScript.

Oslo som fredsarena (igjen)
For oss nordmenn er det interessant at Oslo var vertskap for eit viktig møte i 2008 mellom ulike fraksjonar av JavaScript-miljøet. Det resulterte i ECMAScript 5 og ein prosess som vart kalla Harmony. Kanskje dette også bør med på skrytelista over norske fredsaktivitetar?

HTML5 og JavaScript
I dag er JavaScript svært sentralt i utvikling av web-relaterte tenester. Med HTML5 har JavaScript ei sentral rolle, og på kommunikasjons- og utvekslingssida har formatet JSON i stor grad teke over for XML. Viktige rammeverk er jQuery for enklare manipulering av web-sider og Node.js som utviklingsmiljø for programmering av tenester på server-sida. Douglas Crockford er også mannen bak JSON-spesifikasjonen.

JavaScript: The Good Parts
Douglas Crockford har teke for seg dei gode sidene i boka «JavaScript: The Good Parts». Han brukar ikkje tid på dei dårlege sidene, som det er ein del av, og som han sjølv skriv: «If you want to learn more about the bad parts and how to use them badly, consult any other JacaScript book». Med det har han også gitt ein karakteristikk av dei fleste andre bøkene om JavaScript, og dei er det mange av. Det må også leggjast til at Crockford si bok er frå 2008.

Crockford framhevar følgjande gode sider ved JavaScript:

  • Funksjonar
  • Laus type-sjekking («loose typing» - kan diskuterast om det er ein fordel eller ulempe)
  • Dynamiske objekt (JavaScript støttar også også objekt-orientert programmering)
  • Tydeleg objekt-notasjon («expressive object literal notation»)
The Bad and the Evil
Crockford brukar så boka til å gå gjennom desse sidene. Han tek for seg både dårlege (bad) og forferdelege (awful) sider ved språket (her er berre eit lite utdrag):
  • Globale variablar
  • Manglande støtte for Unicode (teikn blir uttrykt med 16 bits)
  • Flyttal (Floating Point) - Ulikt dei fleste andre programmeringsspråk har ikkje JavaScript integer, berre 'number' som er flyttal. Språket har heller ikkje teikn (character) som type, berre streng. Det fører til enkelte problem, i alle fall for dei som er vande med andre språk
  • == (og !=) er forvirrande operatorar og bør unngåast (bruk standard === og !==)
  • 'with'-kommando
  • kommenteringsteikna /* og */ kan forvirra - bruk //
Alle utviklarar med ambisjonar om programutvikling for web-en bør (må?) kunna programmera i JavaScript. Med HTML5 har det vorte endå viktigare. Då er det viktig å skilja dei gode delane i språket frå dei dårlege, og å prøva å unngå å bruka dei siste. Her er boka til Crockford essensiell, og den er konsentrert ned til det nødvendige.

 

PS.
Når eg skriv at det ikkje er slektskap mellom språka Java og JavaScript, er det ikkje heilt rett. JavaScript deler mykje av syntaksen med Java, og begge to har arva den frå programmeringsspråket C. For dei som ikkje er veldig glade i {krøllparentesar} og semikolon, tilbyr CoffeeScript ein alternativ syntaks som minner meir om Python, Pascal o.l.