ページへ戻る

− Links

 印刷 

design001 のバックアップ差分(No.4) :: OSASK計画

osaskwiki:design001 のバックアップ差分(No.4)

« Prev[4]  Next »[5]
3: 2008-07-02 (水) 04:08:21 ソース[6] 4: 2008-07-02 (水) 04:08:21 ソース[7]
Line 1: Line 1:
* 平凡プログラマ向けか、職人プログラマ向けか * 平凡プログラマ向けか、職人プログラマ向けか
-(by [[K]], 2008.07.02) -(by [[K]], 2008.07.02)
--このページは[[network_good]]の続編に相当します。+-このページは[[network_good]]の続編に相当します。[[network_good]]はdesign000ってことで。
*** (0) *** (0)
-たとえばCPUを設計する場合、どんな機械語(命令セット)を用意するかで性能は大きく変わります。このとき、誰でも適当にプログラムを書くだけでそこそこ性能が出る代わりに、がんばって最適化してもあまり性能が上がらないという設計方針があります(以降これをAタイプと呼ぶ)。一方で、適当にプログラムを書くとそこそこしか性能が出ない代わりに、職人プログラマが気合を入れて最適化すると爆発的に性能が上がるという設計方針もあります(以降これをBタイプと呼ぶ)。 -たとえばCPUを設計する場合、どんな機械語(命令セット)を用意するかで性能は大きく変わります。このとき、誰でも適当にプログラムを書くだけでそこそこ性能が出る代わりに、がんばって最適化してもあまり性能が上がらないという設計方針があります(以降これをAタイプと呼ぶ)。一方で、適当にプログラムを書くとそこそこしか性能が出ない代わりに、職人プログラマが気合を入れて最適化すると爆発的に性能が上がるという設計方針もあります(以降これをBタイプと呼ぶ)。
Line 32: Line 32:
--次に、平凡なプログラマがそのままでは使いこなせないのは目に見えているので、使いやすいライブラリみたいなものを用意します。このライブラリを使えば結構簡単に一通りの機能が使えます。でも性能は最高ではありません。 --次に、平凡なプログラマがそのままでは使いこなせないのは目に見えているので、使いやすいライブラリみたいなものを用意します。このライブラリを使えば結構簡単に一通りの機能が使えます。でも性能は最高ではありません。
--OSASKでいうと、lib_putstringみたいなのは後者で、前者に相当するのがI.Tak.さんのNASMプログラム、中間がlib_execcmdを使う方法です。これに対し、WindowsやLinuxではlib_putstringみたいな方法までしか考えられていません(もっと込み入ったこともきっと出来るが、そういう方法を一般に説明しようという傾向がないし、込み入った方法を使えばぐっと性能が出るというわけでもない)。 --OSASKでいうと、lib_putstringみたいなのは後者で、前者に相当するのがI.Tak.さんのNASMプログラム、中間がlib_execcmdを使う方法です。これに対し、WindowsやLinuxではlib_putstringみたいな方法までしか考えられていません(もっと込み入ったこともきっと出来るが、そういう方法を一般に説明しようという傾向がないし、込み入った方法を使えばぐっと性能が出るというわけでもない)。
 +--ライブラリに関しては、出来るだけ簡単さを損なわずに最高速度に近づけるように改良します。それが難しいときは中間くらいの難しさでそこそこ速く出来るようなライブラリも考えます。
-これに対し、世間の多くの設計はこうなっています。 -これに対し、世間の多くの設計はこうなっています。
---まず、平凡な利用者を想定し、これらが使う範囲での高速化だけを考える。しかも究極の高速化とか、最高性能とかはあまり考えていなくて、最近の普及機で実用的な性能が出ればそれでいいやくらいに思っている。 +--まず、平凡な利用者を想定し、これらが使う範囲での高速化だけを考えます。しかも究極の高速化とか、最高性能とかはあまり考えていなくて、最近の普及機で実用的な性能が出ればそれでいいやくらいに思っています。 
---自分より頭がいい人がいるかもしれないこと、そういう人たちがこの設計に不満を持つかもしれないことは想定していない。もし想定していたら、そういう人の期待にもこたえられるような拡張性を持たせるはずなんだけど、そうなってない。+--自分より頭がいい人がいるかもしれないこと、そういう人たちがこの設計に不満を持つかもしれないことは想定していません。もし想定していたら、そういう人の期待にもこたえられるような拡張性を持たせるはずなんだけど、そうなってないのです。
-「職人でなくても作れるようにしよう」には無条件で賛成ですが、「職人でなくても最高性能が出せるようにしよう」は現状では不可能だと思うので、賛成できません。不可能なのに、自動最適化でできる範囲を「最高性能」だと思い込むことでごまかす今のやり方は、むしろ有害だと思います。 -「職人でなくても作れるようにしよう」には無条件で賛成ですが、「職人でなくても最高性能が出せるようにしよう」は現状では不可能だと思うので、賛成できません。不可能なのに、自動最適化でできる範囲を「最高性能」だと思い込むことでごまかす今のやり方は、むしろ有害だと思います。
-そして平凡な人を「標準」とし、平凡なプログラムでどのCPUが一番いいかを競うなんて、なんかおかしいです。CPUの設計者が気合入れてベンチマークを作って、その結果で比較していいと思います。どう使えば一番性能が出るのか分かっている人が性能を出し切った状態で比較するべきだと思います。使い方も分からないような人が適当に比較した結果で優劣を決めてしまって本当にいいのでしょうか。・・・これじゃあまるでイチロー選手にサッカーをやらせて、なんだスポーツの才能はたいしたことないな、みたいなことを言うのと同じだと思います。野球をやらせたら天下一品で、そのために練習してきたのに。 -そして平凡な人を「標準」とし、平凡なプログラムでどのCPUが一番いいかを競うなんて、なんかおかしいです。CPUの設計者が気合入れてベンチマークを作って、その結果で比較していいと思います。どう使えば一番性能が出るのか分かっている人が性能を出し切った状態で比較するべきだと思います。使い方も分からないような人が適当に比較した結果で優劣を決めてしまって本当にいいのでしょうか。・・・これじゃあまるでイチロー選手にサッカーをやらせて、なんだスポーツの才能はたいしたことないな、みたいなことを言うのと同じだと思います。野球をやらせたら天下一品で、そのために練習してきたのに。
« Prev[4]  Next »[5]