36 votes

Apprendre la programmation fonctionnelle ?

J'ai récemment tâté de la programmation fonctionnelle avec des langages comme Lua, Scheme et surtout F#, et il existe de nombreuses ressources pour apprendre ces langages. Cependant, les ressources que j'ai trouvées et que j'ai utilisées n'enseignent essentiellement que la syntaxe de ces langages. Bien que cela soit important, je peux le faire en un jour ou deux. Je n'ai pas l'impression d'utiliser ces langages comme prévu, car je les traite essentiellement comme des langages impératifs (dans la mesure du possible).

Pouvez-vous me recommander des ressources qui enseignent la programmation fonctionnelle, plutôt que "Apprendre [insérer le langage]" ? Je m'intéresse surtout au traitement parallèle, mais j'aimerais y aller pas à pas.

34voto

Norman Ramsey Points 115730

J'enseigne la programmation fonctionnelle régulièrement, et je souhaite que je connaissais de mieux les ressources. Voici quelques suggestions, principalement destiné aux programmeurs avec une certaine expérience de la programmation.

C'est seulement sur les structures de données, mais Chris Okasaki est Purement Fonctionnelle des Structures de Données est assez incroyable, et sera certainement vous empêcher de traiter quelque chose comme un impératif. J'ai également entendre de bonnes choses à propos de Graham Hutton du livre pour les débutants à l'aide de Haskell, mais je ne peux rien dire à ce sujet de mes propres connaissances. Je seconde la recommandation du Haskell École d'Expression.

Mon autre idée est que SICP n'est pas un bon livre à partir de laquelle pour apprendre la programmation fonctionnelle. Si vous connaissez déjà le Schéma, c'est un bon livre à admirer, mais SICP est moins sur la programmation fonctionnelle et plus sur la façon de mettre en œuvre tous connu intéressant de l'informatique idées dans le Schéma. Deux techniques qui sont très importants pour de nombreux fonctionnelle programmeurs---programmation avec le filtrage et la mise en application partielle de fonctions curryfiées---ne sont pas bien pris en charge dans le Schéma, et vous serez absent dehors sur une beaucoup de la promesse de langues comme F#. D'autre part, Lua, étant très similaire au Régime, ne supporte pas ces choses.

Essayez Haskell; Haskell rend beaucoup plus difficile pour vous de programmer votre ancienne façon de penser dans la nouvelle langue. Au lieu de cela, Haskell vous oblige à penser à de nouvelles idées.

7voto

JasonTrue Points 13615

Je suis sûr que ça a été mentionné ailleurs, mais je pense que Apprenez vous un Haskell pour un grand bien fait un excellent travail d'introduction en douceur des concepts fonctionnels sans vous obliger à comprendre la notation mathématique ésotérique.

Le livre d'Okasaki est vraiment excellent, mais vous devrez vous engager davantage pour le comprendre, à moins que vous ne pensiez déjà en lambda calculus typé.

5voto

Nicholas Mancuso Points 5459

Je voudrais essayer de vérifier SICP . Il s'agit d'un cours d'introduction enseigné dans de nombreuses universités qui utilise Scheme comme langage de prédilection.

La première grande étape consiste à comprendre les fonctions puissantes telles que map et fold. La correspondance de motifs lorsque le langage le permet également. Les choses devraient venir beaucoup plus naturellement par la suite.

4voto

Magnus Points 1769

Si vous envisagez d'apprendre Haskell, jetez un coup d'oeil à Haskell dans le monde réel . Il s'agit d'une bonne introduction au langage, avec des exemples liés à des problèmes du monde réel (comme l'utilisation de bases de données, la programmation de clients Web, etc.) Il a récemment commencé à être livré, mais il est également disponible gratuitement à l'adresse suivante aquí .

2voto

JaredPar Points 333733

Pour F#, IMHO, le meilleur livre est Expert F# . Cependant, sur la base de votre commentaire initial, je suppose qu'il n'ira pas assez loin dans le style fonctionnel des choses.

Actuellement, la meilleure source de conseils et de programmation F# est la blogosphère. L'équipe F# et les nombreux utilisateurs/enthousiastes sont des blogueurs actifs. Comme il s'agit d'un langage relativement nouveau, beaucoup de ces blogs s'attachent à expliquer exactement ce qu'est F# et comment il doit être utilisé.

Je lirais en particulier ces blogs. Je commencerais par les deux premiers de la liste. Remontez le temps et parcourez leurs articles dans l'ordre chronologique. Si vous avez une base solide en C#, regardez la plupart des entrées précédentes de la première liste. Il fait plusieurs introductions C# -> F#.

  1. http://lorgonblog.spaces.live.com/blog/fakehandlerpage.aspx?wa=wsignin1.0&sa=733042901
  2. http://blogs.msdn.com/chrsmith/
  3. http://blogs.msdn.com/dsyme/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X