it-swarm-es.com

Si uno va a aprender un nuevo lenguaje de programación cada año, ¿cuál debería ser la lista?

En el capítulo uno de "El programador pragmático" el primer objetivo de aprendizaje es:

Aprende 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 la 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é?

19
Richard

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.

19
alternative

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, intente Java y algún 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, adquiera 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 Peg Solitaire , etc. Es muy factible hacerlo para que todo lo que aprenda tenga un valor de mercado inmediato, hasta que llegue a cosas eruditas o de propósito especial como seguridad de capacidad de objeto , - Prólogo 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.

13
DomQ

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 descripció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 Siete idiomas en siete semanas . 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!

9
limist

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 sepas qué lenguaje de scripting popular, moderno y de alto nivel con buen soporte de la biblioteca se siente como

SQL: para que pueda hablar con bases de datos relacionales

Prólogo: porque aún necesitas volar tu mente

9
interstar
  • Go (nuevo lenguaje de programación a nivel de sistema con buen soporte para concurrencia y conceptos no tan tradicionales)
  • Lua (lenguaje de secuencias de comandos paradigmas simple, expresivo, extremadamente flexible y equilibrado imperativo, funcional y meta programación, permitiendo POO)
  • D (C/C++ done right)
  • Groovy (Expresividad y meta programación en Java mundo)
  • Eiffel (Diseño por contrato y un enfoque diferente de OOP)
  • Prolog (EL lenguaje de programación lógica)
4
Maniero

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, también 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.

2
Paul Butcher

Además de los que enumeraste,

Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Objective C.

1
grokus

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, en los próximos años, se convertirá en un experto 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.

1
HLGEM