¿Cuál sería un buen primer proyecto de programación funcional?
Estoy buscando terminar con una explosión en mi proyecto de licenciatura y quiero terminarlo con un proyecto de programación funcional. No lo estudiamos en la escuela, pero se nos anima a tratar de aprender cosas nuevas nosotros mismos, y pensé que aprender un nuevo paradigma no solo un nuevo idioma sería un gran ejercicio para mí, y probablemente algo interesante para que los maestros también lo vean. .
El problema es que quiero comenzar un poco antes de tiempo en mi proyecto para aprovechar las vacaciones de verano y comprender mejor la programación funcional y familiarizarme con un idioma.
¿Cuál diría que sería un proyecto de buenas prácticas que es un poco desafiante, pero que también me permite aprender el lenguaje, el paradigma, etc. Y luego, ¿cuál pensaría que sería un buen proyecto (uno más avanzado) para mi proyecto de licenciatura?
También se agradecerán las sugerencias sobre el mejor lenguaje para comenzar al ingresar a la programación funcional.
Respuestas:
En general, es más fácil si opta por algo relativamente matemático o lógico: los lenguajes de programación funcionales generalmente son adecuados para aplicaciones que representan alguna forma de transformación de una entrada dada a una salida.
Algunas ideas, en un orden aproximado de dificultad:
Algoritmos genéticos: escriba un programa que desarrolle soluciones para una tarea particular donde las soluciones se representan en un DSL simple. Me he divertido antes de construir pequeños bots que buscan comida en una cuadrícula 2D y desarrollan diferentes tipos de estrategias
Combinadores de análisis: cree una biblioteca de combinador de analizador que le permita construir un analizador para un lenguaje arbitrario utilizando funciones de orden superior.
Si realmente quieres un desafío, puedes intentar escribir un juego de computadora ... ten en cuenta que esta es una tarea difícil ya que los juegos tienen una gran cantidad de estado mutable que puede ser difícil de manejar en un estilo de programación funcional. Espere aprender más de lo que siempre quiso saber sobre mónadas, etc.
Recomendaría Clojure como un lenguaje funcional pragmático. Lo he estado usando durante unos 18 meses y estoy muy contento con la elección. Las razones principales son:
Puede probar los conceptos básicos muy fácilmente con:
fuente
Antes de comenzar a pensar en proyectos específicos, comience por aprender los conceptos básicos de la programación funcional para que pueda tener una buena idea de los tipos de proyectos que serían adecuados.
El mejor lugar para comenzar es probablemente La estructura e interpretación de los programas informáticos (SICP), que se basa en el dialecto del esquema de Lisp. Este es un texto clásico de CS, y el texto completo está disponible en línea (enlace proporcionado).
Si quieres ponerte elegante y usar un lenguaje funcional más moderno dirigido a la JVM, echa un vistazo a Clojure. Incluso hay una versión adaptada de SICP específicamente para Clojure .
Al repasar el texto del SICP, tendrá una idea de por qué la programación funcional es tan adecuada para ciertos tipos de tareas, y los ejercicios pueden inspirar un proyecto completo. Si opta por la ruta Clojure y desea examinar algunos proyectos existentes, hay algunos enlaces buenos aquí .
fuente
Análisis cuantitativo
Si considera que las finanzas son algo interesantes, hacer algunas cosas cuantiosas con la programación funcional es una buena combinación, ya que es muy algorítmico. Estoy hablando de la teoría de la cartera y cosas como las tasas de sharpe y sortino, etc. Haga una aplicación que analice los rendimientos de un fondo y proporcione diferentes estadísticas, diagramas, etc.
Recomendaría F # solo porque creo que es un lenguaje funcional fácil para comenzar, tiene buenas herramientas y un buen marco que lo respalda. Otras alternativas son lisp y clojure, pero son un poco más difíciles de aprender.
fuente
Para empezar, podría intentar implementar un pequeño juego de blackjack en F #. Este es un proyecto de tarea asignado durante este breve video tutorial . La solución también se proporciona en la red (y en uno de los videos).
fuente
Podría escribir un intérprete para esquema o lisp con OCaml.
fuente
¿En qué lenguaje funcional estabas pensando? Cada uno tiene características diferentes. El único idioma que tuvo el mayor impacto en mí fue Haskell y sugeriría que hicieras lo mismo.
fuente
También podría contribuir a algún proyecto de código abierto.
Por ejemplo, en el proyecto de lenguaje de programación Frege , hay mucho trabajo por hacer. Por ejemplo, podría importar portar bibliotecas Haskell base. Esto te haría una especie de experto en Haskell mientras trabajas en ello.
fuente