Question

Beaucoup d'entre nous a commencé à voir ce phénomène avec jQuery il y a environ un an quand les gens ont commencé à demander comment faire des choses absolument fou comme récupérer la chaîne de requête avec jQuery . La différence entre les balises bibliothèque (jQuery) et langue (JavaScript) est apparemment perdu sur de nombreux programmeurs, et les résultats dans beaucoup de code inapproprié, alambiqué en cours d'écriture où il est pas nécessaire.

Peut-être juste mon imagination, mais je te jure que je commence à voir une légère hausse du nombre de questions où les gens demandent de faire des choses insensées De même avec LINQ, comme trouver des plages dans un tableau trié. Je ne peux pas sur la façon complètement inappropriée les extensions Linq sont pour résoudre ce problème, mais surtout le fait que l'auteur vient suppose que la solution idéale consisterait à Linq sans réellement penser à ce sujet (pour autant que je peux dire). Il semble que nous répétons l'histoire, la reproduction d'une nouvelle génération de programmeurs .NET qui ne peuvent pas faire la différence entre la langue (C # / VB.NET) et la bibliothèque (LINQ).

Ce qui est responsable de ce phénomène? Est-ce juste hype? tendances Magpie? A-t-Linq ramassé une réputation comme une forme de magie, où au lieu du code écrit en fait il vous suffit de prononcer le droit incantatoire? Je suis à peine satisfait de ces explications, mais je ne peux pas vraiment penser à quoi que ce soit d'autre.

Plus important encore, est-ce vraiment un problème, et si oui, quelle est la meilleure façon d'aider éclairer ces gens?

Était-ce utile?

La solution

Il est essentiellement parce que la programmation est fondamentalement difficile. Il exige beaucoup de pensée logique et structurée d'une manière que beaucoup de gens ne savent pas comment faire. (Ou tout simplement ne peut pas le faire, en fonction de qui vous écoutez.)

Des trucs comme LINQ et jQuery rend certaines tâches communes des données de manipulation beaucoup plus facile. C'est très bien pour ceux d'entre nous qui savons ce que nous faisons, mais l'effet secondaire malheureux est qu'il abaisse la barre. Il est plus facile pour les gens qui ne savent pas ce qu'ils font pour commencer à écrire du code et de faire les choses fonctionnent. Et puis, quand ils courent dans la réalité, et trouver quelque chose de fondamentalement difficile que leur simple, les techniques d'abstraction de haut niveau ne sont pas bien adaptés à, ils sont perdus, parce qu'ils ne comprennent pas la plate-forme que leur bibliothèque est construite sur.

Votre question est en quelque sorte sur la bonne voie, mais beaucoup comme la controverse sur les vivaces jeux vidéo violents « tourner les enfants violents, » il a la direction des arrière de liaison. techniques de programmation faciles ne font pas les programmeurs stupides; ils ont juste attirer des gens stupides à la programmation. Et il n'y a vraiment pas grand-chose que vous pouvez faire à ce sujet.

Autres conseils

Pour moi, c'est le nouveau phénomène de jouet. Quelque chose de nouveau sort (LINQ) et maintenant chaque développeur veut jouer avec elle.

Ils voient LINQ comme un marteau et chaque problème est un clou. Qui se soucie s'il est plus simple de le faire d'une autre manière? LINQ doit être la réponse! Comme quand tout le monde utilisait XML pour tout! Fichier de configuration? XML. Stocker des données? XML. Etc etc

Je pense que LINQ offre une opportunité vraiment bien en C # à la résolution des problèmes en utilisant une approche plus fonctionnelle. Nous ne devrions pas rejeter un nouveau style de résolution de problèmes parce que nous avons déjà quelque chose qui fonctionne.

Venant d'un arrière-plan SQL lourd, je aime avoir la possibilité d'utiliser la logique à base de jeu dans mon C # pour mieux décrire l'intention de mes opérations.

Cela dit; contexte est roi, et tout peut être galvaudé.

LINQ et jQuery sont les dernières « jouets » et les développeurs aiment montrer comment ils peuvent faire des choses en utilisant la dernière chose.

Si vous utilisez LINQ correctement, et le comprendre sous le capot, vous trouverez toutes sortes de nouvelles techniques de programmation de pointe.

Donc, si vous pensez profondément sur les améliorations, je soutiens qu'il fait de vous un meilleur programmeur. Que ce soit un programmeur donné ne fait ou non, ne sont pas la faute de LINQ.

Le même argument peut être fait pour objet consanguine cartographes. Est-ce que quelqu'un vraiment écrire des requêtes SQL brutes sur des tables de base de données plus? :)

Certaines de ces choses sont fous parce que les gens utilisent le mauvais marteau, d'autres sont parce qu'ils sont en train de construire un super-marteau vraiment élégant, mais ils se sont heurtés à un détail farfelu qui doit surmonter.

Par exemple, si vous voyez une question sur l'utilisation de LINQ pour générer LINQ dynamique à l'utilisation contre les non-dynamique LINQ neuf fois sur dix la personne est tout simplement curieux de savoir s'il est possible, ou aboyer le mauvais arbre, mais il sont quelques choses que vous pouvez résoudre cette façon difficiles au point de déraisonnable pour résoudre autrement.

Je prends ce genre de questions en deux parties:

  1. peut-il être fait, et si oui, quel serait-il ressembler à
  2. doit-il être fait, est-il un risque ou une meilleure alternative

J'ai trouvé que je les fais presque toujours dans cet ordre. Il répond à la question et vous aide également à faire une meilleure explication des alternatives possibles.

Je ne sais pas un effet anesthésiant sur l'esprit des développeurs, mais jeter un oeil ici l'effet des outils numble d'esprit / langues sur les taux. Parlez abaisser la barre!

Je suis d'accord avec Mason Wheeler. Cependant, il est pas tout à fait fou pour essayer de résoudre https://stackoverflow.com/questions/3762202/get-range-of-integers- avec-linq en opérant sur une « séquence ». Le problème est que Java et de itérateurs de .Net ne prennent pas en charge les 3 opérations: valeur actuelle, la valeur suivante, et de passer à côté. Clojure peut faire les 3, et je pense que, dans Clojure il est plus facile de faire ce droit. Python a également co-routines, et je veux essayer de fissuration que. http://clojure.org/sequences http://www.try-clojure.org/

En fait, si l'entrée est une séquence infinie, comme http://oeis.org/A007401, alors paresseux est la seule façon.

Licencié sous: CC-BY-SA avec attribution
scroll top