- 【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
676 :デフォルトの名無しさん[sage]:2014/08/16(土) 13:27:39.72 ID:pCqm9jUF - >>670,674
「(Haskell に代表される遅延評価を基本とした)純粋関数型言語では プログラムの自動並列化が容易/可能」 という主張には、大きな盲点(あるいは詐欺)がある それは >>673 の最終段にある 「ほとんど全てのコンピュータのハードウェア実装は命令型である。」 という純然たる現実を(意図的に?)無視している点だ >>672 が言うように、関数型言語の計算モデルであるラムダ計算には もともと計算順序という概念が存在しないから、原理的には自動並列化は可能である しかしそのプログラムを実行するのは命令型CPUだから、(逐次処理にせよ並列処理にせよ) 先行評価または遅延評価(あるいは他の評価戦略)といった計算順序を持ち込まなければ、 プログラムを命令型CPUコードへ翻訳(コンパイル)できない このプログラムとヘードウェアとの間に立ちはだかる技術的に大きな壁は 「意味論的な隔たり(セマンティック・ギャップ)」と呼ばれ、長年の研究テーマになっていた 結果として、意味論的に命令型CPUに近い先行評価を採用した最初の関数型言語である LISP は1960年代には実用的な処理系が存在していたにもかかわらず、遅延評価を採用した 関数型言語の実用化には、それから20年を経た Miranda の登場を待たねばならなかった だから冒頭の間違った主張を正しく書き直すと以下のようになる 「関数型専用CPU上での実行を前提条件とすれば、 純粋関数型言語ではプログラムの自動並列化が容易/可能」 現実には Intel 系に代表される命令型CPUが主流だから、この主張は幻想と言わざるをえない
|
- 【Python】スクリプト バトルロワイヤル45【pl,rb,php,js】
679 :デフォルトの名無しさん[sage]:2014/08/16(土) 13:59:21.32 ID:pCqm9jUF - >>677
そのとおりだよ でも、言葉で「ギャップを埋める」と言うのは簡単だけど、 Haskellコンパイラの中の人達はロックやセマフォといった 泥臭い並列化プリミティブと格闘しなければならない 実際にこのギャップに挑戦しているのが たとえば Parallel Haskell というプロジェクトだけど、 今のところ実験的な実装に留まっている もしも: ・GHCの公式リリース版にこのプロジェクトの成果が反映され、 ・デフォルトで並列化が有効とされ、 ・適切な並列化アルゴリズムで書かれたプログラムであれば アムダールの法則を打破できる、すなわちコア/プロセッサ数に 正比例して計算速度が向上できる ようになれば、Haskell における並列化は実用化されたとみなせる 現状は最初の一歩を踏み出したレベルだから、(その将来性は否定しないけど) 現時点での「Haskell なら楽に並列化できる」という断定は、 あまりに性急すぎると考える
|
- Ruby 初心者スレッド Part 55
318 :デフォルトの名無しさん[sage]:2014/08/16(土) 19:08:17.04 ID:pCqm9jUF - Programming Ruby 2.1 が出版されてから
翻訳を検討し始めるのではないかと思われ Ruby 2.2 リリースとの熾烈な競争になるなぁ(棒
|
- Ruby 初心者スレッド Part 55
321 :デフォルトの名無しさん[sage]:2014/08/16(土) 21:43:07.02 ID:pCqm9jUF - >>320
コードの可読性が数学における表記法との類似性を指すのであれば: >> if [1, 2, 3].include?(foo) が最も類似していると思う もしコンパクトさを最重要視したいのなら、 Ruby では識別子に UTF-8 文字が利用できるから、 以下のコードを書けばいい irb(main):001:0> module Enumerable; alias ∈ include?; end => nil irb(main):002:0> [1, 2, 3].∈ 2 => true irb(main):003:0> [1, 2, 3].∈ 4 => false irb(main):004:0> (2ch では「∈」という文字が化けている可能性が高いけど、 これは「ある要素が集合に含まれているか」を表す数学の記号)
|
- Ruby 初心者スレッド Part 55
323 :デフォルトの名無しさん[sage]:2014/08/16(土) 22:06:29.30 ID:pCqm9jUF - >>322
>>321 では「数学的表記との類似性」という視点でコードを示したわけで、 これが「Ruby的」とは一言も書いていない だから一体、何に対して過敏に反応しているのか、わけがわからんな 「Ruby的」とか「Rubyっぽい」というのは、>>320 の前半3つの書き方、 そのどれでも受け入れ、その中からどれを選択するかはプログラマに 任せるという「寛容な設計哲学」にある(と、個人的には考える) これの「Rubyらしさ」は、常にプログラマへ「論理的に合っててシンプルならいい」を 強要する Python とは対照的だね
|
- Ruby 初心者スレッド Part 55
326 :デフォルトの名無しさん[sage]:2014/08/16(土) 22:17:39.81 ID:pCqm9jUF - >>325
typo をいちいち揚げ足取りするほど野暮じゃないんで....
|