Er JavaScript det beste språket for nye kodere?

Til tross for mange mangler, er JavaScript kanskje det beste språket for barn og nye elever

Året var 2007. O’Reilly Media, en teknisk utgiver på topp sokkel, hadde kontaktet meg med en idé. Ønsker jeg å skrive en bok som introduserer JavaScript for komplette nybegynnere?

Mitt svar var øyeblikkelig: Hvorfor?

Det var ikke slik at JavaScript var ubrukelig. Men JavaScript var bare en ingrediens i et nøye arrangement av teknologier som trengs for å bygge et nettsted - og det var den klart minst viktige. Ja, et dryss av JavaScript-pixie-støv kan validere lange former eller få en knapp til å glød når noen svevet over det. Men JavaScript var valgfritt - ta det ut av en side, og alt fungerte mer eller mindre på samme måte.

JavaScript fulgte også med noe alvorlig bagasje. Det var knyttet opp til nettleserkompatibilitetsproblemer, sakte, usikre og tydelig upålitelige. Jeg hadde ingen interesse i å lære noen å lage en ubrukelig JavaScript-drevet webside-widget. Denne ideen virket like meningsløs som de animerte gifene til roterende kloder som var rasende i de første dagene av Internett.

Den mest åpenbare måten å bruke JavaScript, eller slik jeg naivt trodde den gangen, var å la det store serversiden-rammeverket gjengi alt JavaScript det måtte til direkte på siden. Ja, den JavaScript kan være litt oppblåst, men den var skreddersydd for å passe til nettleseren i den andre enden, og ingenting brøt noensinne - selv om besøkende slått av JavaScript fullstendig.

Unødvendig å si at jeg ikke skrev boken. Jeg fortsatte å kode på webserveren og skrev om favoritteknologiene mine (vanligvis C # og .NET Framework). År gikk.

Da skjedde noe rart.

JavaScript overtok.

Jeg tror fremdeles ikke at JavaScript fortjener å bli kalt det beste valget i programmeringsspråk. Jeg synes ikke en gang det er et spesielt godt språk, hvis vi er helt ærlige. Men jeg har ombestemt meg om en ting. Nå tror jeg at JavaScript bare kan være det beste utgangspunktet for barn og nye kodere.

JavaScript er utrolig rekkevidde

Den enestående fordelen som JavaScript har er rekkevidden.

JavaScript er overalt - støttet på alle operativsystemer, i alle nettlesermerker og på stasjonære datamaskiner og mobile enheter. Like viktig er det at JavaScript ikke krever noen distribusjon. Faktisk er det allerede vanskelig å huske den ikke så fjerne fortiden da selskaper ville rulle ut klient-server-applikasjoner² på sine interne nettverk, tilbringe uker med å bryte med installasjonsproblemer og uventede feil. Overfor disse marerittene, kan du se JavaScript-appellen.

Takket være rekkevidden trengte JavaScript ikke å bli det beste programmeringsspråket. Det trengte bare å bli god nok.

En lignende dynamikk er på jobb når det gjelder å lære seg kode. Til å begynne med virker ikke spørsmålet om rekkevidde like viktig for en person som bare har som mål å lære god programmeringspraksis. Men mange av de samme problemene kommer i lek med å lære å programmere som i fagutvikling. Hvis du vil at arbeidet ditt skal ha universell rekkevidde, er JavaScript den eneste kandidaten.

Si for eksempel at du har bygd en fantastisk app-personlighet-prediktor-quiz. Det er relativt enkelt å sette opp et utviklingsmiljø. Men hva skjer når du vil sende programmet til en venn? Må de installere en kjøretid eller sette opp det samme utviklingsmiljøet? Trenger datamaskinen sikkerhetsinnstillingene sine, før den lar dem laste ned og installere programmet? Kanskje bruker vennen din et operativsystem som ikke støtter programmet ditt i det hele tatt - eller en mobil plattform som bare tillater profesjonelle applikasjoner som distribueres i iTunes eller Google Play-butikken. Med JavaScript og et grunnleggende nettsted (GitHub vil gi deg en liten del plass gratis), forsvinner disse problemene.

Og hvis den nye koderen som skal være barn, er dette et udiskutabelt faktum: barn og nettlesere passer godt sammen. Hvis du har sett et barn på jobb på en datamaskin (ikke en mobilenhet), har du sannsynligvis lagt merke til at minst 98% av tiden deres blir brukt i nettleseren. De spiller spill der, bruker sosiale medier og gjennomgår skolearbeid gjennom Google klasserom og Google Dokumenter. Det er bare naturlig at koden de oppretter konsumeres i den samme nettleserverdenen som de allerede bor.

Nå for problemene ...

Men hva med problemene? JavaScript har noen alvorlige ulemper, og dets påfunn, inkonsekvenser og begrensninger kan være spesielt smertefulle for noen som lærer å programmere for første gang. Heldigvis finnes det moderne løsninger som kan forhindre det meste av smerte.

La oss se på de fire vanligste klagene.

1. JavaScript er ikke trygt

Et sentralt konsept nye programmerere lærer seg tidlig, er ideen om variabler, containere som lagrer informasjon gjennom programmets levetid. Problemet med JavaScript er at det er løst og slurvete med variabler. Den godtar ting som ikke virker riktig og ignorerer åpenbare problemer. Dets latskap kan gjøre små skrivefeil til katastrofekatastrofer.

Her er et eksempel på noen kode som er dømt til å mislykkes:

var myNumber = 100;
myNumber = myNumbr + 1;

Fikk du feilen? Den andre linjen bruker faktisk to variabler: myNumber-variabelen som ble definert i den første linjen og en tenkt myNumbr-variabel. Vi vet at den andre variabelen er et resultat av en skrivefeil, men JavaScript "løser" problemet ved å opprette en ny myNumbr-variabel når du er på farten, noe som får beregningen til å mislykkes lydløst. Det samme problemet skjer hvis du bruker et variabelt navn med inkonsekvent store bokstaver (som MyNumber i stedet for myNumber). Et lignende problem oppstår hvis du tror at en variabel holder et tall når den virkelig har et stykke tekst, og så videre. Hver JavaScript-utvikler har en JavaScript-skrekkhistorie som denne.

Det er vanskelig å lære å kode uten å måtte bekymre deg for hvordan programmeringsspråket ditt saboterer deg på samme tid. Men heldigvis er type sikkerhetsproblemer lett løst med riktig utviklingsverktøy.

En av favorittkodeditorene mine - både for læring og til profesjonell bruk - er Visual Studio Code. Det er gratis, lett, åpen kildekode og uendelig utvidbar. En av de beste funksjonene er muligheten til å feilsjekke JavaScript-koden for vanlige problemer. Du kan slå på feilkontroll ved å legge til en konfigurasjonsfil, eller ved å legge denne kommentaren øverst i en JavaScript-fil:

// @ ts-check

Her er et eksempel som har to feil, og ingen av dem er et problem i JavaScripts øyne:

Kreditt: Matthew MacDonald ©

Hvis du bruker ts-check-kommentaren, understreker Visual Studio nyttig disse potensielle feilene:

Hold musepekeren over et av disse understreket områdene, og Visual Studio dukker opp en forklaring på problemet:

Takeaway? Selv om JavaScript tåler mange dårlige programmeringspraksiser, kan du få en opplevelse som ligner på andre moderne programmeringsspråk hvis du kombinerer JavaScript med en god kodeditor. Og du har ikke gitt opp rekkevidden til JavaScript.

2. JavaScript gjør ikke OOP

Objektorientert programmering (OOP) er en måte å modellere og ordne kode på. Gjort riktig, OOP hjelper programmerere med å lage enklere, bedre organisert kode. Det gjør det også lettere å gjenbruke viktige funksjoner.

JavaScript mangler notorisk støtte for objektorientert programmering. Faktisk falsker JavaScript-utviklere det rutinemessig med vanskelige teknikker og rare løsninger. Disse teknikkene kan være fornuftige for noen som allerede har lært å programmere (og selv om de ikke gjør det, kan du bare kopiere mønsteret til dine egne prosjekter og lære å leve med det). Men hvis du er helt ny på koding, er det åpenbart å bruke en kludge til et grunnleggende programmeringskonsept.

Heldigvis er det bedre og mer elegante løsninger som er riktig integrert med JavaScript-språket. Min favoritt er TypeScript, et åpen kildekode-prosjekt som ble lansert av Microsoft i 2012. TypeScript fungerer som en slags renset versjon av JavaScript som legger til objektorientert programmering (sammen med andre nyttige forbedringer, som streng typekontroll).

Noen kan innvende at TypeScript ikke akkurat er JavaScript - og det er sant. Men her er den magiske delen. Du kan skrive koden din i TypeScript og deretter konvertere den til JavaScript før du bruker den på en webside. Dette gir deg det beste fra begge verdener: et moderne programmeringsspråk for å skrive koden din, og den samme universelle støtten for å kjøre koden som vanlig JavaScript.

Det beste av alt er at hele prosessen skjer automatisk hvis du bruker et verktøy som Visual Studio Code. Ja, den genererte JavaScript-koden vil fortsatt bruke rare løsninger. Men hva så? Programmereren får lære seg OOP-konsepter, den ferdige koden fungerer uten problemer, og moderne datamaskiner håndterer hele rotet med letthet.

Tror du ikke på meg? Noen av dagens mest innovative stasjonære applikasjoner bruker en kombinasjon av TypeScript og Electron, et rammeverk som lar JavaScript kjøre utenfor nettleseren. Et av de mest imponerende eksemplene er Visual Studio Code. Det stemmer - det samme glatte verktøyet du bruker for å skrive JavaScript-kode ble også skrevet med JavaScript-kode. Mer spesifikt ble den skrevet med den moderne TypeScript-smaken på JavaScript-språket.

Selvfølgelig trenger du ikke bruke TypeScript, og nye JavaScript-programmerere kan gjøre mye uten å lære noen OOP-prinsipper, hvis de ønsker det. Det er virkelig et spørsmål om valg. Uansett er håpet i horisonten: JavaScript forbedres fortsatt, og nyere versjoner legger sakte til noen av forbedringene fra TypeScript.

3. Verden er full av dårlig JavaScript-kode

Har du noen gang hørt om Visual Basic?

4. JavaScript trenger flere biblioteker og rammer

For å få tilgang til mer funksjonalitet (og for å unngå å finne opp hjulet på nytt), må JavaScript-kodere bruke andre komponenter, biblioteker og rammer. Å velge riktige ingredienser - de som fungerer bra, vil bli støttet lenge inn i fremtiden og ikke vil komme i konflikt med hverandre - er ikke så lett som det ser ut til.

De fleste språk står overfor en versjon av dette problemet. Imidlertid lider få språk under denne situasjonen like dårlig som JavaScript. For å bli en seriøs programmerer i den JavaScript-verdenen som er gratis for alle, må du sette sammen din egen bunke med utviklingsverktøy og tillegg, og velge mellom alternativer som er så kompliserte og sammensveisede at du ikke vet om en passer deg før du har grundig lært det (på hvilket tidspunkt det kan ha drevet til foreldelse, erstattet av den nyeste hete nye kjepphesten).

Så dårlig som denne hodepinen er, påvirker ikke de nye kodere. Hvis noen lærer å kode med JavaScript, er den beste tilnærmingen å holde seg borte fra rammer og biblioteker, enten vi snakker jQuery, Angular, React, Vue, eller noe som er oppfunnet mellom tiden jeg skrev denne setningen og øyeblikket jeg hit publiser. Etter hvert, etter at en ny koder har en solid kommando over grunnleggende programmering, vil de sannsynligvis ønske å utforske minst et av disse rammene. Men det er et tema for en annen dag.

Har du dine egne meninger om det beste førstespråket for å lære barn å programmere? Det er ikke noe riktig svar (og jeg har mine egne favoritter). Slipp gjerne høye meningers svar i kommentarfeltet nedenfor! Hvis du ønsker å få en gratis forhåndsomtale-kopi av mine nye kodebøker for barn, kan du registrere deg for ProseTech-nyhetsbrevet.

Code Server-koden er koden som kjøres på en webserver, langt borte fra datamaskinen. Koden på klientsiden er koden som kjører rett i nettleseren din. For eksempel kan du søke etter et produkt på Amazon og kodesiden på serversiden Amazons databaser, generere HTML-koden med en liste over mulige treff og sende den til nettleseren din.

² Klient-server-applikasjoner er en eldre modell av applikasjonen som deler opp arbeidet i to deler. Den ene delen kjøres på en stasjonær datamaskin (klienten), som kommuniserer med den andre delen (serveren) på en annen datamaskin.