59 votes

Dans quels domaines l'utilisation de F# n'a-t-elle "absolument aucun sens" ?

Don Syme, dans sa présentation SPLASH, affirme que F# n'est PAS destiné à remplacer C#, même s'il en possède les capacités générales. Il poursuit en disant qu'il y a des domaines dans lesquels l'utilisation de F# n'a pas de sens, mais ne s'étend pas sur cette thèse.

  1. Quelqu'un peut-il me dire quelles sont les zones à éviter dans l'utilisation de F# ?
  2. Vous pouvez également mentionner les domaines dans lesquels le C# brille.

Question connexe :

Dans quels domaines l'utilisation de F# serait-elle plus appropriée que celle de C# ?

59voto

Stephen Swensen Points 13439

Mon point de vue est que remplacer un langage aussi riche et mature que C# serait très cher . Donc, par exemple, au moment présent C# est absolument le meilleur choix pour le développement WinForms si l'utilisation du concepteur Visual Studio WinForms peut vous donner un avantage : F# n'a pas de concepteur WinForms.

C# a également un meilleur support LINQ-to-SQL pour le moment. Je suis sûr qu'il existe de nombreux autres exemples de ce type.

Ensuite, il faut demander à toute la main-d'œuvre qualifiée en C# de mettre à jour ses compétences en F#, tout en préservant les compétences en C# pour la maintenance des applications, ce qui est également coûteux.

Enfin, C# est un excellent langage doté de nombreuses fonctionnalités, dont certaines sont absentes de F#, comme les génériques à variantes co/contra et la prise en charge immédiate de la programmation dynamique contre le DLR (F# ne dispose que d'un opérateur non implémenté).

Ainsi, en ne s'attendant pas à ce que F# remplace C#, F# peut évoluer dans de nouvelles voies au lieu de passer tout son temps à rattraper des domaines déjà bien couverts.

23voto

Tomas Petricek Points 118959

C'est une question délicate, car elle n'est pas très bien qualifiée. Parlez-vous de la la langue en général ou parlez-vous du langage et du support IDE actuel ? Ou bien parlez-vous de l'utilisation de F# compte tenu des bibliothèques disponibles ?

  • La langue en général - Je ne pense pas qu'il y ait des domaines où l'utilisation de F# serait un non-sens absolu. Ce serait génial pour la programmation de systèmes d'exploitation entièrement gérés (par exemple Singularity) et je pense que les programmes fonctionnels seraient plus faciles à vérifier formellement (ce qui pourrait être un gros problème pour les systèmes d'exploitation). Pour les systèmes embarqués de bas niveau, vous pourriez utiliser la méta-programmation et les facilités orientées langage (par exemple pour modéliser le flux de signaux dans le matériel, etc.)

  • Langue avec l'IDE actuel - L'IDE F# actuel a quelques limitations - il ne fonctionne pas avec le concepteur WinForms (mais il fonctionne bien avec Blend et WPF).

  • Langue donnée éducation des développeurs - Il est plus difficile d'engager des programmeurs F# que des programmeurs C#. Si vous créez une application qui n'a pas de noyau compliqué (par exemple, une "interface pour une base de données" habituelle), il sera moins coûteux de la développer en C# (si vous pouviez engager de bons développeurs F#, ils la termineraient probablement plus rapidement et avec moins de bogues, mais cela ne vaut peut-être pas le coût).

  • Bibliothèques disponibles en fonction de la langue - Si vous voulez vous limiter à utiliser F# avec les seules bibliothèques qui fonctionnent bien avec lui, le domaine se rétrécit un peu plus. Par exemple, LINQ to SQL et ASP.NET MVC peuvent être utilisés avec F#, mais ce n'est pas parfait. Cependant, pour de nombreux projets, il serait judicieux de développer vos propres bibliothèques et F# devient alors le langage idéal pour cela.

16voto

Ritch Melton Points 7173

Bonne question. Je dirais qu'il n'y a pas de raisons liées au langage, mais de nombreuses raisons liées aux compétences, aux aptitudes et à l'attitude des développeurs, des responsables et des clients.

10voto

Mark Seemann Points 102767

De nombreuses technologies d'interface utilisateur de Microsoft, telles que WPF, offrent une excellente prise en charge des éléments suivants liaison de données . Une liaison de données efficace utilise liaison bidirectionnelle pour mettre à jour les objets sous-jacents lorsque l'utilisateur interagit avec l'interface utilisateur. Cela implique que une liaison de données efficace nécessite des objets mutables .

F#, avec l'accent mis sur les types immuables ne correspond pas du tout à ce type de modèle de liaison de données. Bien qu'il soit possible de créer des types mutables en F#, cela supprimerait une grande partie des avantages du langage. Il est tout simplement plus judicieux d'utiliser un langage (tel que C#) où la mutabilité est plus naturelle.

8voto

paxdiablo Points 341644

Vous devriez réfléchir à deux fois avant de l'utiliser pour le développement de noyaux de systèmes d'exploitation ou de systèmes embarqués de bas niveau :-)

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