Início > Programação > Linguagens funcionais, Lisp e Erlang

Linguagens funcionais, Lisp e Erlang

Entre um estudo em algoritmos, teoria dos grafos e complexidade computacional e tentativas de escrever o projeto final de curso, tento dedicar um tempinho para (tentar) estudar algumas outras coisas também.

Uma das mais recente são linguagens funcionais (a outra é poker mas esse fica para um outro post em um futuro breve, assim espero).

Durante a faculdade, minhas experiências com linguagens funcionais foram ou um tanto “meh…” ou uma decepção completa:

  • Quando fiz a disciplina de Linguagens de Programação, foi “ensinado” ML e Prolog. “Ensinado” porque foi uma coisa horrível… não foi mostrado como “pensar funcionalmente”, então os alunos acabavam retorcendo um programa imperativo até virar funcional ou coisa parecida e além disso, nunca foi apresentado nada muito além da linguagem, tipo recursos especiais, coisas bem legais que demonstravam porque seria legal programar naquilo. Esse foi o ponto decepção completa.
  • E em Inteligência Artificial, tivemos novamente Prolog. Dessa vez o professor ensinou muito melhor como “pensar funcionalmente” e o aprendizado foi bem mais interessante. Mas como a disciplina era IA, no final ficava parecendo que linguagens funcionais só serviam para coisas de IA (o que não é verdade, apesar de que as linguagens funcionais ainda parecem “apetecer” mais o pessoal de IA do que outros e de fato a muitos anos atrás essa relação de linguagem funcional com IA era bem forte, tanto que com o AI Winter as linguagens funcionais tomaram uma pancada)… e mesmo colegas que fizeram iniciação científica na parte de IA, não utilizavam linguagens funcionais pra nada (ou então utilizavam escondido para não revelar o truque secreto ou coisa do tipo)… então ficou aquele sentimento “meh…”

Mas recentemente eu combinei de comprar alguns livros com o Breno na Amazon… ele queria alguns livros de Perl e eu aproveitei para ver o que eu queria. Inicialmente iria comprar também alguns livros de Perl como o Effective Perl Programming e/ou o Modern Perl, mas enquanto estava escolhendo acabei lendo algumas coisas na internet que me instigaram a aprender mais sobre linguagens funcionais, principalmente Lisp.

Entre todas as coisas, 2 das principais foram:

LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.

Mas o “turning point” foi quando encontrei isso:

Sim, isso é um trailer de um livro sobre Lisp! (E um trailer bem nerd :P)

Sério, isso ganhou o meu respeito em taxas exponenciais (você não precisa entender, só acreditar). Então se você ainda não viu o trailer seja por preguiça, preconceito, mau humor, whatever… para de ser chato e vá assistir logo.

Tem como ficar melhor? Claro!

O site do livro ainda tem uma história em quadrinhos super legal… basta acessar o site e fazer scroll down até encontrar um monte de setas :). (Lembre-se de clicar nos textos em azul no meio dos balões de diálogos!)

Então decidi que compraria alguma coisa sobre linguagens funcionais, e depois decidi (com base nos preços dos livros) que eu escolheria por volta de 3 livros. Claro que um ou mais desses deveria ser sobre Lisp.

Então como eu estava muito afim de me divertir enquanto aprendia Lisp acabei escolhendo o “Land Of Lisp” e o “Let Over Lambda“.

O terceiro eu pensei inicialmente em pegar o “The Haskell Road to Logic, Maths and Programming“, mas por algum motivo resolvi pegar um sobre Erlang, o Erlang and OTP in Action.

Por enquanto estou lendo (ainda no início) do Land of Lisp… e estou conseguindo já arranhar um pouco de Lisp e tal. O overflow de parênteses fazem sentido agora :D

Agora… se me perguntarem porque de fato resolvi aprender essas linguagens funcionais… não faço a mínima idéia. Deve ser pelo mesmo motivo que comecei a usar Linux quando eu tinha… 12~13 anos (eu acho, pois estou velho… já faz muito tempo): Ninguém que eu conhecia usava isso. Ou a coisa é muito ruim ou então só um seleto grupo de pessoas inteligentes aprendeu de fato e usa. E como sou uma pessoa legal, geralmente dou um voto de confiança pra coisa e vou na segunda opção :)

Após isso ainda tenho vontade de aprender Haskell, Scala e Clojure e depois comprar um ou dois livros sobre algoritmos em linguagens funcionais.

Vamos ver se essa coisa toda vai te fato melhorar minha percepção sobre programação, ou se o texto do Eric Raymond era papo furado ;).

PS: No final das contas eu acabei “ganhando” uma cópia do Effective Perl Programming da Amazon, mais sobre isso em outro futuro post em breve (sim, além do post sobre poker).

PPS: Enquanto buscava os links para adicionar ao blog, encontrei outros 2 textos bem bacanas sobre Lisp e linguagens funcionais: [1] e [2].

  1. Nenhum comentário ainda.
  1. abril 3, 2011 às 8:55 pm
  2. agosto 21, 2011 às 6:28 pm

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: