Argomenti di tendenza
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Vale la pena dedicare del tempo per imparare questi linguaggi di programmazione, anche se non li usi:
1/6
C
Il C è un passo rimosso dalla scrittura in assembly. Ti costringe a comprendere la differenza tra "stack" e "heap". Devi anche confrontarti con i puntatori — e allenare il tuo cervello a gestire l'indirezione ti aiuterà a comprendere problemi più complessi in seguito, poiché quasi ogni problema "difficile" deve essere modellato con un certo livello di indirezione.
2/6
Assembly
Imparare come funziona l'assembly è un prerequisito per imparare come funzionano i compilatori. A differenza del C, sei anche costretto a imparare quando stai usando un "registro" e svilupperai una comprensione più forte di quale codice sia performante e quale no. Penso che sapere programmare in assembly contribuisca probabilmente di più ad aiutarmi a imparare molto velocemente un nuovo blockchain. Li affronto con un modello mentale di "qualsiasi macchina virtuale/architettura CPU funzionante deve avere le seguenti caratteristiche, quindi dove posso trovarle?" Questo mi aiuta ad affrontare nuovi sistemi con un insieme di domande intelligenti da porre piuttosto che chiedermi cosa diavolo stia succedendo.
3/6
Rust
Rust è molto rigoroso riguardo ai riferimenti multipli allo stesso valore, qualcosa a cui altri linguaggi non ti costringono a pensare anche se può essere una fonte di veri bug.
Inoltre, il sistema di tipi di Rust è piuttosto ben concepito, quindi hai più scelte su come modellare il mondo reale (questo è un coltello a doppio taglio, ovviamente, poiché potresti finire per riflettere troppo su problemi semplici, quindi devi imparare a controllare il potere che ti dà). Qualcuno che impara a scrivere Rust idiomatico non sarà nemmeno lontano dall'imparare a scrivere programmazione funzionale.
4/6
Lisp
Se vuoi imparare la programmazione funzionale senza essere punito dal compilatore, questo è il modo migliore per farlo. Inoltre, avrai accesso al sistema di macro più potente esistente e potrai “vedere” la struttura ricorsiva in cose come JSON, XML e codice sorgente.
La struttura ricorsiva non significa scrivere codice ricorsivo. Piuttosto, ti costringe a pensare a come suddividere un grande problema in problemi più piccoli e a considerare prima i casi limite piuttosto che dopo.
Lisp ha anche pionierato: la raccolta dei rifiuti, le istruzioni if, le macro, le funzioni di prima classe e molte altre cose. Praticamente tutti i linguaggi moderni prendono in prestito qualche idea che Lisp ha inventato. Quindi, se conosci Lisp, puoi chiedere in modo intelligente “questo linguaggio ha un modo di fare X? Se no, come posso realizzarlo?”
Se sei ossessionato dall'essere “pratico” ti consiglio il dialetto Clojure, ma per imparare, Racket è abbastanza amichevole (se conosci uno, è estremamente facile imparare l'altro).
5/6
Haskell
Haskell probabilmente ha il sistema di tipi più rigoroso esistente (almeno tra i linguaggi che conosco). È ancora più rigoroso di Rust e ti costringe a pensare a come gestire operazioni che potrebbero fallire (come una chiamata di rete). È come lavorare con un programmatore senior estremamente pedante che coglie ogni errore che fai, anche cose che hanno una probabilità molto bassa di causare un bug. Sì, il compilatore è ancora più punitivo di Rust, ma il feedback costante su "non hai considerato la possibilità di ..." ti aiuterà a migliorare più velocemente. Se sei un ingegnere junior e vuoi un ingegnere senior a disposizione, programma in Haskell e la saggezza dei nostri antenati ti sarà conferita.
6/6
Come aiutano
L'apprendimento efficace avviene quando cerchi di risolvere un problema e ricevi immediatamente un feedback sul tuo lavoro — qualcosa che ciascuna di queste lingue fa bene a modo suo.
Ciascuna di queste lingue ti costringe a confrontarti con questioni che lingue come JavaScript o Python nascondono e ti forniscono un feedback diretto e immediato su ciò che hai sbagliato.
Ricorda: sia i problemi da junior che quelli da senior possono scrivere codice che "risolve" un problema — ma il codice da senior è molto più raffinato. Quella "raffinazione" deriva dall'addestramento — qualcosa che ciascuna di queste lingue ti offre gratuitamente.
7,49K
Principali
Ranking
Preferiti