Today アクセスカウンター Yesterday アクセスカウンター

ホワット・ア・ワンダフル・ワールド

私は知識に何ものかを付け加え,また他の人々がより多くのものを付け加える手助けをした --- G.H.ハーディ

全記事一覧 << 2008/07 12345678910111213141516171819202122232425262728293031 2008/09 >>

プロフィール

あろは (alohakun)

  • Author:あろは (alohakun)
  • 若槻俊宏 (WAKATSUKI toshihiro)

    連絡先 : alohakun ___at___ gmail.com
    mixi : http://mixi.jp/show_friend.pl?id=182927
    twitter : http://twitter.com/alohakun

    abstract

    プログラミングという人間の知的行為を体系化し,単なる職人芸ではなく,サイエンスにするための研究をしています.

    具体的には,等価変換計算モデルに基づいた,仕様記述からのプログラム合成の研究をしています.

    もっと噛み砕くと,プログラムの正しさをどのように定式化し,どのような枠組みで,どのように変換を進めていけば,正しさを保証したまま,効率的なプログラムを手に入れることができるのか,ということについて研究しています.

    キーワード : equivalent transformation, computation model, programming paradigm, formal specification, program synthesis













    あわせて読みたい


    この日記のはてなブックマーク数


    スカウター : ホワット・ア・ワンダフル・ワールド


    Map









    FC2 BLOG RANKING

FC2カウンター

ブロとも申請フォーム

この人とブロともになる

ホーム

C# on Rails

2006/02/23(木) 17:20:28

非常に面白いブログだったので,メモ.

分裂勘違い君劇場 劇的に生産性を向上させるメタオブジェクト技術とRuby on Railsの陳腐化の宿命(Java、C#)

# 煽りと喧嘩が大好きな方らしいので,トラックバックはしないでおこう.怖いから (^-^;

# このタイトルからもわかるように,どこまでが本気かわからないところに好感が持てます.

C# は,エッセンシャルズMono を斜め読みした程度しか知らないのですが,「ユーザ定義可能なカスタム属性による言語仕様の拡張」とか「リフレクションによる動的なクラス生成や実行時バインディング」なんかは,ちょっと面白いなと思っていました.

このブログでは,C# のこれらの言語仕様を MOP (Metaobject Protocol) と呼んでいたのが新鮮でした.

なるほど,もはや C# は,C の延長線上の言語と考えていてはいけないのですね (笑)

# この用語は,Common Lisp 上にオブジェクト指向システムを構築する際に用いられた概念からきています.

Ruby が,そのスジの人々に熱狂的に受け入れられたのは,きわめて Lisp に近い言語だったからというのもあると思います.

この観点から見ると,C# もなかなか Lisp だなと.一応 C# は静的型付けの言語ということになっていますが,マネージドな言語はある程度ここらへんが柔軟になりますからね.ネイティブコードは時代遅れになっていくのが道理だと思います.

# Paul Grahama がニヤニヤしてそうですね :-)

あと,Rails が,別に Ruby で書かれる必然性はない (Rails の有用性 ≠ Ruby の有用性) とか,アスペクト指向はメタプログラミングの一形態に過ぎないとか,以前からぼんやりと思っていたことがまとまっているような気がして,ちょっとうれしかったです.

ここらへんの,再利用とか DSL とかまでを含む話は,卒論で散々書いてきたばかり なので,いろいろと感慨深いですね.

# ちなみに,私は Rails が何なのかさえよくわかっていないので,この記事は話半分で読んでいただくとありがたいです.また,Ruby を批判する意図,喧嘩する意図も全くありません.単なる一般論です.

これを突き詰めて行くと,結局プログラミング言語自体の重要性は薄れてきて,仕様記述手法と,仕様からのプログラム合成が中心になっていくのだと思います.

# 私は,現在主流の,仕様記述手法を言語仕様に混ぜ混んで行くやり方には否定的です.

それは現状ではまだ極端としても,重要なのはライブラリなりフレームワークなりであって,言語自体はそれを呼び出せればよいとなりつつあるような気がします (そしてこれが .NET の根本思想なのでは).

この観点から見ると,そもそも 『「Ruby」 on 〜』 『「C#」 on 〜』 という発想自体が,前時代的という気さえしてきます (言語なんて,単なるライブラリやフレームワークを張り合わせる糊 (グルー) に過ぎないという発想).言語屋さんは面白くないでしょうが.


ちょっと今時間がないので,支離滅裂な文章になってしまいましたが,いったんこの辺で打ち切ります.

金〜日は入試で大学に入れないため,今日中に,研究室の PC を撤去し,机を完全に片付けなければならないのです.そしてもう来週からは,北海道での新生活が始まります.

# 引っ越しのため,ここしばらくばたばたしています.なかなかネットにアクセスできず,mixi やブログのコメントもだいぶ放置になっていますが,落ち着いたらレス書きますので,もうしばらくお待ちください m(_ _)m
Mono/C#TB:1CM:2 このエントリーを含むはてなブックマーク | livedoorクリップ livedoorクリップ BuzzurlにブックマークBuzzurlにブックマーク newsing it!

C#への期待.アンダースからの返答

2006/02/22(水) 16:56:35

(via 僻地のプログラマkmt-tの日記 2006-02-21 風邪引いてダウン中)


@IT > Insider.NET > Insider's Eye > C#への期待。アンダースからの返答 より引用

C#自体や将来に対する疑問、他言語に対する意見

■今後C#は、関数型言語(=ラムダ計算モデルを理論的な基盤とした言語)に特化していくことになるのか?

 答えは「はい」だ。C# 3.0やLINQプロジェクトで導入された機能(例えば「ラムダ式」など)というのは、HaskellやML(Meta-Language)などの関数型言語に触発されたものだ。

 実際、これらの機能は開発をもっと自由な形にする。設計しているだけでワクワクするような機能だ。C# 3.0というのは、オブジェクト指向言語と関数型言語のハッピーな結婚といってよいものになるだろう。


やっぱり (笑) λ式に,ZF 式 (SQL) に,型推論とくりゃあね.

# C# は,過去のしがらみ (C) に縛られない C++ ですな.すごいとんがっている.面白いから,この調子で暴走していって欲しい.たぶん C# 9.0 あたりでは,単一化だのナローイングだのが加わって,関数論理型言語になってそう w

あと,やはり C# という名前は,C+++++ というだけではなく,音楽用語からもきてたんだ.

# 外人は,ドレミファソラシドを,CDEFGAB と言ったりします.つまり,ドの音が C,半音上がったドが C♯ です (笑)

なんか,sumii さんが欝っぽい日記のコメント欄で言っていた 『我々の業界だと「世間では四角い車輪が主流だが、学者は丸い車輪が良いと言い続け、ようやく最近では五角形の車輪が使われ始めた』 という含蓄のある言葉を思い出しました :-)


■ C# 3.0では、型推論によって読むのが難しいコードになってしまうのではないか?


そういえば,リファラ経由で知ったのですが,NyaRuRuの日記 2006-02-18 言語は 芸術的で、科学的で、ときに無力だ。 で,『C#に高階関数が無いことを考えると型推論で有意にコストが爆発するということはないだろう』 という言及がありました.

私はプログラミング言語自体の機能や構文はどうでも良くて,重要なのは開発方法論なりフレームワークだと思っているんで,型推論でコンパイルコストなり,インテリセンスなりが激重になってしまったら,確かに本末転倒だなぁと.

/** 余談

「C# に高階関数がない」 というのは本当なのでしょうか ?

そもそもオブジェクト指向自体が,クロージャとコインの裏表の関係にある ※ と思いますし,デリゲート (やイベント) が第一級市民の C# は,もはや *五角形の* 関数型言語なのでは ?

※ 「オブジェクト」 (状態を持った関数 = クロージャ) は,関数 (メソッド) の引数にも返り値にもなり得ますし,変数に束縛することもできます.手続き型言語の世界で OOP が熱狂的に受け入れられたのは,現実世界に関連付けられた,直感的にわかりやすく,理解しやすいメタファを通して,それまではアカデミックな世界のものであった,高階関数という強力なプログラミング手法を計算機の世界に導入できたからだと思います.

結局使いすぎるとヤバいのは,無名のクラスなり関数なりのような気がします.名前による抽象化は偉大だ.

# 人間はものに名前をつけることで,本来何もない世界に意味を与え,万物を認識しているのです.「なまえのないかいぶつ」が名前を欲しがるわけですね.
*/

Perl の設計者は,複雑な現実世界を相手にするために,言語には自然言語のような乱雑さが必要だと言っていましたが,型推論はとても「古典」に似ていると思います.

昔の日本語は,全ての主語が省略されていて,敬語の度合などで主語を推論したそうです.でも,一切主語がないので,現代人にはとても読み辛い.古典のテストにはいつも泣かされていました (苦笑) 何でも,昔の人は偉大ですね.

逆に,英語は一切主語の省略を許さないので,時にうるさく感じます.

同じ静的強い型付けの言語でも,型をこまめに書く Hakeller,あんまり書かない MLer など,いろいろな流儀・文化があるみたいです.

プログラムも文章の一種なので,現代語のように,微妙に変化を続けながら,そのうち落ち着くところに落ち着くのでしょうね.

型は可読性のために,適度に,読者 (プログラマ) のことを考えて入れると.プログラミングには,国語と同じ様な文章能力が要求されるようになるのかもしれませんね.相手 (読む人) のことを思いやり,想像力を働かせ,なるべく読みやすいように書くと.

/** 余談

その気になれば,プログラムで叙情トリックも可能に (笑) 「俺」 は実は猫だった,「撲」 は実は女だった,実は主人公が多重人格者で,登場人物は全て脳内だけの存在だったなど.表現力が高まるのも考えものですな w あと,コギャル (死語 ?) の言葉なんかは,推論が難しそうだ (笑)
*/
Mono/C#TB:0CM:3 このエントリーを含むはてなブックマーク | livedoorクリップ livedoorクリップ BuzzurlにブックマークBuzzurlにブックマーク newsing it!

最近のコメント

リンク

このブログをリンクに追加する

最近のトラックバック

人生の残り日数

日本人男性の平均寿命は 28700日.

RSSフィード

カテゴリー