Det er verdt tiden din å lære disse programmeringsspråkene, selv om du ikke bruker dem: 1/6 C C er på trinn fjernet fra skrivesamlingen. Det tvinger deg til å forstå forskjellen mellom "stabel" og "haug". Du må også floke deg sammen med pekere - og å trene hjernen din til å håndtere indirection vil hjelpe deg med å håndtere vanskeligere problemer senere, da nesten alle "vanskelige" problemer må modelleres med en viss grad av indirection.
2/6 Forsamling Å lære hvordan montering fungerer er en forutsetning for å lære hvordan kompilatorer fungerer. I motsetning til C, blir du også tvunget til å lære når du bruker et "register", og du vil utvikle en sterkere følelse for hva som er ytelseskode og hva som ikke er det. Jeg tror det å vite hvordan man programmerer i montering sannsynligvis bidrar mest til å hjelpe meg med å kunne plukke opp en ny blokkjede veldig raskt. Jeg nærmer meg dem med en mental modell av "enhver fungerende virtuell maskin/cpu-arkitektur må ha følgende funksjoner, så hvor kan jeg finne dem?" Dette hjelper meg å nærme meg nye systemer med et sett med intelligente spørsmål å stille i stedet for å lure på hva pokker som skjer.
3/6 Rust Rust er veldig streng når det gjelder flere referanser til samme verdi, noe andre språk ikke tvinger deg til å tenke på selv om det kan være en kilde til virkelige feil. Videre er Rust-typesystemet ganske gjennomtenkt, så du har flere valg om hvordan du modellerer den virkelige verden (dette er selvfølgelig et tveegget sverd, da du kan ende opp med å overtenke enkle problemer, så du må lære å kontrollere kraften det gir deg). Noen som lærer å skrive idiomatisk Rust vil heller ikke være langt unna å lære å skrive funksjonell programmering.
4/6 Lespe Hvis du vil lære funksjonell programmering uten å bli straffet av kompilatoren, er dette den beste måten å gjøre det på. Videre vil du få eksponering for det kraftigste makrosystemet som finnes, og du vil "se" rekursiv struktur i ting som JSON, XML og kildekode. Rekursiv struktur betyr ikke å skrive rekursiv kode. Snarere tvinger det deg til å tenke på hvordan du kan bryte et stort problem inn i mindre problemer og tenke på hjørnetilfellene først heller enn senere. Lisp var også banebrytende: søppelinnsamling, if-utsagn, makroer, førsteklasses funksjoner og mange andre ting. Stort sett alle moderne språk låner en idé som Lisp fant opp. Så hvis du kjenner Lisp, kan du intelligent spørre "har dette språket en måte å gjøre X på? Hvis ikke, hvordan oppnår jeg det?» Hvis du er besatt av å være "praktisk" anbefaler jeg Clojure-dialekten, men for bare å lære er Racket ganske vennlig (hvis du kjenner den ene, er det ekstremt lett å lære den andre).
5/6 Haskell Haskell har sannsynligvis det strengeste typesystemet som eksisterer (i hvert fall av de språkene jeg kan). Det er enda strengere enn Rust, og det tvinger deg til å tenke på hvordan du skal håndtere operasjoner som kan mislykkes (for eksempel et nettverksanrop). Det er som å jobbe med en ekstremt pedantisk seniorprogrammerer som fanger opp hver feil du gjør, til og med ting som har svært liten sjanse for å resultere i en feil. Ja, kompilatoren er enda mer straffende enn Rust, men den konstante tilbakemeldingen om "du vurderte ikke muligheten for ..." vil hjelpe deg med å bli dyktig raskere. Hvis du er junioringeniør og vil ha en senioringeniør på trykk, vil programmet i Haskell og visdommen til våre forfedre bli skjenket deg.
6/6 Slik hjelper de Effektiv læring skjer når du prøver å løse et problem og umiddelbart får tilbakemelding på arbeidet ditt – noe hvert av disse språkene gjør bra på sin egen måte. Hvert av disse språkene tvinger deg til å engasjere deg i problemer som språk som JavaScript eller Python feier under teppet og gir deg direkte og umiddelbar tilbakemelding på hva du gjorde galt. Husk: både junior- og seniorproblemer kan skrive kode som "løser" et problem - men seniorkoden er mye mer raffinert. Denne "raffineringen" kommer fra trening - noe hvert av disse språkene gir deg gratis.
9,25K