Vale la pena dedicar tiempo a aprender estos lenguajes de programación, incluso si no los usas: 1/6 C C está un paso alejado de escribir en ensamblador. Te obliga a entender la diferencia entre "pila" y "montón". También debes lidiar con punteros, y entrenar tu cerebro para manejar la indirección te ayudará a comprender problemas más difíciles más adelante, ya que casi cada problema "difícil" debe ser modelado con algún nivel de indirección.
2/6 Ensamblador Aprender cómo funciona el ensamblador es un requisito previo para aprender cómo funcionan los compiladores. A diferencia de C, también te ves obligado a aprender cuándo estás utilizando un "registro" y desarrollarás un sentido más fuerte de qué es un código eficiente y qué no lo es. Creo que saber programar en ensamblador probablemente contribuye más a ayudarme a poder aprender una nueva blockchain muy rápido. Los abordo con un modelo mental de "cualquier máquina virtual/arquitectura de CPU funcional debe tener las siguientes características, ¿dónde puedo encontrarlas?" Esto me ayuda a abordar nuevos sistemas con un conjunto de preguntas inteligentes que hacer en lugar de preguntarme qué demonios está pasando.
3/6 Rust Rust es muy estricto en cuanto a las referencias múltiples al mismo valor, algo que otros lenguajes no te obligan a considerar, aunque puede ser una fuente de errores reales. Además, el sistema de tipos de Rust está bastante bien pensado, por lo que tienes más opciones sobre cómo modelar el mundo real (esto es, por supuesto, una espada de doble filo, ya que podrías terminar sobrepensando problemas simples, así que tienes que aprender a controlar el poder que te da). Alguien que aprende a escribir Rust idiomático también estará cerca de aprender a escribir programación funcional.
4/6 Lisp Si quieres aprender programación funcional sin ser castigado por el compilador, esta es la mejor manera de hacerlo. Además, tendrás exposición al sistema de macros más poderoso que existe y "verás" la estructura recursiva en cosas como JSON, XML y código fuente. La estructura recursiva no significa escribir código recursivo. Más bien, te obliga a pensar en cómo descomponer un gran problema en problemas más pequeños y a considerar los casos extremos primero en lugar de después. Lisp también fue pionero en: recolección de basura, sentencias if, macros, funciones de primera clase y muchas otras cosas. Prácticamente todos los lenguajes modernos toman prestada alguna idea que Lisp inventó. Así que si conoces Lisp, puedes preguntar inteligentemente "¿tiene este lenguaje una forma de hacer X? Si no, ¿cómo lo logro?" Si estás obsesionado con ser "práctico", te recomiendo el dialecto Clojure, pero para simplemente aprender, Racket es bastante amigable (si conoces uno, es extremadamente fácil aprender el otro).
5/6 Haskell Haskell probablemente tiene el sistema de tipos más estricto que existe (al menos de los lenguajes que conozco). Es incluso más estricto que Rust y te obliga a pensar en cómo manejar operaciones que podrían fallar (como una llamada a la red). Es como trabajar con un programador senior extremadamente pedante que detecta cada error que cometes, incluso cosas que tienen una probabilidad muy baja de resultar en un bug. Sí, el compilador es aún más punitivo que Rust, pero la retroalimentación constante sobre "no consideraste la posibilidad de ..." te ayudará a mejorar tus habilidades más rápido. Si eres un ingeniero junior y quieres tener un ingeniero senior a tu disposición, programa en Haskell y la sabiduría de nuestros ancestros será otorgada a ti.
6/6 Cómo ayudan El aprendizaje efectivo ocurre cuando intentas resolver un problema y recibes instantáneamente retroalimentación sobre tu trabajo, algo que cada uno de estos lenguajes hace bien a su manera. Cada uno de estos lenguajes te obliga a involucrarte con problemas que lenguajes como JavaScript o Python pasan por alto y te brindan retroalimentación directa e inmediata sobre lo que hiciste mal. Recuerda: tanto los problemas de nivel junior como los de nivel senior pueden escribir código que "resuelve" un problema, pero el código senior es mucho más refinado. Ese "refinamiento" proviene de la formación, algo que cada uno de estos lenguajes te ofrece de forma gratuita.
9,25K