Quelle était la raison d'être du changement de nom des opérations de liste d'ordre supérieur en C#? (Exemples: map
->Select
, filter
->Where
, fold
->Aggregate
)Justification du changement de nom des opérations de liste d'ordre supérieur
Répondre
Eh bien, l'OMI, "fold" est un nom assez terrible pour "agrégat". Freaking les maths. :) Surtout que les noms C# sont plus en ligne avec SQL/LINQ.
Les noms C# sont plus en ligne avec _English_, sans parler de SQL/LINQ. Mais que Dieu nous garde de démystifier notre profession en employant des mots que les gens ordinaires comprennent ... – Lunivore
@Lunivore: Je ne sais pas. Sans la connexion à SQL, je ne pense pas que le nom 'Select' me donnerait une idée de ce que fait la méthode - je supposerais probablement que c'est' filter', pas 'map'. 'Where' est un peu plus intuitif en tant que nom de méthode, mais d'habitude je dirais que les noms de méthodes devraient être des verbes (et' filter' est parfaitement descriptif à mon avis). Aucun argument à propos de l'agrégat vs plier si (mais j'aurais pu aller avec Accumuler si cela ne tenait qu'à moi). – sepp2k
LINQ essaie d'être à peu près familier aux personnes connaissant SQL, où la projection est select, etc. Vous pouvez écrire vos propres méthodes d'extension avec des noms bien sûr.
Idem "où" etc –
Considérant que l'écrasante majorité des utilisateurs de LINQ seront familiers avec SQL et ne connaissent pas les opérateurs de programmation fonctionnelle traditionnels, cela est parfaitement logique. – Gabe
Pas une réponse, mais un digne côté:
Voir http://blogs.msdn.com/b/jaredpar/archive/2008/12/02/mapping-linq-to-f.aspx pour une traduction « anneau décodeur » entre LINQ (comme en C#/Enumerable
) et F # Seq
fonctions (qui suivent la plupart du temps les noms fonctionnels plus traditionnels).
En ce qui concerne la méta-question ...
La communauté de programmation fonctionnelle et la communauté de programmation grand public impératif ont évolué dans presque isolement les uns des autres depuis longtemps. En conséquence, il existe des différences de vocabulaire fondamentales; par exemple, un terme commun tel que "polymorphisme" signifie des choses complètement différentes pour chaque groupe (polymorphe paramétrique, a.k.a. "génériques" ou "modèles" pour les FP-ers, versus polymorphisme de sous-type pour le reste). Demander la raison derrière les noms (s'il y en a même un) donne souvent une réponse simple - vous nommez des choses selon la «culture locale». En C#, LINQ est un langage de requête comme SQL, donc il ressemble beaucoup à SQL. Mais poser cette question est à peu près analogue à aller en Espagne et demander quelle est la raison pour laquelle tout le monde appelle sa maison "mi casa". ("Qu'est-ce que vous voulez dire, pourquoi est-ce que je l'appelle comme ça? Vous l'appelez quelque chose de différent?")
- 1. Comptage des opérations de changement C#
- 2. python - opérations de liste
- 3. Justification de l'utilisation du nuage?
- 4. changement de nom du titre
- 5. Justification du texte
- 6. Blocage des opérations de liste dans JRedis
- 7. comportement étrange lors du changement de nom du répertoire
- 8. Changement de cookie Nom JSESSIONID
- 9. RichTechBox et justification de l'alignement
- 10. Justification pour MVC?
- 11. changement de nom et la réinitialisation du chapitre dans LATEX
- 12. Changement de nom de serveur IIS
- 13. Justification de l'application de certains opérateurs à des membres
- 14. php changement de nom de fichier csv
- 15. Personnalisation des opérations de données dynamiques ASP.NET
- 16. Justification derrière IReadOnlySessionState
- 17. Projet SVN actuel - changement de nom d'hôte
- 18. dossiers Changement de nom dans TFS
- 19. Changement du nom et de l'emplacement du fichier avec la ligne de commande
- 20. MySQL: nom d'hôte changement universel
- 21. Changement de cas (supérieur/inférieur) lors de l'ajout de données via le site d'administration Django
- 22. base de données de changement de nom dans psql
- 23. Dummy opérations de traitement du processeur Intel
- 24. Opérations Linq contre une liste de tables de hachage?
- 25. Suggestions de gestion du changement?
- 26. Liste des types de données Delphi avec des opérations de lecture/écriture 'thread-safe'?
- 27. Dupliquer l'élément supérieur de la pile Java
- 28. Rembourrage supérieur bizarre sur les éléments de la liste horizontale
- 29. Premier index de liste Python supérieur à x?
- 30. Courant: Nom de table différent du nom de l'entité
Peut-être utiliser des mots-clés "SQL like"? –
Et clairement 'bind' est le nom propre de la méthode' SelectMany', n'est-ce pas? Ou peut-être 'splat' ou' aplatir 'ou 'concat' ou' map_concat' ... – Gabe
Selon vous, que devrait-on appeler 'First'? 'voiture',' fst', ou 'head'? – Gabe