[RecentChanges] [AllPages]
(Late43210Latest)

WWW を検索oldtype.sumibi.org を検索

perl.TMTOWTDIの謎を探る RSSPLAIN

Related pages: kiyoka !kiyoka.blog.list kiyoka.2008_06_22 kiyoka.2006_09_09 !kiyoka.blog.2008_06 !kiyoka.blog.2006_09
553525555555555555555555353355555555551555555355155555555555555555555555355555555555555355555555555555533333343333333333333333333333330000
5

TMTOWTDIの謎を探る(調査報告:単純さと複雑さの関係とは?)

5

 

3
 この資料は、オリジナルは2002/05/10にkiyokaが書いた文章で、OldTypeに移してリンク切れ等をメンテナンスしたものです。
5
 オリジナル:TMTOWTDIの謎を探る(調査報告:単純さと複雑さの関係とは?)EXT
2
 kiyokaはこの少し後にPerlに影響を受けた処理系Gaucheと出会い、Gaucheをメインに使っています。
5

 

5

イントロダクション : 調べようと思ったきっかけ

5
 Perlって他のコンピュータ言語よりもなんか複雑じゃない?
5

個人的にはC言語よりもスラスラ書けるようになるまでの時間が長かったように思う。

5
それは、Perlの言語設計の哲学と関係があるんじゃないか?
5

そういえば TMTOWTDIと関係がありそうだ。調べるてみるとやっぱり関係ありそうだということになった。

5
TMTOWTDIというPerlのスローガンの本質が世間で理解されているんだろうか?
5

(少なくとも僕は、調べるまで本質を知らなかった。)

5
調べて、自分なりの結果を発表してみよう。
5

違うと思った方は、つっこみお願いします。

5

 

5

結論 : スローガンTMTOWTDIの本質って?

5

皆さん、TMTOWTDIがThere's more than one way to do itの略だということは御存知だと思います。「やり方はひとつではない」というスローガンです。

5

Perlの世界ではcoolとされている哲学をスローガンとして掲げたものです。

5

 

5

シンプルなほうが良いんじゃないの?

5

Q.でもなぜ?やりかたが少ない方がシンプルで良いんじゃないの?

5
A.それが違うようなのです。
5

Perlの設計者のLarry Wallは言語はいろんな対象をシンプルに記述するためには言語をある程度の複雑を持っている必要があると信じています。

3

次のような文章を見つけました(オープンソースソフトウェアという書籍からの引用です「努力、忍耐、謙遜EXT」の章)

5
 「我々がよく知っていることだが、現実とは乱雑な状態を指す。実際、人類の
3
 言語が複雑なのは、それが現実を扱わざるを得ないためである。」
3

(略)

5
 「そしてPerlは、それを可能にさせてくれる新しいツールなのである。私が英
5
 語を使って現実を単純化できるのは、英語が乱雑な言語だからである。英語は
5
 乱雑だからこそ、我われが現実と呼ぶ、これまた複雑な世界をうまく描写する
5
 ことができる。同じように、Perlも(できるだけ精密なやり方で) 乱雑になる
5
 ように設計されている。」
5

なるほど、スローガンTMTOWTDIの本質はここにあったんですね。

5

解説 : 僕なりにかみくだいてみました

5

「さっきの例え話はわかったけど、もうちょっと説明してよ。」という方のために次のようなグラフを作ってみました。

5

得意分野を扱った場合

5

まず、それぞれの言語が得意とする分野の問題を記述した場合。これは、言語の設計者が意図した使い方の範囲に収まった問題とも言えるよね?

1

perl.TMTOWTDI.1

5

 

5

この場合、どの言語もたいして複雑にならないということは分かるよね?

5

だって、それぞれの言語は最初は、ある特定の問題を記述するために設計したはずだから。

5

 

5

現実を扱った場合

5

それぞれの言語が得意かどうかにかかわらず、その言語でいろんな問題を記述しなければならない場合。つまり現実に対処しなければならない場合ね。

3

これは、言語の設計者が想定していた範囲を大きく超える問題を扱った場合とも言えるね?

5

例えば、tclやBASICで文字列のパターンマッチングやリスト処理やデータフォーマット変換なんかをやろうと思ったらキツいのは想像できるよね?

5

でもそれをやらないといけない状況が発生したと仮定すると?

1

perl.TMTOWTDI.2

5

 

5

なんとなく理解していただけましたか?

5

Perlのコードを日々書いている方は、Perlがどんな問題を扱うにしてもそこそこの許容範囲のコードで解決できることは経験的に知っているはずです。それって cool ですよね?

5

また、母国語(日本語) ならもっと、扱える範囲が広いことも知っているはずです。身近な例で言うとマイクロソフトなんかは強力な「それは仕様です」というコードを持っていますからね。これは Perlでは書けないですが、母国語ならシンプルに書け、扱う範囲の大きさもかなり広いです。(極端な例かもしれませんが...)

5

母国語は真の言語だけれどもPerlもなかなか良い線いっているんじゃないかな?

5

 

5

まとめ : TMTOWTDIはカッコいい

5

TMOTOWTDIのスローガンはなんとなくカッコいいと思っていたけど、これでカッコよさの意味がわかってきました。

5

Rubyにもこの哲学は引きつがれているので、Rubyも同じ考えかたが通用するのはうれしいですね。

5

TMOTOWTDIはカッコいいんです。自信を持ってカッコ良さを自慢しましょう。

5

 

5

参考資料

5

書籍等の資料

5
書籍名: Perlプログラミング第3刷
5
 著者:Larry Wall and Randal L. Schwartz
5
 訳者:近藤嘉雪
5
「はじめに」iiiから引用
5
 「そして、ある操作を行なう方法がただ1つだけ存在すべきだと信じるミニマ
5
 リストにとっては、Perlはまるで悪夢のように冗長で派生的であると感じられ
5
 るかもしれない。ともかく、UNIXのミニマリズム的なツールボックス哲学の枠
5
 から大きく踏み出すことによって、Perlは小規模から中規模の仕事に最適なツー
5
 ルとなり、再びツールボックスにしっくると収まるようになった。Perlは、新
5
 しいツールを作り出す工具職人の作業台であるということができるだろう。」
3

(略)

5
 多くの面で単純である反面、Perlが奥の深い言語であるのもまた事実であり、
5
 学ぶべきことは山ほどある。Perlの全能力を自分のものにするためにはかなり
5
 の時間がかかる。」
5
P12から引用
5
 「いずれにせよ、あなたの好きなように書けばよい。もしあなたがC言語に通
5
 じていて、その上でPerlを学ぼうというのなら、あなたの書き方はシェルスク
5
 リプトやBASICやRPG IIから入った人とは違っていることだろう。それでいい
5
 のだ --- 他人があなたと同じ書き方をすると期待してはいけない。Perlには
5
 *正しい*書き方というものは存在しない。Perlは、多様性に関してきわめて寛
5
 容な言語である。(Perlのスローガンを思い出そう) --- Perl の世界では、ま
5
 あまあ読めて、ボスにクビにされないうちに仕事を片づけられるものが*正し
5
 い*プログラムなのである。」
5

 

5

ネット上の資料

3
以下ラリー・ウォールの章「努力、忍耐、謙遜EXT」からの引用
5
 我々がよく知っていることだが、現実とは乱雑な状態を指す。実際、人類の言
5
 語が複雑なのは、それが現実を扱わざるを得ないためである。我々はみな、な
5
 んとかして現実に対処しなければならない。そこで、物事を単純化して考える
5
 のだが、単純化しすぎることがよくある。コピュータ言語の設計者の多くは、
5
 言語を単純化しすぎて、この世の複雑なところの面倒をすべてプログラマに押
5
 し付けている。実は、あなたの脳はPerlをプログラミングするようにできてい
5
 るのである。私はたったいま英語を使って現実を単純化しようとしているが、
5
 人は誰でも複雑なことを単純にしたいという強い要求を持っている。そして
5
 Perlは、それを可能にさせてくれる新しいツールなのである。私が英語を使っ
5<