私たちの多くは、jQueryでこの現象を見始めたのは、約1年前、人々が jQueryでクエリ文字列を取得する のような非常識なことを行う方法を尋ね始めたときです。 library(jQuery)とlanguage(JavaScript)の違いは明らかに多くのプログラマーで失われており、多くの不適切で複雑なコードが記述されている場所に書き込まれます必要はありません。
多分それは私の想像力だけかもしれませんが、人々がLinqで同様に非常識なことをするように求めている質問の数が増加し始めていることを誓います ソートされた配列の範囲を見つける など。 Linq拡張機能がその問題を解決するのにどれほど完全に不適切であるかを克服することはできませんが、さらに重要なのは、作者が理想的なソリューションにはLinqが含まれると仮定した場合実際にはない考えるそれについて(私が知る限り)。言語(C#/ VB.NET)とライブラリ(Linq)の違いが分からない新世代の.NETプログラマーを育てて、私たちは歴史を繰り返しているようです。
この現象の原因は何ですか?それは単なる誇大広告ですか?カササギの傾向? Linqは評判を一種の魔法として取り上げましたが、実際にコードを記述する代わりに、適切な呪文を発しなければなりませんか?私はそれらの説明にはほとんど満足していませんが、他に何も考えることができません。
さらに重要なのは、それが本当に問題なのか、そしてもしそうなら、これらの人々を啓発するのに役立つ最良の方法は何ですか?
それは基本的にプログラミングが根本的に難しいからです。それは、多くの人々が方法を知らないような方法で、多くの論理的で構造化された思考を必要とします。 (または 単に行うことはできません 聴く人によって異なります。)
LINQやjQueryのようなものは、特定の一般的なデータ操作タスクを非常に簡単にします。それは私たちが何をしているのかを知っている私たちにとっては素晴らしいことですが、残念な副作用はそれが基準を下げることです。何をしているのか分からない人でも、コードを書き始めて機能させるのが簡単になります。そして、彼らが現実に出会い、単純で高抽象度の技術があまり適さない根本的に難しい何かを見つけたとき、彼らは彼らのライブラリが構築されているプラットフォームを理解していないので、彼らは失われます。
あなたの質問は正しい方向に進んでいますが、暴力的なビデオゲームについての「子供を暴力的にする」という長年にわたる論争のように、それは逆のリンクの方向性を持っています。簡単なプログラミング手法は、プログラマーを愚かにするものではありません。彼らは愚かな人々をプログラミングに引き付けるだけです。そして、あなたがそれについてできることは本当にあまりありません。
私にとってそれは新しいおもちゃの現象です。新しいものが出てきて(LINQ)、今ではすべての開発者がそれを試してみたいと思っています。
彼らはLINQをハンマーと見なしており、すべての問題は釘です。別の方法で行う方が簡単なのか、誰も気にしないのですか? LINQが答えになるはずです!誰もがすべてにXMLを使用していたときのように!設定ファイル? XML。データを保存しますか? XML。など
LINQは、より機能的なアプローチを使用して問題を解決するC#で本当に良い機会を提供すると思います。既に機能するものがあるからといって、新しいスタイルの問題解決を却下すべきではありません。
SQLのバックグラウンドが重いため、C#でセットベースのロジックを使用して、操作の目的をより詳しく説明できるようになりました。
それは言った;コンテキストは王様であり、何でも使い過ぎる可能性があります。
Linqを適切に使用し、内部で理解すれば、あらゆる種類の 新しい最先端のプログラミング手法が見つかります。
そのため、拡張機能について深く考えれば、それがより優れたプログラマーになると私は主張します。特定のプログラマが実際にこれを行うかどうかは、Linqの責任ではありません。
オブジェクトリレーショナルマッパーについても同じことが言えます。本当に誰かがデータベーステーブルに対して生のSQLクエリを書いていますか? :)
LINQとjQueryは最新の「おもちゃ」であり、開発者は最新のものを使用してどのように処理できるかを披露するのが大好きです。
人々が間違ったハンマーを使用しているためにこれらの非常識なもののいくつかは、本当にエレガントなスーパーハンマーを構築しているために他のものがありますが、それらは克服する必要がある奇妙な詳細に遭遇しました。
たとえば、linqを使用して動的linqを生成し、非動的linqに対して10回のうち9回使用することに関する質問がある場合、その人は、可能であれば好奇心旺盛であるか、間違ったツリーを鳴らしていますが、いくつかありますこの方法で解決できるものは、他の方法では解決するのが不合理になるほど困難です。
私はこの種の質問を2つの部分に分けます。
ほとんどの場合、その順序でそれらを実行することがわかりました。それは質問に答えるだけでなく、可能性のある代替案をよりよく説明するのにも役立ちます。
開発者の心の麻痺効果については知りませんが、見てみましょう ここに 気まぐれなツール/言語が料金に与える影響について。バーを下げることについて話してください!
メイソンウィーラーに同意します。ただし、「シーケンス」を操作して https://stackoverflow.com/questions/3762202/get-range-of-integers-with-linq を解決しようとすることは、まったくおかしくないわけではありません。問題は、Javaおよび.Netのイテレーターが3つの操作(現在の値、次の値、次への移動)をすべてサポートしていないことです。 Clojureは3つすべてを実行できます。Clojureでは、これを正しく行う方が簡単だと思います。 Pythonにもコルーチンがあります。私はそれを解読してみたいと思います。 http://clojure.org/sequenceshttp:// www。 try-clojure.org/
実際、入力が http://oeis.org/A007401 のように無限シーケンスである場合は、lazyが唯一の方法です。