関数型言語Part2
■ このスレッドは過去ログ倉庫に格納されています
0803デフォルトの名無しさん
NGNG高速化を狙うなら関数型言語は良いと思います。
最近メモリーや演算回路はどんどん高速化していますが、データを要求してから
レスポンスが帰ってくるまでのターンアラウンドタイムが伸びがちです。
メモリーはランバス等の登場で転送速度自体は高速化していますが、
反面、データリクエストに必要な時間は複雑な回路を動作するため時間が非常に
かかります。
演算回路も動作クロックが高速化していますが、パイプライン段数は大きくなる一方です。
多分回路間の距離の問題だとおもうのですが、言えることは
小さい回路の高速化は簡単
データ転送量は大きくしやすい
ターンアラウンドタイムは縮まらない
これらは物理的問題と思われるため悪化しても改善しない
こういう状況では OOPL は、ものすごく不利です。
たとえば、OOPL の特徴のひとつで、オブジェクトの参照を駆使しますが、
参照というのは非常に小さいデータで、さらに参照先のメンバ変数を参照する
などということをしようものなら、CPUはひたすら小さなメモリーリクエストばかりと
いうことになります。
これではまるで、ダンプにうまい棒一本のせて右往左往するようなもので、
コンピュータの高速化の恩恵は期待できません。
また、深いパイプラインは分岐に非常に弱いです、メソッドを呼び出しまくると
実行時は分岐だらけです。
反面、関数型言語では、大きなデータのコピーが可能だと楽になる。
深いパイプラインには命令スケジュールが必須だが、それに必要な計算依存関係が
明白なプログラミングスタイルである。
そういうわけで、現在のプロセッサでも関数型を高速化に使うのは悪くないと思います。
その延長線上に非ノイマン型があってもいいんじゃないかなと思います。
これからの言語の方向性として関数型言語のライブラリとしてOOPサポートライブラリを入れるのが良いのではと思っています。
そんな訳で、関数型のメリットはだんだんと大きくなってきていると思う今日この頃です。
C言語的な利用目的の現代的な置き換えができないかと思ってたりします。
■ このスレッドは過去ログ倉庫に格納されています