Det är värt din tid att lära dig dessa programmeringsspråk, även om du inte använder dem: 1/6 C C är på steg bort från skrivsammansättningen. Det tvingar dig att förstå skillnaden mellan "stack" och "heap". Du måste också trassla med pekare - och att träna din hjärna att hantera indirekthet kommer att hjälpa dig att ta itu med svårare problem senare eftersom nästan varje "svårt" problem måste modelleras med en viss nivå av indirekthet.
2/6 Församling Att lära sig hur sammansättning fungerar är en förutsättning för att lära sig hur kompilatorer fungerar. Till skillnad från C tvingas du också lära dig när du använder ett "register" och du kommer att utveckla en starkare känsla för vad som är presterande kod och vad som inte är det. Jag tror att vetskapen om hur man programmerar vid montering förmodligen bidrar mest till att hjälpa mig att kunna plocka upp en ny blockkedja mycket snabbt. Jag närmar mig dem med en mental modell av "alla fungerande virtuella maskiner/cpu-arkitektur måste ha följande funktioner, så var kan jag hitta dem?" Detta hjälper mig att närma mig nya system med en uppsättning intelligenta frågor att ställa snarare än att undra vad i helsike som händer.
3/6 Rost Rust är väldigt strikt när det gäller flera referenser till samma värde, något som andra språk inte tvingar dig att tänka på även om det kan vara en källa till riktiga buggar. Dessutom är Rust-systemet ganska väl genomtänkt, så du har fler valmöjligheter om hur du ska modellera den verkliga världen (detta är naturligtvis ett tveeggat svärd eftersom du kan sluta tänka för mycket på enkla problem, så du måste lära dig att kontrollera den kraft det ger dig). Någon som lär sig att skriva idiomatisk Rust kommer inte heller att vara långt ifrån att lära sig att skriva funktionell programmering.
4/6 Läspa Om du vill lära dig funktionell programmering utan att bli straffad av kompilatorn är detta det bästa sättet att göra det. Dessutom kommer du att få exponering för det mest kraftfulla makrosystemet som finns och du kommer att "se" rekursiv struktur i saker som JSON, XML och källkod. Rekursiv struktur innebär inte att skriva rekursiv kod. Snarare tvingar det dig att tänka på hur du kan dela upp ett stort problem i mindre problem och att tänka på hörnfallen först snarare än senare. Lisp var också banbrytande: skräpinsamling, if-uttalanden, makron, förstklassiga funktioner och en hel del andra saker. I stort sett alla moderna språk lånar någon idé som Lisp uppfann. Så om du kan Lisp kan du på ett intelligent sätt fråga "har det här språket ett sätt att göra X? Om inte, hur åstadkommer jag det?" Om du är besatt av att vara "praktisk" rekommenderar jag Clojure-dialekten, men för att bara lära dig är Racket ganska vänlig (om du kan den ena är det extremt lätt att lära sig den andra).
5/6 Haskell Haskell har förmodligen det striktaste typsystemet som finns (i alla fall av de språk jag kan). Det är till och med strängare än Rust och det tvingar dig att tänka på hur du ska hantera operationer som kan misslyckas (till exempel ett nätverksanrop). Det är som att arbeta med en extremt pedantisk senior programmerare som fångar upp varje misstag du gör, även saker som har en mycket låg chans att resultera i en bugg. Ja, kompilatorn är ännu mer straffande än Rust, men den ständiga feedbacken om "du övervägde inte möjligheten att ..." kommer att hjälpa dig att bli bättre snabbare. Om du är en junioringenjör och vill ha en senior ingenjör på kranen, kommer program i Haskell och våra förfäders visdom att skänkas till dig.
6/6 Hur de hjälper till Effektiv inlärning sker när du försöker lösa ett problem och omedelbart får feedback på ditt arbete – något som vart och ett av dessa språk gör bra på sitt eget sätt. Vart och ett av dessa språk tvingar dig att engagera dig i problem som språk som JavaScript eller Python sopar under mattan och ger dig direkt och omedelbar feedback om vad du gjorde fel. Kom ihåg: både juniora och seniora problem kan skriva kod som "löser" ett problem – men seniorkoden är mycket mer förfinad. Denna "förfining" kommer från träning – något som vart och ett av dessa språk ger dig gratis.
9,26K