Tópicos populares
#
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 a pena dedicar tempo a aprender estas linguagens de programação, mesmo que não as utilize:
1/6
C
C está um passo afastado de escrever em assembly. Obriga-o a entender a diferença entre "stack" e "heap". Você também deve lidar com ponteiros — e treinar seu cérebro para lidar com indireção ajudará você a compreender problemas mais difíceis mais tarde, uma vez que quase todo "problema difícil" deve ser modelado com algum nível de indireção.
2/6
Assembly
Aprender como funciona a assembly é um pré-requisito para aprender como funcionam os compiladores. Ao contrário do C, você também é forçado a aprender quando está usando um "registrador" e desenvolverá uma noção mais forte sobre o que é código performático e o que não é. Eu acho que saber programar em assembly provavelmente contribui mais para me ajudar a conseguir aprender uma nova blockchain muito rapidamente. Eu as abordo com um modelo mental de "qualquer máquina virtual/arquitetura de CPU funcional deve ter as seguintes características, então onde posso encontrá-las?" Isso me ajuda a abordar novos sistemas com um conjunto de perguntas inteligentes a fazer, em vez de me perguntar o que está acontecendo.
3/6
Rust
Rust é muito rigoroso em relação a múltiplas referências ao mesmo valor, algo que outras linguagens não o obrigam a pensar, mesmo que isso possa ser uma fonte de verdadeiros bugs.
Além disso, o sistema de tipos do Rust é bastante bem pensado, então você tem mais opções sobre como modelar o mundo real (isto é uma espada de dois gumes, claro, pois você pode acabar por pensar demais em problemas simples, então você precisa aprender a controlar o poder que ele lhe dá). Alguém que aprende a escrever Rust idiomático também não estará longe de aprender a escrever programação funcional.
4/6
Lisp
Se você quer aprender programação funcional sem ser punido pelo compilador, esta é a melhor maneira de fazê-lo. Além disso, você terá exposição ao sistema de macros mais poderoso que existe e você "verá" estruturas recursivas em coisas como JSON, XML e código-fonte.
Estrutura recursiva não significa escrever código recursivo. Em vez disso, força você a pensar sobre como dividir um grande problema em problemas menores e a considerar os casos extremos primeiro, em vez de depois.
Lisp também foi pioneiro em: coleta de lixo, instruções if, macros, funções de primeira classe e muitas outras coisas. Praticamente todas as linguagens modernas pegam alguma ideia que Lisp inventou. Então, se você conhece Lisp, pode perguntar inteligentemente "esta linguagem tem uma maneira de fazer X? Se não, como eu consigo isso?"
Se você está obcecado em ser "prático", recomendo o dialeto Clojure, mas para apenas aprender, Racket é bastante amigável (se você conhece um, é extremamente fácil aprender o outro).
5/6
Haskell
Haskell provavelmente tem o sistema de tipos mais rigoroso que existe (pelo menos entre as linguagens que conheço). É ainda mais rigoroso que Rust e força você a pensar sobre como lidar com operações que podem falhar (como uma chamada de rede). É como trabalhar com um programador sênior extremamente pedante que pega todos os erros que você comete, até mesmo coisas que têm uma chance muito baixa de resultar em um bug. Sim, o compilador é ainda mais punitivo que Rust, mas o feedback constante sobre "você não considerou a possibilidade de ..." ajudará você a desenvolver suas habilidades mais rapidamente. Se você é um engenheiro júnior e quer um engenheiro sênior à disposição, programe em Haskell e a sabedoria de nossos ancestrais será concedida a você.
6/6
Como eles ajudam
A aprendizagem eficaz acontece quando você tenta resolver um problema e recebe instantaneamente feedback sobre o seu trabalho — algo que cada uma dessas linguagens faz bem à sua maneira.
Cada uma dessas linguagens força você a se envolver com questões que linguagens como JavaScript ou Python varrem para debaixo do tapete e lhe dão feedback direto e imediato sobre o que você fez de errado.
Lembre-se: tanto problemas de nível júnior quanto sênior podem escrever código que "resolve" um problema — mas o código sênior é muito mais refinado. Esse "refinamento" vem do treinamento — algo que cada uma dessas linguagens oferece gratuitamente.
9,26K
Top
Classificação
Favoritos