2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

雑 談 専 用 ス ッ ド レ ★ 25

498 :名無しさん:2014/04/25(金) 07:10:16.19 ID:5vjeFuFfI
>>496
> そもそも読みづらいというわけではないよ。

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

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

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

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

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

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

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

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

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

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

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

総レス数 1001
223 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★