Je prévois de me plonger dans le paradigme de la programmation fonctionnelle et de me procéder le processus de pensée de la part de la nature. Le .NET / Mono est le seul cadre / ObjecteModel que je connais et je ne veux pas apprendre d'autre système de type. Cela fait de la F # une considération évidente depuis le fardeau de l'apprentissage d'un nouveau système de type ne sera pas un facteur distrayant. p>
Mais ma préoccupation concerne la langue elle-même. Sera-t-il aussi bon que tout autre langage de programmation fonctionnel classique (par exemple HASKELL) dans le forage de FP dans mon crâne? p>
5 Réponses :
Oui, cela vous aidera certainement à apprendre une programmation fonctionnelle. F # prend également en charge la programmation orientée objet, de sorte que le commutateur doit être plus facile. Si vous voulez passer à une langue fonctionnelle complète, vous pourriez, mais je trouve en fait la combinaison de OO et de FP mieux que OO ou FP uniquement (je suis un programmeur Scala, qui est comme F #). P>
Oui, ça peut. Particulièrement utile et germane ici est Programmation fonctionnelle du monde réel qui vient chez FP du C # et surtout le F # perspective. Vous allez adorer. P>
Paradigme de programmation fonctionnelle? Haskell Springs immédiatement à l'esprit. Au fait, il n'y a pas d'hériter cadre em> à Haskell. Pour autant que je sache, votre framework em> est une fenêtre de terminal et un éditeur de programmation. P>
Si vous souhaitez un langage de programmation fonctionnel dans votre framework .NET, vous devrez rester avec F #. P>
IronPython, mais le chemin n'est pas un langage de programmation fonctionnel. P>
Oui, Irynthon n'est pas seulement un langage de programmation fonctionnel, ce n'est pas un langage de programmation du tout i>, c'est un compilateur pour le langage de programmation Python (qui n'est pas non plus un langage de programmation fonctionnel) .
Je pense que l'avantage de l'apprentissage de la programmation fonctionnelle avec F # (surtout si vous avez déjà de l'expérience avec C # et .NET), vous trouverez qu'il est beaucoup plus facile de créer un projet amusant. p>
F # prend en charge plusieurs paradigmes, mais il s'agit principalement d'une langue fonctionnelle (comparée à Python ou C # qui prenant en charge plusieurs paradigmes également, mais ne sont pas primarilly fonctionnels). Cela facilite la force de vous forcer à utiliser le style fonctionnel. Il est plus facile d'éviter les modèles impératifs, car ils sont plus difficiles à écrire dans F # (et le code a l'air pire). p>
Je pense qu'une fois que vous "obtenez" la programmation fonctionnelle de base, il sera plus facile d'apprendre d'autres langues fonctionnelles si vous serez toujours intéressé. Il est certainement agréable de connaître un peu de haskell ou de schéma, car ils sont plus radicaux (à certains égards). p>
Si vous êtes bon sur des concepts de compensation sans les utiliser dans certains projets réels, commençant par une langue classique en utilisant un livre classique peut également être une bonne option (par exemple, HASKELL School of Expression ou Structure et interprétation des programmes informatiques ). Je ne veux pas dire cela dans un sens négatif - je n'aime personnellement lire des livres techniques sans essayer des exemples, car je peux toujours prendre les concepts intéressants de juste lire (et pour la pratique, il y a toujours Google). Bien sûr, vous pouvez écrire du code dans Haskell ou Scheme, mais en tant que programmeur .NET, vous trouverez probablement une écriture F # Code plus amusante ... p>
F #, de nombreuses salutations, peut être meilleure que la plupart des "autres langage de programmation fonctionnelle classique [S]". Depuis que vous connaissez déjà .NET, vous serez capable de tirer pleinement parti de toutes vos connaissances .NET tout en ramassant deux choses utiles de F #: p>
Le paradigme de programmation fonctionnelle. C'est-à-dire comment programmer dans le style de la FP. Vous pouvez utiliser cela dans n'importe quelle langue. J'apprends souvent envers FP dans mon code C #, car je trouve qu'il s'agit d'être un moyen beaucoup plus maintenu et réutilisable d'écrire des logiciels. P> li>
Syntaxe de programmation fonctionnelle d'une langue. F # est très similaire à OCAML, et la famille ML constitue l'un des 3 dialectes de 3 ou plus de Langues FP. Les deux autres biggies sont la famille Miranda (dont Haskell est le principal représentant moderne) et la famille LISP (où les LISP et le schéma commun sont les deux grands représentants). P> LI> ol>
Dans F #, cela pourrait vous aider à faire la distinction très clairement entre les types F # et les types .NET. Les enregistrements, les tuples et les syndicats discriminés sont (à peu près) des choses purement f #, et ils sont utilisés dans presque toutes les langues fonctionnelles. Utilisez-les beaucoup si vous voulez apprendre FP. Les classes, les structures et les interfaces sont également là, mais ce sont des concepts .NET. Utilisez-les au besoin, mais essayez de les éviter en général, de vous ne finirez pas d'écrire «C # avec une syntaxe Goofy» au lieu de idiomatique F #. P>
Les choses que vous manquerez vraiment de HASKELLL sont une vraie pureté (EH, pas si grosse affaire), une évaluation paresseuse par défaut (un gros changement) et des classes de type. Vous pouvez faire des paresseux eval dans f #, mais vous devez utiliser les classes explicites paresseuses <> pour l'obtenir. Avoir la paresseux eval partout est l'une des choses vraiment uniques et puissantes de Haskell, mais ce n'est pas un concept de FP strict. Les classes de type sont très puissantes, mais vous pouvez vous débrouiller sans eux pour la plupart des situations du monde réel. Ils sont juste un niveau d'abstraction plus élevé qui réduit sur une plaque de chaudière et une répétition. p>
La vraie pureté est généralement plus académique. Il présente certains avantages, mais si vous êtes déjà habitué à des techniques .NET et impure, vous trouverez principalement une douleur à contourner jusqu'à ce que vous ayez complètement acheté dans la mentalité FP. P>
Vous pouvez utiliser beaucoup d'idées de la FP dans de nombreuses langues différentes. La question ne sera pas «percera-t-elle dans mon crâne» - la question est-elle d'encourager les bonnes habitudes de la FP ou les mauvaises.