Há alguns dias atrás coloquei a seguinte pergunta no GUJ:
Sei que muitas faculdades lá fora ensinam linguagens funcionais de programação e fiquei curioso de fazer uma pequena enquete no GUJ. Perguntei:
- Você já ouviu falar ou já usou alguma linguagem funcional?
- Você aprendeu alguma linguagem funcional? Qual? Foi na faculdade? Qual faculdade?
- Se aprendeu alguma linguagem funcional, você acredita que conhecer uma linguagem funcional pode lhe dar alguma vantagem no futuro?
- Se aprendeu alguma linguagem funcional, você admite que no futuro haverá espaço para programadores em linguagens como erlang, links, scala ou outra qualquer do gênero?
Vale a pena ler as respostas uma a uma. Colocarei aqui minha impressão sobre esta pesquisa. No fim revelarei parte dos motivos que me levaram a fazê-la. Em outro post, abordarei um tema que deixará claro porque acho que há motivos imediatos para que a gente procure saber mais sobre linguagens funcionais.
Mas antes de falar sobre as respostas listarei algumas definições encontradas com ajuda do google:
Segundo http://cbbrowne.com/info/functional.html, programação funcional é um estilo de programar que enfatiza a avaliação de expressões ao invés da execução de comandos. As espressões nestas linguagens são formadas usando funções para combinar valores básicos. Uma linguagem funcional é uma linguagem que suporta e encoraja a programação no estilo funcional.
Acho que estas definições ainda não deixaram as coisas 100% claras mas o google está aí para resolver esta lacuna. Chega de definições e vamos aos finalmentes.
Não sei se o número de respostas permite tirar muitas conclusões porque apesar do tópico ter sido lido por quase 600 gujeiros, só 17 responderam.
O que consegui entender das respostas foi:
- Algumas faculdades ensinam algum tipo de linguagem funcional;
- Alguns desenvolvedores mais interessados já estudaram alguma linguagem funcional, mas não ficou claro com qual profundidade;
- Foi citado que a exposição a uma linguagem funcional torna mais fácil entender algumas novidades pois elas muitas vezes são oriundas de alguma linguagem funcional;
- A maioria não acredita que vá usar alguma linguagem funcional em sua vida profissional
O que eu posso dizer sem antecipar o assunto do meu próximo post?
Muitos esqueceram que já usam linguagens funcionais nas consultas SQL, nas planilhas, nas transformações XSLT e em muitas outras áreas. Ninguém se lembrou de que o conceito de generics do Java veio de uma extensão do Java chamada GJ. Esta é baseada em outra extensão do Java chamada pizza, que por sua vez incorpora princípios de linguagens funcionais e closures é um deles. Ah, acho que quase todo mundo no GUJ já ouviu falar em closures que é, mais um conceito do mundo das linguagens funcionais e que a gente vai usar com o Java 7.
E porque fiz esta pesquisa com nossos homens de Java?
- Porque neste modelo de programação, há muita pesquisa acadêmica que repercurte também em grandes empresas como a Microsoft, por exemplo. Devido a isto, há alguns indícios que estamos em meio a uma revolução no modo de escrever programas, com as linguagens pouco a pouco incorporando as facilidades das linguagens funcionais.
- Porque no Java serão incluídos alguns conceitos oriundos das linguagens funcionais já no Java 7 e possivelmente alguns outros nas versões subseqüentes. Apesar de que, no Java esta evolução será mais lenta do que nas linguagens dominadas pela Microsoft. O motivo do Java evoluir mais devagar é porque em casa que todo mundo manda ninguém tem razão. A vantagem da padronização feita em grupo do tipo JCP vira transtorno no momento de decidir rápido por mudanças mais radicais que o mercado pode exigir.
- Para entender conceitos novos como closures e continuations.
- Para estar apto a executar tarefas específicas programando em outras linguagens com mais facilidades de conviver com máquinas multiprocessadas como Scala ou erlang.
4 comentários:
Legal o post, fiquei curioso para ler o próximo, mas minha duvida mesmo é o porque do lambda como imagem ilustrativa.
Já fiz umas fórmulas monstruosas no Excel (sem VBA). De fato, quando vi Lisp rolou um Déjà Vu.
André
O lambda, além de enfeite, serve para lembrar que o chamado lambda calculus ou λ-calculus, é a base da maioria dos modelos de programação funcional.
mbda, além de enfeite, serve para lembrar que o chamado lambda calculus ou λ-calculus, é a base da maioria dos modelos de programação funcional.
Postar um comentário