¿Qué idiomas debo aprender que sean modernas, pero no necesariamente prácticas?

Todo depende de lo que llames práctico .

Si, en la práctica, te refieres a “ampliamente utilizado en TI” o “implementado fácilmente”, entonces hay un montón de lenguajes poco prácticos pero excelentes por ahí.

Si, en la práctica, te refieres a una buena adaptación al desarrollo de software, entonces argumentaría que no deberías pasar más de unos pocos días en tu vida aprendiéndolos. Hay suficientes buenos idiomas que no necesitas para aprender los realmente malos.

Ahora, ¿cuáles serían los idiomas interesantes, no ampliamente utilizados?

Coq

Coq le permite probar que su código es correcto. No lo pruebes a fondo, pero realmente lo demuestras con un 100% de certeza. Puede ser desalentador codificar en Coq, pero hay algunos conocimientos extraordinarios que se pueden obtener al aprenderlo. Una es que un programa es en realidad un tipo de prueba en sí misma.

El asistente de prueba de Coq

Factor

Factor es en realidad uno de los lenguajes más prácticos, con una de las mejores infraestructuras de desarrollo que he usado. ¡Su depurador, por ejemplo, te permite retroceder en el tiempo cuando pasas por un programa!

Factor es un lenguaje concatenativo muy moderno y activo, como Forth y Postscript. Es un paradigma muy adecuado para la programación “simple” (es decir, desarrollar software que no se ejecute en un sistema operativo, como BIOS).

Lenguaje de programación factorial

Raqueta

Racket es en realidad una implementación de Scheme en esteroides, lo que le brinda la investigación de PL en un IDE limpio. Te permite programar en una variedad de dialectos Lisp. También tiene un depurador muy interesante y conveniente.

En realidad, es un gran barco para jugar con los conceptos de diseño PL, ya que podría desarrollar sus propios dialectos para implementar un nuevo tipo de semántica.

El lenguaje de la raqueta

  • Pitón
  • Rubí
  • PHP

Esa es la sabiduría convencional, pero recomendaría Mozart / Oz.