216 votes

Dans quels domaines l'utilisation du fa# serait-elle plus appropriée que celle du do# ?

Au cours des dernières années, F# a évolué pour devenir l'un des langages entièrement pris en charge par Microsoft, utilisant de nombreuses idées issues d'OCaml, ML et Haskell.

Au cours des dernières années, le langage C# a étendu ses fonctionnalités générales en introduisant de plus en plus de fonctionnalités fonctionnelles : LINQ (compréhension des listes), Lambdas, Closures, Délégués anonymes et plus encore...

Compte tenu de l'adoption par C# de ces caractéristiques fonctionnelles et de la taxonomie de F# en tant que langage fonctionnel impur (il vous permet d'accéder aux bibliothèques du cadre ou de modifier l'état partagé lorsqu'une fonction est appelée si vous le souhaitez), il existe une forte similitude entre les deux langages, bien que chacun d'entre eux ait ses propres priorités opposées.

Je suis intéressé par tout modèle réussi employant ces deux langages dans vos programmes polyglottes de production, ainsi que par les domaines des logiciels de production (applications web, applications client, applications serveur) que vous avez écrits en F# au cours de l'année écoulée et que vous auriez écrits auparavant en C#.

9voto

johnc Points 12140

Nous avons écrit un langage de moteur de règles personnalisé en utilisant l'implémentation de Lex-Yacc en F#.

EDIT pour inclure la réponse au commentaire

Il n'y avait pas d'implémentation de lex/yacc en C# (pour autant que nous le sachions, et celle de F# l'était).

Il aurait été possible, mais carrément pénible, d'élaborer nous-mêmes l'analyse syntaxique.

Ce thème montre d'autres suggestions, telles que des bibliothèques externes, mais notre architecte en chef est un habitué des langages fonctionnels, et le choix d'utiliser F# s'est donc imposé de lui-même.

7voto

Rune FS Points 13350

Je travaille actuellement sur une compilation pour un langage de programmation. Le compilateur est entièrement écrit en F#. Le compilateur (mis à part le lex et le parser construits avec lex/yacc) est essentiellement construit comme un ensemble de transformations d'une structure complexe de type arbre.

Comme d'autres l'ont fait remarquer, les unions discriminantes et la recherche de motifs facilitent grandement l'utilisation de ce type de structure de données, plutôt que de déverser le code dans des méthodes virtuelles "à tout bout de champ"

Je n'avais pas travaillé sur F# avant de commencer à travailler sur le compilateur (j'avais cependant construit des compilateurs dans une autre variante d'OCaml appelée MoscowML) et, comme le dit Jared, il est visible dans le code quelles parties j'ai faites en premier, mais en général j'ai trouvé F# facile à apprendre - se remettre dans l'esprit FP après avoir codé principalement OO pendant une décennie prendra un peu plus de temps.

En dehors du travail avec les arbres, je trouve que la capacité d'écrire du code déclaratif est le principal avantage de FP (y compris F#), avec un code qui décrit l'algorithme que j'essaie d'implémenter, contrairement à C# qui décrit comment J'ai mis en œuvre l'algorithme, ce qui constitue un avantage considérable.

6voto

Igor Zevaka Points 32586

Je n'ai pas d'expérience personnelle, mais vous pouvez écouter un épisode de DNR (je crois que c'est celui-ci ) où ils parlent de F# à des représentants de Microsoft. Ils ont écrit la majeure partie du système de notation de Xbox Live, qui était loin d'être trivial, en utilisant F#. Le système s'est échelonné massivement sur des centaines de machines et ils en ont été très satisfaits.

5voto

Brian Points 82719

Je ne sais pas s'il est en production, mais l'IA de "The Path of Go" a été écrite en F# :

http://research.microsoft.com/en-us/events/techvista2010/demolist.aspx#ThePathofGo

Le chemin du Go : Un jeu de Microsoft Research pour Xbox 360

Cette démo présente basé sur le jeu de Go, produit en interne à Microsoft Research Cambridge. Le jeu de Go est l'un des jeux de société les plus jeux de société les plus célèbres d'Asie de l'Est. Il a vu le jour en Chine il y a 4 000 ans. Derrière la simplicité trompeuse du jeu se se cache une grande complexité. Il suffit de Quelques minutes suffisent pour l'apprendre, mais il faut une vie entière pour le maîtriser. Bien que les ordinateurs ont dépassé les compétences humaines aux échecs, la mise en place d'une IA compétitive pour le jeu de Go reste un défi pour la recherche. Le jeu est basé sur trois technologies développées par Microsoft Research Cambridge : une IA capable de jouer au Go, le langage F#, et TrueSkill™ pour faire pour faire correspondre les joueurs en ligne. L'IA est implémentée en F# et relève le défi défi de fonctionner efficacement dans le cadre compact .net sur la Xbox 360. Ce jeu vous place dans un certain nombre de scènes 3D visuellement époustouflantes. Il a été entièrement développé en code géré à l'aide de l'environnement l'environnement XNA.

(Quelqu'un d'autre a déjà mentionné "TrueSkill").

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