102 votes

Comment utiliser la programmation fonctionnelle dans le monde réel?

Les langages fonctionnels sont bons parce qu'ils éviter des bugs par l'élimination de l'état, mais aussi parce qu'ils peuvent être facilement parallélisable automatiquement pour vous, sans que vous ayez à vous soucier du nombre de threads.

Comme Win32 développeur cependant, puis-je utiliser Haskell pour certaines dll de ma demande? Et si je le fais, est-il un réel avantage qui seraient prises automatiquement pour moi? Si oui que me donne cet avantage, le compilateur?

Ne F# paralléliser les fonctions que vous écrivez sur plusieurs cœurs cpu et automatiquement pour vous? Serait-il possible de voir le nombre de threads dans le gestionnaire des tâches augmentation?

Fondamentalement, ma question est, comment puis-je commencer à utiliser Haskell, de façon concrète, et je vois vraiment quelques avantages si je le fais?

41voto

Apocalisp Points 22526

Il semble que le livre Real World Haskell est exactement ce que vous recherchez. Vous pouvez le lire gratuitement en ligne:

http://book.realworldhaskell.org/

25voto

ScottKoon Points 2139

F# ne contient pas toute la magie de poussière de lutin qui va passer outre des fonctions de types de processeurs ou de machines. Ce F#/Haskell et d'autres langages de programmation fonctionnelle à faire est de le rendre plus facile pour vous d'écrire des fonctions qui peuvent être traitées indépendamment de fil ou de UC ils ont été créés.

Je ne me sens pas le droit de poster ici un lien vers un podcast je participe, semble un peu à côté, mais dans le Troupeau Code épisode où nous avons parlé avec Matt Podwysocki nous avons posé la même question et il a donné quelques réponses intéressantes. Il y a aussi beaucoup de bons liens relatifs à la programmation fonctionnelle dans cet épisode. J'ai trouvé un lien titres "Pourquoi la Programmation Fonctionnelle, les Questions" Qui peut fournir quelques réponses pour vous.

14voto

Marc Gravell Points 482669

Cela pourrait aussi être intéressant: " Programmation fonctionnelle dans le monde réel "

Les exemples sont en F # et C #, mais la théorie est assez générique. D'après ce que j'ai lu (version préliminaire), c'est certainement intéressant, mais jusqu'à présent, je pense que cela me donne envie de m'en tenir de plus en plus au C #, en utilisant des bibliothèques comme Parallel Extensions.

8voto

MichaelGG Points 8202

Vous n'avez pas mentionné, mais je suis en supposant que vous êtes à l'aide de C++. Un potentiellement moyen facile d'obtenir en fonctionnelle est via C++/CLI de F#. C++ contient "la magie de la poussière de lutin" (appelé IJW: Il Fonctionne, tout Simplement) pour vous permettre de vous appeler dans et hors de code managé. Avec cela, l'appel de code F# est presque aussi simple que c'est à partir de C#.

J'ai utilisé ce dans un seul programme (FreeSWITCH), qui est entièrement écrit en C/C++. Avec un seul managed C++/CLI (utilisez le commutateur /clr), la magie des transitions en code managé, et à partir de là, je peux aller charger mon F# plugins et de les exécuter. Pour rendre les choses encore plus facile pour le déploiement, F# peut lier statiquement toutes ses dépendances, de sorte que vous n'avez pas besoin de déployer le F# runtime files. Une autre chose qui rend le code CLR intéressant est que vous pouvez passer en code managé (délégués) pour le code en C, et l'exécution en fait automatiquement un thunk pour vous.

Si vous décidez d'aller le Haskell façon, la fonction que vous allez être à la recherche pour le ref: Foreign Interface de la Fonction. Cependant, je ne pense pas que ça va vous donner le même niveau d'intégration que C++/CLI avec F#.

6voto

Rayne Points 14518

Je suis présentement en train d'apprendre Haskell moi-même, lorsque vous commencez l'apprentissage, il ne semble pas très intrigante, car l'expérience d'apprentissage est RIEN comme l'apprentissage d'un langage comme C#, c'est un tout nouveau monde, mais j'ai remarqué que je pouvais écrire très très expressions complexes en seulement quelques lignes de code, quand je regarde le code, il était beaucoup plus concis, il était petit et serré. Je suis absolument de l'aimer! En effet, vous pouvez écrire des programmes concrets, plus petites, plus faciles à maintenir, et beaucoup plus complexes que la plupart des autres langages permettent, je vote pour vous l'apprendre!!

Bonne chance.

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