Er JavaScript det bedste sprog til nye kodere?

På trods af sine mange mangler er JavaScript muligvis bare det bedste klingende sprog for børn og nye elever

Året var 2007. O’Reilly Media, en teknisk udgiver på top hylden, havde kontaktet mig med en idé. Vil jeg gerne skrive en bog, der introducerer JavaScript til komplette begyndere?

Mit svar var øjeblikkeligt: ​​Hvorfor?

Det var ikke sådan, at JavaScript var nytteløst. Men JavaScript var kun en ingrediens i et omhyggeligt arrangement af teknologier, der var nødvendige for at oprette et websted - og det var langt den mindst vigtige. Ja, et drys JavaScript-pixie-støv kunne validere lange former eller få en knap til at gløde, når nogen svævede over det. Men JavaScript var valgfrit - tag det ud af en side, og alt arbejdede på mere eller mindre måde på samme måde.

JavaScript fulgte også med noget seriøs bagage. Det var bundet sammen med browserkompatibilitetsproblemer, langsomt, usikkert og tydeligt upålideligt. Jeg havde ingen interesse i at lære nogen, hvordan man opretter en unyttig JavaScript-drevet webside-widget. Denne idé virkede lige så meningsløs som de animerede gifs fra roterende kloder, der var alle raseri i de tidlige dage af Internettet.

Den mest åbenlyse måde at bruge JavaScript, eller sådan tænkte jeg naivt på det tidspunkt, var at lade din store server-side-ramme gengive det JavaScript, det måtte være nødvendigt direkte på siden. Ja, den JavaScript er måske lidt oppustet, men den var skræddersyet til at passe til browseren i den anden ende, og intet brød nogensinde - selvom besøgende slukkede JavaScript helt.

Naturligvis skrev jeg ikke bogen. Jeg fortsatte med at kode på webserveren og skrev om mine foretrukne teknologier (normalt C # og .NET Framework). År gik.

Så skete der noget underligt.

JavaScript overtog.

Jeg tror stadig ikke JavaScript fortjener at blive kaldt det bedste valg i programmeringssprog. Jeg synes ikke engang, det er et særligt godt sprog, hvis vi er helt ærlige. Men jeg har ændret mening om en ting. Nu tror jeg, at JavaScript bare kan være det bedste udgangspunkt for børn og nye kodere.

JavaScript er utroligt rækkevidde

Den enestående fordel, som JavaScript har, er dens rækkevidde.

JavaScript er overalt - understøttet på ethvert operativsystem, i alle browsermærker og på både desktopcomputere og mobile enheder. Lige så vigtigt er det faktum, at JavaScript ikke kræver nogen distribution. Faktisk er det allerede svært at huske den ikke så fjerne fortid, da virksomheder ville rulle klient-serverapplikationer² på deres interne netværk, tilbringe uger med at kæmpe med installationsproblemer og uventede fejl. Over for disse mareridt, kan du se JavaScript's appel.

Takket være dens rækkevidde behøvede JavaScript ikke at blive det bedste programmeringssprog. Det var kun nødvendigt at blive god nok.

En lignende dynamik er på arbejde, når det kommer til at lære at kode. Først virker spørgsmålet om rækkevidde ikke så vigtigt for en person, der kun har til formål at lære god programmeringspraksis. Men mange af de samme spørgsmål kommer i spil med at lære at programmere som i faglig udvikling. Hvis du ønsker, at dit arbejde skal have universel rækkevidde, er JavaScript den eneste kandidat.

For eksempel kan du sige, at du har bygget en fantastisk personlighedsprediktor-quiz-app. Det er relativt let at oprette et udviklingsmiljø. Men hvad sker der, når du vil sende dit program til en ven? Skal de installere en runtime eller oprette det samme udviklingsmiljø? Har deres computer brug for dets sikkerhedsindstillinger tilpasset, før den giver dem mulighed for at downloade og installere dit program? Måske bruger din ven et operativsystem, der overhovedet ikke understøtter dit program - eller en mobil platform, der kun tillader professionelle applikationer, der distribueres i iTunes eller Google Play-butikken. Med JavaScript og et grundlæggende websted (GitHub giver dig et lille stykke plads gratis), forsvinder disse problemer.

Og hvis den nye koder, der skal være, er et ubestrideligt faktum: børn og browsere passer godt sammen. Hvis du har set et barn på arbejde på en computer (ikke en mobilenhed), har du sandsynligvis bemærket, at mindst 98% af deres tid tilbringes i en browser. De spiller spil der, bruger sociale medier og gennemgår skolearbejde gennem Google klasseværelse og Google Docs. Det er kun naturligt, at koden, de opretter, forbruges i den samme browserverden, som de allerede bor.

Nu for problemerne ...

Men hvad med problemerne? JavaScript har nogle alvorlige ulemper, og dets besvær, uoverensstemmelser og begrænsninger kan være særligt smertefulde for en person, der lærer at programmere for første gang. Heldigvis er der moderne løsninger, der kan forhindre det meste af smerten.

Lad os se på de fire mest almindelige klager.

1. JavaScript er ikke typen sikker

Et vigtigt koncept, som nye programmerere lærer tidligt, er ideen om variabler, containere, der gemmer information i et program. Problemet med JavaScript er, at det er løst og uheldig med variabler. Den accepterer ting, der ikke synes rigtige og ignorerer åbenlyse problemer. Dets dovne kan forvandle små skrivefejl til katastrofede katastrofer.

Her er et eksempel på en kode, der er dømt til at mislykkes:

var myNumber = 100;
myNumber = myNumbr + 1;

Fik du fejlen? Den anden linje bruger faktisk to variabler: myNumber-variablen, der blev defineret i den første linje, og en imaginær myNumbr-variabel. Vi ved, at den anden variabel er resultatet af en skrivefejl, men JavaScript "løser" hjælpsomt problemet ved at oprette en ny myNumbr-variabel undervejs, hvilket får beregningen til at svigte lydløst. Det samme problem sker, hvis du bruger et variabelt navn med inkonsekvent store bogstaver (som MyNumber i stedet for myNumber). Et lignende problem opstår, hvis du tror, ​​at en variabel har et tal, når det virkelig har et stykke tekst, og så videre. Hver JavaScript-udvikler har en JavaScript-horrorhistorie som denne.

Det er svært nok at lære at kode uden at skulle bekymre sig om de måder, dit programmeringssprog saboterer dig på samme tid. Men heldigvis løses type sikkerhedsproblemer let med det rigtige udviklingsværktøj.

En af mine foretrukne kodeditorer - både til læring og til professionel brug - er Visual Studio Code. Det er gratis, let, open source og uendeligt strækkeligt. En af dens bedste funktioner er dens evne til at fejlekontrollere JavaScript-kode for almindelige problemer. Du kan aktivere fejlkontrol ved at tilføje en konfigurationsfil eller ved at sætte denne kommentar øverst i en JavaScript-fil:

// @ ts-check

Her er et eksempel, der har to fejl, hvoraf den ene ikke er et problem i JavaScript's øjne:

Kredit: Matthew MacDonald ©

Hvis du bruger ts-check-kommentaren, understreger Visual Studio nyttige disse potentielle fejl:

Hold musepekeren over et af disse understregede områder, og Visual Studio viser en forklaring af problemet:

Takeaway? Selvom JavaScript tolererer masser af dårlig programmeringspraksis, kan du få en oplevelse, der ligner andre moderne programmeringssprog, hvis du kombinerer JavaScript med en god kodeditor. Og du har ikke opgivet JavaScript's rækkevidde.

2. JavaScript gør ikke OOP

Objektorienteret programmering (OOP) er en måde at model og arrangere kode på. Udført til højre, OOP hjælper programmerere med at oprette en enklere, bedre organiseret kode. Det gør det også lettere at genbruge vigtige bit af funktionalitet.

JavaScript mangler notorisk støtte til objektorienteret programmering. Faktisk falsker JavaScript-udviklere rutinemæssigt med akavede teknikker og underlige løsninger. Disse teknikker kan give mening for nogen, der allerede har lært at programmere (og selvom de ikke gør det, kan du bare kopiere mønsteret til dine egne projekter og lære at leve med det). Men hvis du er helt ny med kodning, er det åbenlyst at bruge en kludge til et grundlæggende programmeringskoncept.

Heldigvis er der bedre, mere elegante løsninger, der er korrekt integreret med JavaScript-sproget. Min favorit er TypeScript, et open source-projekt, der blev lanceret af Microsoft i 2012. TypeScript fungerer som en slags oprenset version af JavaScript, der tilføjer objektorienteret programmering (sammen med andre nyttige forbedringer, f.eks. Streng typekontrol).

Nogle kan indvende, at TypeScript ikke er nøjagtigt JavaScript - og det er sandt. Men her er den magiske del. Du kan skrive din kode i TypeScript og derefter konvertere den til JavaScript, før du bruger den på en webside. Dette får dig det bedste fra begge verdener: et moderne programmeringssprog til at skrive din kode og den samme universelle support til at køre din kode som almindelig JavaScript.

Bedst af alt, hele denne proces sker automatisk, hvis du bruger et værktøj som Visual Studio-koden. Ja, den genererede JavaScript-kode bruger stadig ulige løsninger. Men hvad så? Programmøren lærer OOP-koncepter, den færdige kode fungerer uden hikke, og moderne computere håndterer hele rodet med lethed.

Tro ikke mig? Nogle af dagens mest innovative desktop-applikationer bruger en kombination af TypeScript og Electron, en ramme, der tillader JavaScript at køre uden for en browser. Et af de mest imponerende eksempler er Visual Studio Code. Det er rigtigt - det samme glatte værktøj, du bruger til at skrive JavaScript-kode, blev også skrevet med JavaScript-kode. Mere specifikt blev det skrevet ved hjælp af den moderne TypeScript-smag af JavaScript-sproget.

Naturligvis behøver du ikke at bruge TypeScript, og nye JavaScript-programmerere kan få gjort meget uden at lære nogen OOP-principper, hvis de vælger det. Det er virkelig et spørgsmål om valg. Uanset hvad er håbet på horisonten: JavaScript forbedres stadig, og nyere versioner tilføjer langsomt nogle af forbedringerne fra TypeScript.

3. Verden er fuld af dårlig JavaScript-kode

Har du nogensinde hørt om Visual Basic?

4. JavaScript har brug for yderligere biblioteker og rammer

For at få adgang til mere funktionalitet (og for at undgå at opfinde hjulet igen) skal JavaScript-kodere bruge andre komponenter, biblioteker og rammer. At vælge de rigtige ingredienser - dem, der fungerer godt, vil blive understøttet længe i fremtiden og ikke kommer i konflikt med hinanden - er ikke så let som det ser ud til.

De fleste sprog står over for en version af dette problem. Dog er der få sprog, der lider under denne situation lige så dårligt som JavaScript. For at blive en seriøs programmør i den JavaScript-verden, der er fri for alle, skal du samle din egen stak udviklingsværktøjer og tilføjelser ved at vælge fra indstillinger, der er så komplekse og indviklede, at du ikke ved, om en passer dig, indtil du har grundigt lært det (på hvilket tidspunkt det måske er drevet til forældelse, erstattet af den nyeste hot new fad).

Så dårlige som disse hovedpine er, de påvirker ikke rigtig nye kodere. Hvis nogen lærer at kode med JavaScript, er den bedste metode at holde sig væk fra rammer og biblioteker, uanset om vi taler jQuery, Angular, React, Vue eller noget der er opfundet mellem det tidspunkt, jeg skrev denne sætning og det øjeblik, jeg hit public. Til sidst, efter at en ny koder har en solid kommando over programmering af grundlæggende elementer, vil de sandsynligvis ønsker at udforske mindst et af disse rammer. Men det er et emne for en anden dag.

Har du dine egne meninger om det bedste førstesprog til at lære børn at programmere? Der er ikke noget rigtigt svar (og jeg har mine egne favoritter). Du er velkommen til at lægge meget udtalte svar i kommentarfeltet nedenfor! Og hvis du gerne vil have en gratis forudgående gennemgangskopi af mine nye kodebøger til børn, skal du tilmelde dig ProseTech-nyhedsbrevet.

Code Server-side-kode er den kode, der kører på en webserver, langt væk fra din computer. Koden på klientsiden er den kode, der kører lige i din browser. For eksempel kan du søge efter et produkt på Amazon og kodesiden på serversiden Amazons databaser, generere HTML med en liste over mulige matchninger og sende det til din browser.

² Klient-server-applikationer er en ældre applikationsmodel, der deler arbejdet i to dele. Den ene del kører på en stationær computer (klienten), der kommunikerer med den anden del (serveren) på en anden computer.