Creo que aprender muchos idiomas diferentes lo convertirá en un mejor programador, al igual que aprender muchos algoritmos diferentes lo hará mejor para resolver problemas.
– C o C ++ : si bien es posible que no lo necesite a diario, conocer un idioma de bajo nivel cambia su forma de pensar acerca de la memoria (aprenda C ++ si tiene más tiempo; de lo contrario, solo C)
– Lenguaje funcional (Haskell, OCaml, F #, pero no Scala) : casi todos los lenguajes tienen algunos aspectos funcionales … saber que estos te enseñarán cómo escribir código funcional y, lo que es más importante, te enseñarán la recursión.
– Mathematica / Matlab – algunos problemas son fáciles de resolver en lenguajes especializados
– Prólogo : la unificación es poderosa y se puede implementar en casi cualquier lenguaje para resolver problemas basados en la lógica
– Lisp (no importa cuál) – la sintaxis (o su falta) y las macros son una revelación.
– El lenguaje de scripting dinámico (ya sea Ruby o Python o Perl o Bash, no importa) – a veces solo necesitas hacer algo rápidamente