Últimamente he leído muchos hilos sobre lenguajes de programación funcionales (casi en el último año). Realmente me gustaría elegir uno y aprenderlo a fondo.
Último semestre [del curso], me han presentado el Esquema. Me encantó. Me encantó la extrema simplicidad de la sintaxis, el principio de homoiconicity , las macros ( higiénico y no higiénico), la n-aridad de los procedimientos, etc.
El problema con Scheme es que es un lenguaje académico. No creo que se use realmente en entornos de producción. Tampoco creo que sea particularmente bueno tenerlo en nuestro currículum. Por lo tanto, he estado buscando alternativas. Hay muchos de ellos y, de alguna manera, todos parecen tener un nivel de popularidad similar.
Algunas reflexiones sobre algunos otros lenguajes funcionales que ya he considerado:
- Clojure: suena bien porque puede acceder al mundo de Java, está orientado a la escalabilidad y la concurrencia, pero ¿no está el mundo de Java en una situación límite en este momento? Ya conozco Java bastante bien, pero ¿sería prudente agregar aún más energía en función de la JVM?
- Haskell: parece un lenguaje muy apreciado, pero por lo que he leído, también es más un lenguaje académico.
- Lisp: Ha existido desde siempre. Parece tener la mayor parte de lo que me gusta de Scheme. Tiene una gran comunidad. Por lo que [creo que] sé, es probablemente el lenguaje de programación funcional más utilizado en la industria (?).
- F #: Realmente no lo consideré. No soy un gran fan de las cosas de MS. No tengo el dinero para pagar por sus softwares (podría tenerlos libres de alianzas universitarias, pero estoy más inclinado a ir con soluciones impulsadas por la comunidad). Aunque ... supongo que sería la mejor opción orientada a la carrera.
Esta noche, me inclino hacia Lisp. Hace una semana, era Haskell. Antes de eso fue Clojure. El año pasado, estaba haciendo un Esquema por diversión, no presionando por la razón que tú sabes. Ahora me gustaría ser serio (sobre aprender uno, sobre hacer proyectos reales con él, sobre cómo, eventualmente, trabajar profesionalmente con él). Mi problema es que tendría que aprenderlos en profundidad antes de poder elegir uno.