En el capítulo uno de "El programador pragmático", el primer objetivo de aprendizaje es:
Aprenda al menos un nuevo idioma cada año. Diferentes idiomas resuelven los mismos problemas de diferentes maneras. Al aprender varios enfoques diferentes, puede ayudar a ampliar su pensamiento y evitar ser golpeado en una rutina. [...]
Para lograr esto a lo largo de una carrera, es probable que la lista de idiomas sea bastante larga (especialmente si no desea "progresar" en la gestión). Claramente, la educación de un programador (o cualquier forma) lo ayudará a comenzar con un núcleo de lenguajes comercialmente útiles (la lista habitual de la publicación de trabajos: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, .. .). Además, es probable que un programa de aprendizaje formal o informal haya cubierto enfoques funcionales (a través de algo como Haskell, LISP o un lenguaje derivado de ML)
Pero una vez que se aprende un subconjunto razonable de esa lista, ¿qué sigue y por qué ?
fuente
Respuestas:
Hazlo interesante y pasa cada año escribiendo un intérprete o compilador para tu propio lenguaje de programación que llene un nicho para el que nunca has usado un lenguaje de programación. Cada año, escriba su próximo compilador / intérprete usando el idioma que escribió el año anterior.
fuente
Debe maximizar la "relevancia marginal", es decir, aventurarse siempre en nuevas áreas en las que aún no es fuerte. Varíe tanto los lenguajes de programación como los conceptos . Si no conoce ningún lenguaje orientado a objetos, pruebe Java y un marco de alta abstracción como Hibernate. Luego escriba algunas cosas de administración de sistemas en un lenguaje de script como Python o Perl. Luego, obtenga algunas habilidades de bajo nivel en C o C ++, escribiendo código de servidor multiproceso de alto rendimiento. Si no conoce la programación funcional, pruebe Haskell con algunos problemas de teoría de gráficos, como resolver el Solitario Peg , etc. Es muy factible hacerlo para que todo lo que aprenda tenga un valor inmediato en el mercado, hasta que llegue a cosas eruditas o especiales. como seguridad de capacidad de objeto ,Prolog o VHDL .
Buen ejercicio por cierto! Esto le enseñará a pensar lateralmente y visualizar problemas en términos independientes del lenguaje, en lugar de depender de muy pocas técnicas específicas de la plataforma. Por ejemplo, una vez que domine las similitudes y diferencias en el envío de métodos virtuales entre C ++ y Python, prácticamente lo "obtendrá" al instante para cualquier otro lenguaje.
fuente
No vale la pena conocer un lenguaje que no afecte su forma de pensar sobre la programación. - Alan Perlis
Como algunas de las otras respuestas han mencionado, si está aprendiendo un nuevo idioma por año, ¿por qué? es expandir tus capacidades como programador. ¿El como? es mediante el aprendizaje de idiomas con paradigmas distintos de los que ya conoce, y hacer un balance de los paradigmas que ya conoce determina qué idioma aprender a continuación.
¿Cuáles son estos paradigmas? El libro avanzado Conceptos, técnicas y modelos de programación de computadoras proporciona una excelente visión general con un mapa gráfico .
Por lo tanto, si solo conoce lenguajes imperativos tipo C, entonces aprender Scheme / Lisp es extremadamente útil. Si ya conoce lenguajes imperativos y funcionales, aprender Prolog será útil, etc.
Un libro reciente que intenta enseñar múltiples idiomas y paradigmas es Seven Languages in Seven Weeks . Por supuesto, no hablará con fluidez cada idioma después de una semana de estudio, pero parece proporcionar una perspectiva de paradigma múltiple accesible y orientada al profesional.
Cuando asimilas otro paradigma, es realmente un momento Zen; pasar de la programación imperativa a la funcional me hizo ver el mundo de la informática desde una perspectiva completamente nueva. ¡Feliz aprendizaje!
fuente
C - como lo esencial, "subyace a todo", lenguaje de programación de sistemas
Lisp (Scheme): el extraño pero increíblemente poderoso lenguaje ur que los grandes hackers creen que define genial
Smalltalk - porque esto es lo que OO estaba destinado a ser
Erlang (u otro lenguaje de actores) para entender a los actores
Haskell - para entender las mónadas
Javascript: porque está en todas partes y es esencial para crear scripts en el navegador
Uno de Python / Ruby / Perl (pero realmente no importa cuál), para que sepa cómo se siente un lenguaje de script popular, moderno y de alto nivel con un buen soporte de biblioteca
SQL: para que pueda hablar con bases de datos relacionales
Prólogo: porque aún necesitas volar tu mente
fuente
fuente
1) Prólogo: es completamente diferente a todos los idiomas imperativos que ha estado utilizando hasta ahora, y cambiará su forma de pensar acerca de los problemas.
2) Lisp: sin él, bien podrías estar usando Vi
3) Erlang: De nuevo, es completamente diferente, además, parece bastante de moda.
4) Algo de Turing Tarpit (por ejemplo, Brainfuck), y probablemente escriba un compilador o un intérprete para ello: no se me ocurre una razón para hacerlo, pero parece una buena idea.
fuente
Además de los que enumeraste,
Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Objective C.
fuente
Si bien estoy de acuerdo en que es bueno aprender nuevos idiomas (e incluso imprescindible a través de una larga carrera), creo que uno por año es demasiado pasado los primeros cinco o diez años. Lo que preferiría ver es a alguien con este nivel de experiencia aprendiendo cosas nuevas sobre los idiomas que ya conocen. En algún momento necesitas profundidad y amplitud de conocimiento. Entonces puedes escribir una construcción If en 12 idiomas, gran whoop. Prefiero ver a alguien que realmente profundice y se convierta en experto en al menos una cosa. Y luego los próximos años se convierten en expertos en otra cosa. Durante una carrera de más de 30 años, quiero que alguien tenga un conocimiento profundo, no solo lo básico en muchas cosas.
fuente