Últimamente he leído muchos hilos sobre lenguajes de programación funcionales (de hecho, casi en el último año). Realmente me gustaría elegir uno y aprenderlo a fondo.
El último semestre [del curso], me presentaron a Scheme. Me encantó. Me encantó la extrema simplicidad de la sintaxis, el principio de homoiconicidad , las macros ( higiénicas y no higiénicas), 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. Entonces, he estado buscando alternativas. Hay muchos de ellos y de alguna manera todos parecen tener un nivel similar de popularidad.
Algunas reflexiones sobre otros lenguajes funcionales que he considerado todavía:
- Clojure: Suena genial porque puede acceder al mundo de Java, está orientado hacia la escalabilidad y la concurrencia, pero ¿no está el mundo de Java al borde en este momento? Ya conozco Java bastante bien, pero ¿sería prudente agregar aún más energía dependiendo de la JVM?
- Haskell: Parece un idioma 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ía 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ático de las cosas de la EM. No tengo el dinero para pagar sus softwares (podría liberarlos de las alianzas universitarias, pero estoy más inclinado a buscar soluciones impulsadas por la comunidad). Aunque ... supongo que sería la mejor opción orientada a la carrera.
Esta noche, me estoy inclinando hacia Lisp. Hace una semana, fue Haskell. Antes de eso era Clojure. El año pasado, estaba haciendo un esquema para divertirme, no presionarlo por la razón que sabes. Ahora me gustaría hablar en serio (sobre aprender uno, sobre hacer proyectos reales con él, sobre quizás eventualmente trabajar profesionalmente con él). Mi problema es que necesitaría aprenderlos todos en profundidad antes de poder elegir uno.