雑 談 専 用 ス ッ ド レ ★ 25at PATISSERIE
雑 談 専 用 ス ッ ド レ ★ 25 - 暇つぶし2ch506:名無しさん
14/04/25 07:10:16.19 5vjeFuFfI
>>496
> そもそも読みづらいというわけではないよ。

読みづらいか読みづらくないかというのは、主観に依存する。
小学生にとっては「りんごが3個」とかの方が、「x=3」よりも読みやすいだろう。
また用途にもよる。なんでプログラミング言語がたくさんあるかといえば、
用途によって適不適があるからだ。

その中で手続き型言語というのは、可もなく不可もなく、
どんない用途にも、そこそこ書ける。
くせのある言語だと、特定の用途にはすばらしい使いやすさを発揮するが、
向いていない用途は、まったく使いものにならないほど。

> むしろ言語自体の理解が進めばすっきりしたコードで保守しやすい。

ということで、プログラマの言語の理解度の問題ではなく、言語の用途の問題。

> あと遅いというのはうそだな。

自分で引用している文章を読んでないか、そもそも読む能力がないのかしらんが、
なぜこのベンチマークでhaskellが異常に速いのか、ちゃんと理由が書かれている。
それが「遅延評価」。遅延評価というのは関数型言語の大きな特徴。
(まあ最近では手続き型言語でも部分的に導入されているけど、本家本元は関数言語)。

簡単にいえば、読んで名のごとく、必要になるまで実行しない(実行を保留(遅延)しておく)。
手続き型言語の場合、「足し算をしろ」と指示すれば、基本的にその時点で
足し算が実行される。しかし関数型言語では、足し算の結果が本当に必要になるまで、
足し算は実行されない。

まあ手続き型言語でもコンパイラの最適化で、ある程度演算の順序を変えたりするけど、
あまりダイナミックにはできない。それは関数型言語は副作用がないという特徴をもって
いるから。ただこの辺は難しすぎるので省略。

んで、ベンチマークプログラムのように、無意味な処理をさせるプログラムだと、
この遅延評価が働いてしまって、そもそも処理が行われないことがある。
結果が必要ないと判断され、結果が必要ないならそもそも計算する必要ない、と判断し
計算が実行されない。

通常のプログラムなら、不要な処理は省いてくれた方が好都合なのだが、
ベンチマークの場合それじゃ困るわけだ。つまりこの結果は「処理速度を比較する」という
本来の目的を正しく示していない。

ま、ひとことでいえば、このベンチマーク結果を持って、haskellの処理速度を
他の言語と比べることが無意味。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch