Entry

空気読む Perl 空気読まない Java

2009年06月13日

今日,『プログラミングRuby』の2版を買った話をしてたんですけれど(買ったのです),同僚の名言が炸裂していたので紹介。ウケた。

プログラミングRuby 第2版 言語編
Dave Thomas Chad Fowler Andy Hunt
オーム社
売り上げランキング: 31235
おすすめ度の平均: 5.0
5 丁寧なチュートリアルです。
5 言語仕様を学べる最高の良書です。
5 非常に役に立つ面白い本
5 世界のルビイストに支持される本
5 わかりやすいです

同僚曰く。

空気読めるやつは Perl を使う。空気読めないやつは Java を使う。

とのこと。ここで,Perl や Java は動的型付言語と静的型付言語の代表を挙げただけなので,Ruby と C++ でもいいし,JavaScript と C でもよかったりします。あたしんとこの職場は,普段 C++ でプログラミングしているので,LL にはやや冷たいところがあったりします。それにもかかわらず,上の至言。自虐っぷりが笑える。

ここで,『プログラミングRuby』の話がなんで出てきたのかというと,本書に動的型付言語の話があって,それが話題になったからです。

もうお気づきのことと思いますが、Ruby では変数やメソッドの型を宣言しません。すべては何らかのオブジェクトです。

(snip)

大半の言語では静的な型システムが採用されていますが、それによってプログラムのセキュリティが実際に向上しているかというと、実はそうでもないのです。例えば、Java の型システムが信頼できるものだとしたら、ClassCastException などというクラスを実装する必要はないはずです。しかし、この例外クラスは必要です。なぜなら、Java では実行時に型が確実に決まらないことがあるからです(C++ や C# といった言語にも同じことが言えます)。

(snip)

一方、Ruby をしばらく使ってみると、変数を動的に型付けすることによって、さまざまな面で生産性が向上することが分かってきます。また、型が決まらないことで大混乱になるという心配には何の根拠もなかったということに気づいて驚きます。(snip)これはなぜでしょうか。

理由のひとつは、常識の問題です。

『プログラミングRuby 第2版 言語編』(Dave Thomas Chad Fowler Andy Hunt,オーム社,2006年,p315)

型安全に対する例外が出るのは,異常系として正常な動作なんだから,それはそれでいいんじゃないだろうか。実行時に型が決まらないことと,型安全でないことは,別の話の気がします。怖いのは,例外も何も出さずに,間違った型のまま一見正常に正常系に乗って動作することです。また,例外を出さずに,どっかしらのメモリ領域を壊すようなキャストを許す仕様についてもそう。

ともあれ,上記引用を反対解釈すると,Ruby は常識のないやつが使うと混乱する,ということになりそうなんだけど,それでいいんだろうか。使う人によって,混乱したりしなかったりするのー?いやーん。それなら,例外のひとつも出して,静的に整合性を保つほうがいんでね?とかとか。(やや喧嘩腰)

なんだか,動的型付言語の正当性は,微妙に空気嫁なところに集中している気がする。

米国のソフトウエア・コンサルタントとして名高いMartin Fowler氏のブログを読んで,その思いはさらに強くなった。Fowler氏は,自身のブログでこのように書いている。「SmalltalkやRubyでプログラムを書くと特別な満足感が得られる。それはきっと,動的型付けであることと関係があるのだろう。歯がゆいのは,動的型付け言語のメリットを,静的型付け言語のようにうまく説明できないことだ」

スクリプト言語人気に思う,動的型付け言語の可能性:ITpro

動的型付言語のメリットはうまく説明できない,と。

あたしの印象はというと,動的型付言語でも,最終的には型が決まるわけで,プログラマから見てそのタイミングが違うだけだと思っていたりします。で,LL の型がどこで決定されるのかというと,例えば Perl で言うなら「コンテキスト」なる概念(まさに文脈)に集約される。ということは,数値を扱う場合だったら,明示的に int と書く代わりに,どっちにしろ数値として扱われるように書かなくちゃいけないわけで,その基準は(裏側に言語仕様はあるものの)「常識」で判断できるということになっている。結局,型は書かないだけでそれなりに意識しなくちゃいけないわけで,そこら辺が文脈を読むというか,空気を読むというか,そういうお作法と重なるところがあるんじゃないかと思ったり。

「空気読む Perl 空気読まない Java」。名言。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN