O que seria um bom primeiro projeto de programação funcional?
Eu estou olhando para terminar com um estrondo no meu projeto de bacharel e quero terminar com um projeto de programação funcional. Nós não estudamos isso na escola, mas somos encorajados a tentar aprender coisas novas, e eu pensei que aprender um novo paradigma não apenas um novo idioma seria um ótimo exercício para mim, e provavelmente algo interessante para os professores também verem. .
O problema é que quero começar um pouco antes do tempo no meu projeto para aproveitar as férias de verão e entender melhor a programação funcional e me familiarizar com um idioma.
O que você diria que seria um projeto de boas práticas um pouco desafiador, mas também me permite aprender a linguagem, o paradigma etc. E então, o que você acha que seria um bom projeto (mais avançado) para o meu projeto de bacharel?
Sugestões para a melhor linguagem para começar ao entrar em programação funcional também seriam apreciadas.
Respostas:
Geralmente é mais fácil se você optar por algo relativamente matemático ou lógico - as linguagens de programação funcionais geralmente são adequadas para aplicativos que representam alguma forma de transformação de uma entrada para uma saída.
Algumas idéias, em ordem aproximada de dificuldade:
Algoritmos genéticos - escreva um programa que evolua soluções para uma tarefa específica em que as soluções são representadas em uma DSL simples. Eu me diverti antes de construir pequenos robôs que caçam comida em uma grade 2D e desenvolvem diferentes tipos de estratégias
Analisando combinadores - construa uma biblioteca combinadora de analisadores que permita construir um analisador para um idioma arbitrário usando funções de ordem superior.
Se você realmente quer um desafio, pode tentar escrever um jogo de computador ... esteja ciente de que esta é uma tarefa complicada, pois os jogos têm uma enorme quantidade de estados mutáveis que podem ser difíceis de gerenciar em um estilo de programação funcional. Espere aprender mais do que você sempre quis saber sobre mônadas, etc .....
Eu recomendaria o Clojure como uma linguagem funcional pragmática. Eu o uso há cerca de 18 meses e estou extremamente feliz com a escolha. Os principais motivos são:
Você pode experimentar o básico com muita facilidade com:
fonte
Antes de começar a pensar em projetos específicos, comece aprendendo os conceitos básicos de programação funcional para ter uma boa idéia dos tipos de projetos que seriam adequados.
O melhor lugar para começar é provavelmente a Estrutura e Interpretação de Programas de Computador (SICP), que é baseada no dialeto do esquema do Lisp. Este é um texto clássico do CS, e o texto completo está disponível online (link fornecido).
Se você quiser ser sofisticado e usar uma linguagem funcional mais moderna que seja direcionada à JVM, dê uma olhada no Clojure. Existe até uma versão adaptada do SICP especificamente para Clojure .
Analisando o texto do SICP, você terá uma idéia de por que a programação funcional é tão adequada a certos tipos de tarefas, e os exercícios podem inspirar um projeto completo. Se você optar por seguir a rota Clojure e quiser examinar alguns projetos existentes, existem alguns bons links aqui .
fonte
Análise quantitativa
Se você acha que as finanças são interessantes, fazer algumas coisas importantes com programação funcional é uma boa combinação, pois é muito algorítmico. Estou falando de teoria de portfólio e coisas como taxas de sharpe e sortino, etc. Crie um aplicativo que analise os retornos de um fundo e forneça estatísticas, diagramas etc.
Eu recomendaria o F # apenas porque acho que é uma linguagem funcional fácil de iniciar, possui boas ferramentas e uma boa estrutura para apoiá-lo. Outras alternativas são lisp e clojure, mas são um pouco mais difíceis de aprender.
fonte
Para começar, você pode tentar implementar um pequeno jogo de blackjack em F #. Este é um projeto de lição de casa atribuído durante este breve tutorial em vídeo . A solução também é fornecida na rede (e em um dos vídeos).
fonte
Você pode escrever um intérprete para o esquema ou lisp com o OCaml.
fonte
Em qual linguagem funcional você estava pensando. Cada um tem características diferentes. A única linguagem que causou maior impacto em mim foi Haskell e eu sugiro que você faça o mesmo.
fonte
Você também pode contribuir para algum projeto de código aberto.
Por exemplo, no projeto da linguagem de programação Frege , há muito trabalho a ser feito. Por exemplo, você pode se importar em portar bibliotecas Haskell básicas. Isso faria de você um especialista em Haskell enquanto trabalha nele.
fonte