LLとOO

正直、C なんかを書いていると、変数に型があって、いちいちそれをかかされることについて、(LL的な意味で)「重いなぁ」とはあんまり思いません。もう「どっちでもいいじゃん」って感じ。Perl と C を比べたとき、静的型とか動的型とか大して「軽さ」に影響してないよね?、と思います。*1

が、C# とか C++ とかを使っていると、静的型があるのが苦しくて苦しくて仕方がない。もう、「こんなにも・・!!、こんなにも苦しいのならば型などいらぬ!!」(by *「ふっかつのじゅもんがちがいます。」さん)ってくらい苦しくて苦しくて仕方がありません。



これは単純にポリモーフィズムのお話で、静的型付け というよりは、nominal subtyping が脳のリソースを大きく引っ張っていく割に、作りたいことの本質ではないから。動的型付OOPLとか OCaml*2 のような、structural subtypingのほうが ぜんぜん Lightweight に感じます。

ここら辺は、イルカとサメとイクチオサウルスは、同じような機能を持つけれど系統は全然違う、な、ジレンマと言えば解りやすいかしら? イクチオサウルスは実装継承としてトカゲさん達の仲間という継承木の中にいるけれど、「イルカのように泳ぐ」を必要とする文脈では「イルカのように泳ぐ」型から派生されていなければいけない、というヤツです。(動物ネタで喩えるのはOOP説明の 禁則事項だったりしますが、ゆるして(^^; )



「脳への軽さ」にはいろいろは手法がありますから、こういう結論は乱暴ですが、 LL と 非LL というのは、OOP が台頭してきてからこそ強く意識するようになったんじゃないかしら?nominal subtyping のあまりの苦しさ が対比に意識せざるを得ないコントラストを与えたんじゃないかしら?、と勝手な想像をしています。

以上、あくまで私個人の印象のお話でした。

補足

関数型言語のことはよくわかんないので、大嘘をついている可能性は大なりです。LLって、関数型言語の持つ脳へのみょうな軽さってのが敷衍していく課程で生まれた泡みたいなものなのかな?とも思います。

でも Perl の軽さって、そこよりはキッチンシンクって慣れると居心地いいよね?って軽さのような気もするのですよね。(←私はPerlを愛用してないので、薄っぺらな意見ですが)

むー、今回のエントリは我ながら穴だらけですね...orz
LLってなんだろう。

*1:Cを静的型付けと言っていいものか――というのはあります。(^^; 本当は Pascal あたりを引っ張り出してくるのが正しいんじゃないかと思うのですが、あたしゃ使ったことないので。

*2:最近勉強しています。愉しい♪