2013-03-02

変数に型がないということの利点について考える」の何が良くないの

ふえぇ・・・これの話ですよぅ

変数に型がないということの利点について考える」

http://d.hatena.ne.jp/perlcodesample/20130227/1361928810

この記事の内容についてはですね、多くのなーどの皆さんが、「何言ってんだこいつ」の気持ちを抑えきれずにいたんですけどね。

特に話題が「型」なものですから関数型もひかんの皆さんが我慢できずに、「ひゃっはー汚物は消毒だー」とばかりに集まって大騒ぎする事になってしまったわけです。(ほとんどTwitterから来たんじゃないですかね・・・)

そりゃぁ、ガタイのいいお兄様達が火炎放射器構えながら、端正込めて書いた記事を炎上させれば、主様の頭に血が登るのも当たり前の話ですか。

わざわざ、こんなブログを定期的に更新する主様の事ですから、きっとプログラムが好きなのでしょう。でもきっと、「プログラム」が好きという点については、もひかんさん達負けてません。負ける気がしません。だからもひかんさん達も、自分達の足りない脳みそ使って、勉強してるんです。

『「静的型付け言語」と「動的型付け言語」ではどっちのほうが良いんだろう。そもそも「静的型付け」「動的型付け」ってどういう事なんだろう、っていうか第一「型」って一体何ものなんだろう・・・?』

答えを求めて、勉強してるんです。



僕もそんなもひかんさんの一人です。低い知能で出せるだけのぱわーを出して、それなりの勉強をしてきてます。だから言うんですよ。

「お願いだから、間違った事を間違ったまま広めないで」って。

これはね、別に「間違っている」事を責めているのでは無いのです。そんなもの、記事の冒頭に「僕が間違ってましたふひひさーせんw」って一言付け加えたなら、皆納得するんです。

そうじゃなくて、明らかに間違った事を間違っていると指摘しているのに、「いや、僕は間違っていない」と言い続けている事に問題があるのです。

そうです、件の記事の内容は、残念ながら・・・誠に残念ながら、その多くが間違っているんです。

具体的な間違いの内容は、コメント欄や多のブログ記事で散々指摘されいるので、僕が今更蒸し返すのは野暮でしょう・・・ただ、困ったことに主様はそれが「実感」として得られないので、何が間違っているか解らないのでしょう。

解らない事は恥ずかしいことではありません。ツーステップ以上登った先にある事を実感するのはとっても労力がいるものです。僕だって今、圏論Haskellモナド関係についての厳密な説明を求められたら、泣いて謝るしか無いのです。



では、主様が今、件の記事の指摘の内容を実感するためには、どうすれば良いのでしょう?僕からは、ふたつ、提案する事ができます

ひとつ・・・僕が散々言っているように、「お勉強しましょう。僕はHaskell大好きなので、型を学びたいのであれば迷わずこの言語を学ぶことをお勧めします。多分、実用に耐えうる言語の中では最も型がしっかりした言語じゃないかなって、思うんです。

そしてね、お伝えしておきたいのはこの言語、ParlやRuby使いさんがビックリするくらい柔軟で簡潔なんですよ。静的型付け言語無駄が多いなんて、とんでもない事です。

他の言語お勧めしている方も居ましたね。

うーん、僕は、OCaml良くわからないですが、Scala直積型を再現するのが面倒な印象ありますです・・・

もう一つは・・・言語は何でも良いです、何か静的型付け言語を使って、それなりに大規模なもの・・・できれば二人以上で実装してみてください。それが終わったら、もし動的型付け言語で同じ事をしたらどうなっていたか想像して見てください。きっと主様は、件の記事を上げたことを、後悔する事でしょう。



最後に、僕が言いたい事はですね・・・

「型」ナメんなヴォケが(# ゚Д゚)

って事なんです。

プログラミングの型は、プログラマが間違いを犯さないために、プログラミング言語がわざわざ用意してくれているものです。そしてその基礎になっている理論は、コンピュータ真空管だった時代から、今にかけて、ずーっと研究され続けているテーマなんです。だから安易に「型がないことによって、たくさんの面倒から解放されるからです。」なんて、すっとぼけた話が通用するほど簡単な世界じゃないのです。

型は、主様が考えているよりも、もっと強力で、もっと柔軟で、僕や、主様や、なんとなくこの日記を除いた誰かさんプログラミングを大いに手助けしてくれる凄いものなんです。それが動的型付けの言語だって、型の考え方は実装の指針を示してくれます。どうです?もっと型の事を知りたくなって来ませんか?

最後に、「本物のプログラマHaskellを使う」から、いくつか引用して終わります。ばーいばい。

http://itpro.nikkeibp.co.jp/article/COLUMN/20080108/290605/?ST=develop&P=1

型がテスト自動化の道具であるという概念は、最初は理解しにくいかもしれません。しかし、Haskellのような強い静的型付けの言語に慣れるにつれて、こうした考え方を自然ものととらえられるようになります

検査をうまくテストの道具として利用することで、問題自体が生じるのを防いだり、問題により近い部分で対処できます

型のわずらわしさを克服し、型での静的なテストに慣れて型検査メリットを実感するにつれて、「型を考えること自体がプログラミングである」と理解し、「型によってバグを防ぐためのテストコード」を当たり前のように書けるようになります。こうした感覚を身に付ければ、一人前のHaskellerになったと言えるでしょう。

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん