Ultimamente, tenho lido muitos tópicos sobre linguagens de programação funcional (quase no ano passado). Eu realmente gostaria de escolher um e aprendê-lo completamente.
No último semestre, fui apresentado ao Scheme. Eu amei. Adorei a extrema simplicidade de sintaxe, o princípio da homoiconicidade , as macros ( higiênicas e não higiênicas), a n-aridade de procedimentos etc.
O problema com o Scheme é que é uma linguagem acadêmica. Não acho que seja realmente usado em ambientes de produção. Também não acredito que seja particularmente bom ter em nosso currículo. Então, eu tenho procurado alternativas. Existem muitos deles e, de alguma forma, todos parecem ter um nível semelhante de popularidade.
Algumas reflexões sobre outras linguagens funcionais que já considerei:
- Clojure: Parece ótimo porque pode acessar o mundo Java, ele é orientado para a escalabilidade e simultaneidade, mas o mundo Java não está no limite agora? Eu já conheço Java muito bem, mas seria aconselhável adicionar ainda mais energia dependendo da JVM?
- Haskell: Parece uma linguagem muito apreciada, mas pelo que li, também é mais uma linguagem acadêmica.
- Lisp: Existe desde sempre. Parece ter o que mais gosto no Scheme. Tem uma grande comunidade. Pelo que eu [acho que sei], é provavelmente a linguagem de programação funcional mais usada na indústria (?).
- F #: Realmente não considerou isso. Eu não sou um grande fã de coisas de MS. Não tenho dinheiro para pagar por seus softwares (eu poderia tê-los livres de alianças universitárias, mas estou mais inclinado a usar soluções orientadas pela comunidade). Embora ... eu acho que seria a melhor escolha orientada para a carreira.
Hoje à noite, estou inclinado para Lisp. Há uma semana, era Haskell. Antes disso, era Clojure. No ano passado, eu estava fazendo algum esquema por diversão, sem insistir no motivo pelo qual você sabe. Agora eu gostaria de levar a sério (sobre aprender um, sobre fazer projetos reais com ele, sobre talvez trabalhar profissionalmente com ele). Meu problema é que eu precisaria aprendê-los todos em profundidade antes de poder escolher um.