J'ai récemment été plus préoccupé par la façon dont j'écris mon code. Après avoir lu quelques livres sur les modèles de conception (et leur mise en œuvre trop zélée, j'en suis sûr), j'ai beaucoup changé ma façon de penser ce qui change. J'ai tendance à remarquer que j'écris moins d'interfaces et plus de code orienté méthode, où j'aime donner vie aux anciennes classes avec des prédicats, des actions et d'autres tâches de délégué. J'ai tendance à penser que ce sont souvent les actions qui changent, alors je les résume. Même souvent, mais pas toujours, je décompose les interfaces en une seule méthode, puis je préfère utiliser un délégué pour la tâche au lieu de forcer le code client à créer une nouvelle classe.
Alors je suppose que ça m'a frappé. Dois-je plutôt faire de la programmation fonctionnelle?
Edit: J'ai peut-être une idée fausse sur la programmation fonctionnelle.
Actuellement, mon langage de prédilection est C #, et je viens d'un milieu C ++. Je travaille en tant que développeur de jeux mais je suis actuellement au chômage.
J'ai une grande passion pour l'architecture. Mes vertus sont un code propre, flexible, réutilisable et maintenable. Je ne sais pas si j'ai été empoisonné par ces voies ou si c'est pour le mieux. Ai-je une fièvre de refactoring ou dois-je continuer? Je comprends que cela pourrait être une question sur «utiliser le bon outil pour le travail» , mais j'aimerais entendre vos pensées.
Dois-je choisir un langage fonctionnel? Un de mes facteurs de peur est de quitter le confort de Visual Studio.
Réponses:
OUI
Apprendre de nouvelles choses devrait être amusant. Et apprendre une nouvelle façon de programmer devrait faire de vous un meilleur programmeur. Vérifiez l'un de Haskell ou Erlang, les deux sont fonctionnels mais ils sont très différents. Si vous choisissez Haskell, allez trouver quelques conférences de "Simon Payton Jones" sur youtube ou podcasts. Le gars est un grand orateur.
la source
Saint * * * *. Il n'y a pas de solution miracle. Démissionner. Détendez-vous, respirez profondément.
Ce n'est pas parce que vous avez un outil dans votre boîte à outils que vous êtes obligé de l'utiliser. Concentrez-vous sur la tâche à accomplir, c'est-à-dire écrire un programme qui fonctionne et refactorisez lorsque le code sent mauvais. N'encapsulez pas et n'abstenez pas chaque petit détail juste parce qu'il pourrait changer un jour dans le futur. OMI, il est vraiment préférable de commencer directement, KISS & YAGNI, et de réagir aux exigences changeantes quand elles changent réellement .
Je ne pense pas que quiconque ici puisse vous dire si un langage fonctionnel est mieux adapté à vos besoins. Parce que vous ne nous avez pas dit sur quoi vous travaillez.
la source
Vous pouvez prendre F # . Il s'agit d'un langage fonctionnel .NET, qui vous permettra d'utiliser Visual Studio et de réutiliser une grande partie de vos connaissances .NET. Ses assemblages s'intègrent bien sûr aux assemblages C # de manière transparente (vous permettant de combiner facilement C #, C ++ / CLI et F # en un seul projet). Le support F # est fourni avec VS Pro ou mieux, je ne sais pas s'il est activé par défaut.
la source
OMI, ça vaut la peine d'essayer un langage fonctionnel. Même si vous ne l'utilisez jamais directement dans un produit commercialisé, son apprentissage contribuera presque certainement à donner une perspective / un point de vue quelque peu différent sur la programmation. Même si vous finissez par continuer à faire tout votre "vrai" codage en C #, il est assez juste que cela vous aide à améliorer le code que vous écrivez en C #.
Comme d'autres l'ont mentionné, le choix évident pour quelqu'un habitué à Visual Studio est F #, qui est essentiellement un dérivé d'Ocaml / Caml / ML. IMO, qui était un bon choix de la part de Microsoft pour initier les gens à la programmation fonctionnelle - c'est un langage fonctionnel à part entière, mais n'a pas une syntaxe presque aussi étrangère que certains le font (par exemple, alors que les langages basés sur Lisp le font ont de réels avantages, les débutants ont presque toujours du mal à lire).
la source
Oui tu devrais.
Si vous choisissez une langue pure, comme Haskell, vous apprendrez non seulement une nouvelle langue, mais une nouvelle façon de penser. Cela peut également vous aider plus tard dans votre travail proceural / OO.
F #, d'autre part, n'est pas pur, et vous pouvez donc facilement manquer ce qui est important dans la programmation fonctionnelle. Vous pouvez, pour ainsi dire, continuer à écrire des programmes procéduraux qui mutent une variable ici, y effectuer des effets secondaires, juste en syntaxe F #.
la source
Si vous utilisez déjà c #, vous n'avez pas besoin d'un nouveau langage - avec la combinaison de méthodes d'extension, lambdas et les types génériques Func / Action, il est assez facile d'écrire du code fonctionnel en C # - de cette façon, vous pouvez utiliser un style fonctionnel dans les algorithmes où cela a le plus de sens sans avoir besoin de changer toute l'application.
la source