BT

ループをやめるべきか?

| 作者: Jonathan Allen フォローする 595 人のフォロワー , 翻訳者 編集部 フォローする 0 人のフォロワー 投稿日 2008年4月10日. 推定読書時間: 2 分 |

LINQ、拡張メソッドおよび改善されたanonymous delegateが追加されたおかげで、もはや多くのアルゴリズムが明確なループを必要としていない。「ループを使用している場合、誤って実行している」 というタイトルの投稿メッセージで、Chuck Jazdzewski氏はC#の今後について予測をしている(source)

Chuck Jazdzewski氏は、 APLを教えている大学教授の引用句を情報筋として始めている。APL(source)は、1960年代からの言語であり、ベクトルおよびマトリクス操作に重点を置いてい る。ループが存在していながら、一般的には必要とされていなかった。Chuck氏は以下のように続けている。

LINQと同様、ループを使用している場合、誤って実行している。この頃、プロトタイプ化に没頭している。そして自分にLINQを使用するように無理強い している。それが嫌いだからではなく、それどころか本当にLINQを気に入っているからである。しかし、ループを使用することが精神に染み付いてしまって いるので、それを止めなければならず、無理にLINQを受け入れようとしている。集合や配列を含むループを記述しようとする度に、代わりにLINQを使え るかと、自分自身に問いかける。データベースバックグラウンド以上の知識があるプログラマは、極めて自然にLINQに慣れる。彼らはセットやベクトルで考 えるが、わたしはそうではない。しかし、徐々にそうなってきた。

Chuck氏は、LINQ式および拡張メソッドに大いに依存しているが、ループを完全に除去しているわけではない。1つには、それらを IEnumerable拡張メソッドに移動する必要があるからである。IEnumerable拡張メソッドは、呼び出し機能から複雑性を分からないように する。これは汎用機能Reduceのためにおこなわれる。それによりアイテムのリストを受け取り、適合する隣接するアイテムを結合する。適合基準および実 際の結合方法は、匿名機能としてパスされる。同様の機能を記述することが不要になる。

Chuck氏が示したコードの目標は、「空白」または「キーワード」のような範囲、テキストおよび名前のシーケンスを持つ機能を作成して、それにスタイルを適用することである。最後に、その機能は3つの照会ステートメントに要約される。

  • 空白領域を先行領域とマージする。
  • スタイルを範囲にマップする。
  • 隣接する範囲を同じスタイルとマージする。

たいていの評者は前向きな考えであるが、すべての人がこれが適した方法だと納得しているわけではない。Holger Flick氏は、以下のように書いている。

見出しは、「ループを使用している場合、それをアナライズする必要なしに、コードを読まれてしまうかもしれない」にすべきである。

誤解してもらいたくないのがだが、わたしはかなりLINQを使用しているし、好きだ。しかしながら、この場合、ソースコードを読んでも複雑すぎて理 解することができない。それゆえにIMHOの管理が困難である。たとえば単線アプローチを使用するのではなく、むしろ「複線」を使用する場合について書 く。

将来、C#コードはほとんどループがなくなることになるのか?ついでに言えば、それは良いことなのか?

原文はこちらです:http://www.infoq.com/news/2008/04/No-more-loops

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT