Hvilket programmeringsspråk bør du lære først i 2020? ʇdıɹɔsɐʌɐɾ: ɹǝʍsuɐ

De fleste menneskers reise mot å lære å programmere starter med et enkelt Google-søk sent på kvelden.

Vanligvis er det noe som "Lær ______"

Men hvordan bestemmer de hvilket språk de skal søke etter?

“De tuller alltid med Java i Silicon Valley. Jeg antar at jeg burde lære det. ”

Eller:

“Haskell. Så varmt akkurat nå. Haskell. ”

Eller:

"That Go gopher er bare så gosh-darn søt."

Og så er det resten av oss. Vi vil sannsynligvis søke etter noe som:

"Hvilket programmeringsspråk skal jeg lære først?"

Få spørsmål blir så ofte stilt at de får full infografisk behandling. Men dette er en av dem:

Å bestemme seg for ditt første programmeringsspråk kan være en morsom prosess - som en av de “Hvilken Quentin Tarantino-karakter er du?” personlighetsquizzer.

Men før du stikker av for å lære Ruby fordi du likte å leke med Play-Doh som barn, la meg minne deg på: innsatsen er ganske høy her.

Det vil ta deg hundrevis av timer med praksis å bli enda eksternt kompetent med ditt første programmeringsspråk.

Så du bør vurdere følgende faktorer:

  • arbeidsmarkedet for språket
  • de langsiktige utsiktene for språket
  • hvor lett språket er å lære
  • hvilke prosjekter du kan bygge mens du lærer (og dele med venner slik at du kan holde deg motivert)

Hvert år bringer nye programmeringsspråk, og med dem nye akademiske artikler. Og nye web-tegneserier.

Alvor. Ta en titt på denne perlen fra forrige måned:

Når det gjelder å velge et første programmeringsspråk, mangler det ikke på alternativer. For å begrense det litt, her er de vanligste Google-søkene relatert til læringsprogrammering de siste 12 årene:

Java har hatt sine oppturer og nedturer.

Python har gradvis steget til å bli det mest populære valget.

Men gjemt bort under disse er den lille motoren som kunne, sakte å velge i popularitet de siste årene. Og den motoren er JavaScript.

Før jeg snakker om disse programmeringsspråkene, la meg avklare:

  • Jeg argumenterer ikke for at noe språk er objektivt bedre enn noe annet
  • Jeg er enig i at utviklere etter hvert bør lære mer enn ett språk
  • Jeg argumenterer for at de først skal lære ett språk godt. Og - som du sikkert kan gjette fra den opp-ned-teksten i overskriften min - det språket skal være JavaScript.

La oss sette i gang ting ved å utforske hvordan programmering for tiden undervises i skolen.

Datavitenskap 101

Universiteter har tradisjonelt undervist i programmering under paraplyen informatikk, som i seg selv ofte blir sett på som en utvidelse av matematikk, eller tilknytning til en elektroteknisk grad.

Selvfølgelig, som du kanskje har hørt nå:

"Informatikkutdanning kan ikke gjøre noen til en ekspertprogrammerer mer enn å studere børster, og pigment kan gjøre noen til en ekspertmaler." - Eric S. Raymond

Fra og med 2016 behandler mange universiteter fortsatt programmering som om det er informatikk, og datavitenskap som om det er matematikk.

Som et resultat fokuserer mange innledende programmeringskurs på lavnivå-av-abstraksjonsspråk som C, eller matematisk-fokuserte språk som MATLAB.

Og avdelingsledere holder generelt kurset, og peker på årlige ledertavler for programmeringsspråk som TIOBE-indeksen, eller denne fra IEEE:

De fleste av disse topplistene ser nesten identiske ut som de var for 10 år siden.

Men endring skjer. Selv i akademia.

I 2014 gikk Python over Java som det mest populære undervisningsspråket på de beste amerikanske datavitenskapsprogrammene.

Og enda en endring er bundet til ... til slutt ... skje.

For hvis du ser på språkene som faktisk brukes av arbeidsstyrken, tegner det et helt annet bilde:

Mer enn halvparten av alle utviklere bruker JavaScript. Det er viktig for front-end webutvikling og stadig mer relevant for back-end utvikling. Og den utvider seg raskt til områder som spillutvikling og tingenes internett.

Jobbinnlegg nevner også JavaScript mer enn noe annet programmeringsspråk enn Java:

Det er ingen tilfeldighet at vi bygde læreplanen for open source-fellesskapet rundt JavaScript. I løpet av de siste to årene har mer enn 5000 mennesker brukt Free Code Camp for å få sin første utviklerjobb.

Jeg tar ikke til orde for JavaScript fordi jeg lærer det. Jeg underviser i JavaScript fordi det er den sikreste veien til en første utviklerjobb.

Men er JavaScript riktig for deg? Er det verdt å være ditt første programmeringsspråk? La oss utforske de faktorene jeg nevnte tidligere.

Faktor nr. 1: Jobbmarkedet

Hvis du lærer å programmere utelukkende av intellektuell nysgjerrighet, kan du hoppe over denne faktoren. Men hvis du - som de aller fleste mennesker som lærer å programmere - vil bruke denne ferdigheten til å få jobb, er dette en viktig faktor.

Som jeg nevnte tidligere, blir Java nevnt i flere stillingsannonser enn noe annet programmeringsspråk. JavaScript er et nært sekund.

Men her er tingen om JavaScript: selv om det har eksistert i 20 år, ble det nylig et seriøst verktøy som selskaper som Netflix, Walmart og PayPal ville bygge hele applikasjoner rundt.

Som et resultat ansetter mange selskaper JavaScript-utviklere, men det er bare ikke så mange på jobbmarkedet.

Det er 2,7 Java-utviklere som konkurrerer om hver åpne Java-posisjon. Konkurransen om PHP- og iOS-jobber er like hard.

Men for hver åpen JavaScript-posisjon er det bare 0,6 JavaScript-utviklere. Det er veldig mye et selgermarked for utviklere med JavaScript-ferdigheter.

Faktor nr. 2: De langsiktige utsiktene

Det gjennomsnittlige JavaScript-prosjektet mottar dobbelt så mange trekkforespørsler som det gjennomsnittlige Java-, Python- eller Ruby-prosjektet. Og på toppen av dette vokser JavaScript raskere enn noe annet populært språk.

JavaScript-økosystemet drar også fordel av en stor investering av penger og ingeniørtalent fra selskaper som Google, Microsoft, Facebook og Netflix.

For eksempel har TypeScript (et statisk skrevet supersett av JavaScript) mer enn 100 open source-bidragsytere, hvorav mange er Microsoft- og Google-ansatte som får betalt for å jobbe med det.

Denne typen samarbeid mellom selskaper er vanskeligere å finne med Java. Oracle - som effektivt eier Java gjennom oppkjøpet av Sun Microsystems - saksøker ofte selskaper som prøver å utvide det.

Faktor # 3: Vanskeligheter med å lære

De fleste programmerere er enige i at skriptspråk på høyt nivå er relativt enkle å lære. JavaScript faller inn i denne kategorien, sammen med Python og Ruby.

Selv om universitetene fremdeles underviser i språk som Java og C ++ som førstespråk, er de betydelig vanskeligere å lære.

Faktor nr. 4: Prosjekter du kan bygge med den

Det er her JavaScript virkelig skinner. JavaScript kjører på alle enheter som har en nettleser, akkurat der i nettleseren. Du kan i utgangspunktet bygge hva som helst med JavaScript, og dele det hvor som helst.

På grunn av JavaScript er allestedsnærværende, grunnla Stack Overflow medstifter Jeff Atwood sin nå berømte lov:

"Enhver applikasjon som kan skrives i JavaScript, vil etter hvert bli skrevet i JavaScript."

Og for hver måned som går, holder Atwoods lov sterk.

Java lovet en gang å kjøre overalt også. Du husker kanskje Java Applets. Oracle drepte dem offisielt av tidligere i år.

Python lider av omtrent de samme problemene:

“Hvordan kan jeg gi dette spillet jeg laget til vennen min? Enda bedre, er det en måte å legge dette på telefonen min slik at jeg kan vise det til barna på skolen uten at de trenger å installere det? Um. ” - James Hague i Retirement Python as a Teaching Language

Derimot er det noen apper som medlemmer av vårt open source-fellesskap bygde i nettleserne sine på CodePen. Du kan klikke deg gjennom og bruke disse rett i nettleseren din:

Lær ett språk godt. Lær deretter en annen.

Hvis du fortsetter å hoppe fra språk til språk, kommer du ikke langt.

For å komme utover det grunnleggende, må du lære ditt første språk godt. Da blir andrespråket ditt mye, mye lettere.

Derfra kan du forgrene deg og bli en mer avrundet utvikler ved å lære mange språk:

  • C er en fin måte å lære hvordan datamaskiner faktisk fungerer når det gjelder minneadministrasjon, og er nyttig i høyytelses databehandling
  • C ++ er flott for spillutvikling.
  • Python er fantastisk for vitenskap og statistikk.
  • Java er viktig hvis du vil jobbe i store teknologibedrifter.

Men lær JavaScript først.

OK, nå skal jeg prøve det umulige - jeg skal prøve å forutse innvendinger fra kommentarfeltet.

Innvending nr. 1: Men er ikke JavaScript tregt?

JavaScript er - for de fleste praktiske formål - like raskt som språk med høy ytelse.

JavaScript (Node.js) er størrelsesordener raskere enn Python, Ruby og PHP.

Det er også nesten like raskt som høytytende språk som C ++, Java og Go.

Her er resultatene av den mest omfattende ferske referanseindeksen på tvers av språk:

Innvending nr. 2: Men JavaScript er ikke statisk skrevet

Som Python og Ruby, er JavaScript dynamisk skrevet, noe som er praktisk. Men du kan komme i trøbbel. Her har jeg tenkt exampleArrayå være en matrise. Jeg setter verdiene og sjekker deretter lengden - det vil si antall elementer den inneholder.

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2

Men så tilordner jeg det ved en feiltagelse å være en streng.

exampleArray = “text” -> “text” exampleArray.length -> 4

Denne typen feil skjer hele tiden på dynamisk typede språk. De fleste utviklere setter bare sjekker på plass for å forhindre dem, og skriver tester deretter.

Hvis du absolutt må ha statisk skriving på ditt første programmeringsspråk, anbefaler jeg deg å lære JavaScript først. Deretter kan du raskt hente TypeScript.

"Typescript har en læringskurve, men hvis du allerede kjenner JavaScript, vil det være jevnt." - Alex Ewerlöf på TypeScript

Innvending # 3: Men jeg vil virkelig lage en mobilapp

Jeg anbefaler fortsatt å lære JavaScript først.

  1. JavaScript har flere verktøy for å lage innfødte mobilapper, for eksempel Angular Cordova og React Native.
  2. For at mobilappen din faktisk skal gjøre noe interessant, vil det trolig trenge en skikkelig back-end, som du vil bygge med et riktig rammeverk for webutvikling, som Node.js + Express.js.

Det er også verdt å påpeke at de beste dagene for mobilapputviklingen veldig godt kan ligge bak.

For det første, så mye som folk bruker mobilapper, er nesten halvparten av alle utviklerjobber nettutvikling. Sammenlign dette med bare 8% av jobbene som involverer utvikling av mobilapper.

Den store visjonen om "det er en app for det" har ikke skjedd. I stedet har de fleste smarttelefoneiere sluttet å laste ned nye apper.

Jada - de bruker fortsatt apper. For det meste Facebook, Google Maps og en håndfull andre. Som sådan er mye av etterspørselen etter mobilapputviklere konsentrert om noen få store arbeidsgivere.

Utsiktene for de mobile utviklingsjobbene er vanskelig å forutsi. Mange aspekter ved utvikling, vedlikehold og distribusjon av mobilapper er enklere med JavaScript. Så selskaper som Facebook og Google investerer mye i bedre verktøy for å bygge disse ved hjelp av JavaScript.

Fra og med 2016 er stort sett all utvikling nettutvikling. Alt berører den store plattformen som er "nettet". Og den neste bølgen med enheter som du vil snakke med rundt hjemmet ditt, og biler som henter barna dine fra skolen - de vil også bli sendt sammen via Internett.

Og det betyr JavaScript.

Innvending nr. 4: Er ikke JavaScript et leketøyspråk som ble skrevet på 10 dager?

JavaScript har en quirky historie.

Du vil utvilsomt høre folk knekke vitser på bekostning av det.

Vel, folk elsker å hate på C ++ også. Og som JavaScript, har C ++ lyktes til tross for dette hatet, og nå er det stort sett overalt også.

Så hvis noen noen gang gir deg vanskelig for å lære JavaScript i stedet for ukens elitespråk, husk bare de berømte ordene til fyren som opprettet C ++:

"Det er bare to typer programmeringsspråk: disse menneskene tikker alltid og de ingen bruker." - Bjarne Stroustrup

Jeg skriver bare om programmering og teknologi. Hvis du følger meg på Twitter, vil jeg ikke kaste bort tiden din. ?