Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

言語拡張の功罪

C++は、言語拡張にとても慎重だ。
ライブラリでカバーできることはライブラリでやる、という哲学がある。

C#は、割とホイホイ言語機能を拡張する。
もちろん、開発しているのが事実上Microsoftだけだから可能という要素もある。

ネタ元:【落とし穴】 イテレータはラムダ式、匿名メソッド内では使えない

「yieldステートメントは、匿名メソッドまたはラムダ式の内部では使用できません」というエラーがでている。
どうしてダメなんだろうか。
それはきっと、yieldはプログラマの知らないうちに匿名クラスを作っていて云々とか、そういうよくわからない理由があるのかもしれない。
直感的には、使えてもいい文脈だと思う。が、処理系の実装上、ダメ。そういうのは汚い。

言語拡張が悪いことだとは言わない。
けれど、一見できても良さそうなことが、こっちの場合にはOKだけどこっちの場合にはダメとか、いわゆる忌み嫌われる「場合分け」が多くなってきてるんじゃないかと思う。
switch文で幾度も分岐しているような感じがする。
そんなのはコンパイラを作る人も大変でしょう。

C++はD&Eなんかで、「どうしてそういう設計になっているのか」が説明されている。
「The D&E C#」が是非とも読んでみたい。DとEにF(Future)もつけてくれるといいな。
どうですかね>ヘジたん

投稿日時 : 2008年4月4日 18:24

Feedback

# re: 言語拡張の功罪 2008/04/04 18:48 アキラ

コンパイラの実装コストが高いという理由で
言語拡張が見送られることもあるみたいですけどね

C++0xでもpolymorphic lambda(ラムダ式の引数の型省略)はそういう理由で見送られているので

# re: 言語拡張の功罪 2008/04/04 21:19 NyaRuRu

>直感的には、使えてもいい文脈だと思う。が、処理系の実装上、ダメ。そういうのは汚い。

波村さん曰く,「失敗」だそうです.
あとであった方が良かったと分かっても,もう引き返し可能地点は過ぎているというパターンかと.

# re: 言語拡張の功罪 2008/04/04 21:29 NyaRuRu

>波村さん曰く,「失敗」だそうです.

ちなみにネタ元は先日のデブサミです.
http://d.hatena.ne.jp/NyaRuRu/20080215/p3

タイトル
名前
Url
コメント