Quel serait un bon premier projet de programmation fonctionnelle?
Je cherche à finir avec un coup sur mon projet de baccalauréat et je veux le terminer avec un projet de programmation fonctionnelle. Nous ne l'avons pas étudié à l'école mais nous sommes encouragés à essayer d'apprendre de nouvelles choses nous-mêmes, et j'ai pensé qu'apprendre un nouveau paradigme non seulement une nouvelle langue serait un excellent exercice pour moi, et probablement quelque chose d'intéressant pour les enseignants à voir aussi .
Le problème est que je veux commencer un peu à l'avance sur mon projet pour profiter des vacances d'été et mieux comprendre la programmation fonctionnelle et me familiariser avec une langue.
Que diriez-vous serait un projet de bonnes pratiques qui est un peu difficile, mais qui me permet également d'apprendre la langue, le paradigme, etc.
Des suggestions pour le meilleur langage pour commencer lors de la programmation fonctionnelle seraient également appréciées.
Réponses:
C'est généralement plus facile si vous optez pour quelque chose de relativement mathématique ou logique - les langages de programmation fonctionnels sont généralement bien adaptés aux applications qui représentent une certaine forme de transformation d'une entrée donnée à une sortie.
Quelques idées, en gros ordre de difficulté:
Algorithmes génétiques - écrire un programme qui fait évoluer les solutions vers une tâche particulière où les solutions sont représentées dans une simple DSL. Je me suis amusé avant de construire de petits bots qui chassent pour se nourrir dans une grille 2D et font évoluer différents types de stratégies
Analyseurs de combinateurs - créez une bibliothèque de combinateurs d'analyseurs qui vous permet de construire un analyseur pour un langage arbitraire à l'aide de fonctions d'ordre supérieur.
Si vous voulez vraiment un défi, vous pouvez essayer d'écrire un jeu informatique ... sachez que c'est une tâche délicate car les jeux ont une énorme quantité d'état mutable qui peut être difficile à gérer dans un style de programmation fonctionnel. Attendez-vous à en savoir plus que vous ne l'avez jamais voulu sur les monades, etc.
Je recommanderais Clojure comme langage fonctionnel pragmatique. Je l'utilise depuis environ 18 mois maintenant et je suis extrêmement satisfait du choix. Les raisons principales sont:
Vous pouvez essayer les bases très facilement avec:
la source
Avant de commencer à réfléchir à des projets spécifiques, commencez par apprendre les bases de la programmation fonctionnelle afin d'avoir une bonne idée des types de projets qui conviendraient le mieux.
Le meilleur endroit pour commencer est probablement la structure et l'interprétation des programmes informatiques (SICP), qui est basé sur le dialecte Scheme de Lisp. Il s'agit d'un texte CS classique, et le texte intégral est disponible en ligne (lien fourni).
Si vous voulez faire preuve de fantaisie et utiliser un langage fonctionnel plus moderne qui cible la JVM, jetez un œil à Clojure. Il existe même une version adaptée de SICP spécialement pour Clojure .
En parcourant le texte SICP, vous comprendrez pourquoi la programmation fonctionnelle est si bien adaptée à certains types de tâches, et les exercices peuvent inspirer un projet à part entière. Si vous choisissez de suivre la route Clojure et que vous souhaitez examiner certains projets existants, il existe de bons liens ici .
la source
Analyse quantitative
Si vous trouvez la finance quelque peu intéressante, faire des trucs quant avec la programmation fonctionnelle est un bon match car c'est très algorithmique. Je parle de la théorie du portefeuille et des choses comme les ratios sharpe et sortino, etc. Faites une application qui analyse les rendements d'un fonds et donne différentes statistiques, diagrammes, etc.
Je recommanderais F # uniquement parce que je pense que c'est un langage fonctionnel facile à démarrer, qu'il a de bons outils et un bon cadre pour le soutenir. D'autres alternatives sont lisp et clojure mais elles sont un peu plus difficiles à apprendre.
la source
Pour commencer, vous pouvez essayer d'implémenter un petit jeu de blackjack en F #. Il s'agit d'un projet de devoirs assigné lors de ce court tutoriel vidéo . La solution est également fournie sur le net (et dans l'une des vidéos).
la source
Vous pouvez écrire un interpréteur de schéma ou de lisp avec OCaml.
la source
À quel langage fonctionnel pensiez-vous? Chacun a des caractéristiques différentes. La seule langue qui a eu le plus d'impact sur moi était Haskell et je vous suggère de faire de même.
la source
Vous pouvez également contribuer à un projet open source.
Par exemple, dans le projet de langage de programmation Frege , il y a beaucoup de travail à faire. Par exemple, vous pourriez vous soucier du portage des bibliothèques Haskell de base. Cela ferait de vous une sorte d'expert Haskell pendant que vous travaillez dessus.
la source