Warto poświęcić czas na naukę tych języków programowania, nawet jeśli ich nie używasz: 1/6 C C jest o krok bliżej do pisania w asemblerze. Zmusza cię do zrozumienia różnicy między „stosem” a „strefą”. Musisz również zmierzyć się z wskaźnikami — a trening mózgu w obsłudze pośrednictwa pomoże ci zrozumieć trudniejsze problemy później, ponieważ niemal każdy „trudny” problem musi być modelowany z pewnym poziomem pośrednictwa.
2/6 Assembly Nauka, jak działa asembler, jest warunkiem wstępnym do nauki, jak działają kompilatory. W przeciwieństwie do C, jesteś również zmuszony do nauki, kiedy używasz "rejestru" i rozwiniesz silniejsze poczucie, co jest wydajnym kodem, a co nie. Uważam, że znajomość programowania w asemblerze prawdopodobnie najbardziej przyczynia się do tego, że mogę bardzo szybko przyswajać nową blockchain. Podchodzę do nich z mentalnym modelem "każda działająca maszyna wirtualna/architektura CPU musi mieć następujące cechy, więc gdzie mogę je znaleźć?" To pomaga mi podchodzić do nowych systemów z zestawem inteligentnych pytań, które mogę zadać, zamiast zastanawiać się, co się dzieje.
3/6 Rust Rust jest bardzo rygorystyczny w kwestii wielu odniesień do tej samej wartości, co jest czymś, o czym inne języki nie zmuszają cię do myślenia, mimo że może to być źródłem prawdziwych błędów. Ponadto, system typów w Rust jest dość dobrze przemyślany, więc masz więcej możliwości modelowania rzeczywistego świata (to oczywiście miecz obosieczny, ponieważ możesz skończyć na nadmiernym myśleniu o prostych problemach, więc musisz nauczyć się, jak kontrolować moc, którą ci daje). Ktoś, kto nauczy się pisać idiomatyczny Rust, nie będzie również daleko od nauki pisania programowania funkcyjnego.
4/6 Lisp Jeśli chcesz nauczyć się programowania funkcyjnego bez karania przez kompilator, to jest najlepszy sposób, aby to zrobić. Ponadto, uzyskasz dostęp do najpotężniejszego systemu makr, jaki istnieje, i „zobaczysz” struktury rekurencyjne w takich rzeczach jak JSON, XML i kod źródłowy. Struktura rekurencyjna nie oznacza pisania kodu rekurencyjnego. Raczej zmusza cię do myślenia o tym, jak podzielić duży problem na mniejsze problemy i myślenia o przypadkach brzegowych najpierw, a nie później. Lisp również wprowadził: zbieranie śmieci, instrukcje if, makra, funkcje pierwszej klasy i wiele innych rzeczy. Praktycznie wszystkie nowoczesne języki pożyczają jakieś pomysły, które wynalazł Lisp. Więc jeśli znasz Lisp, możesz inteligentnie zapytać: „czy ten język ma sposób na zrobienie X? Jeśli nie, jak to osiągnąć?” Jeśli jesteś obsesyjnie nastawiony na bycie „praktycznym”, polecam dialekt Clojure, ale do nauki, Racket jest dość przyjazny (jeśli znasz jeden, to niezwykle łatwo nauczyć się drugiego).
5/6 Haskell Haskell prawdopodobnie ma najsurowszy system typów, jaki istnieje (przynajmniej spośród języków, które znam). Jest nawet surowszy niż Rust i zmusza cię do myślenia o tym, jak obsługiwać operacje, które mogą się nie powieść (takie jak wywołanie sieciowe). To jak praca z niezwykle pedantycznym starszym programistą, który wychwytuje każdy twój błąd, nawet te, które mają bardzo małe szanse na spowodowanie błędu. Tak, kompilator jest jeszcze bardziej surowy niż Rust, ale stała informacja zwrotna o "nie wziąłeś pod uwagę możliwości ..." pomoże ci szybciej zdobywać umiejętności. Jeśli jesteś młodszym inżynierem i chcesz mieć starszego inżyniera pod ręką, programuj w Haskellu, a mądrość naszych przodków zostanie ci przekazana.
6/6 Jak pomagają Skuteczne uczenie się zachodzi, gdy próbujesz rozwiązać problem i natychmiast otrzymujesz informację zwrotną na temat swojej pracy — coś, co każdy z tych języków robi dobrze na swój sposób. Każdy z tych języków zmusza cię do zaangażowania się w kwestie, które języki takie jak JavaScript czy Python zamiatają pod dywan, i daje ci bezpośrednią oraz natychmiastową informację zwrotną na temat tego, co zrobiłeś źle. Pamiętaj: zarówno juniorzy, jak i seniorzy mogą napisać kod, który "rozwiązuje" problem — ale kod seniora jest znacznie bardziej dopracowany. To "dopracowanie" pochodzi z treningu — coś, co każdy z tych języków daje ci za darmo.
9,25K