ページへ戻る

− Links

 印刷 

GUIGUI01​/memo10 のバックアップソース(No.4) :: OSASK計画

osaskwiki:GUIGUI01/memo10 のバックアップソース(No.4)

« Prev[4]  Next »[5]
* ぐいぐい01に関するメモ-10
-(by [[K]], 2008.11.24)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (22) efg01は非常にOSASK的なソフトウェア
-OSASKはハードウェアの性能を完全に引き出すことを目的としているわけだが、それはつまり、ハードウェアが本来持っている力を全部出させてあげることである。それに対してefg01.exeを見ると、これはWindowsというOSが実は(こんな小さなパッチみたいなものだけで)ここまでできるんだということを実証していることになっているので、そういう意味ではOSが本来持っている力を出させていることになると思う(特にアプリのサイズについての本来の力を出させている)。
-この観点で見る限り、efg01は非常にOSASK的であり、単にその対象がハードウェアかOSかというだけの違いでしかない。そして僕はハードウェアだろうとOSだろうとなんだろうと、みんな実力を全部出せることは基本的にいいことだと思う。もちろんライバルが実力を出せずにいればそれだけ競争では有利かもしれないけど、そんなので勝っても意味はないと思っている。だからたとえライバルであっても、実力が出せるならそのほうがいい。
----
-「ぐいぐい01」アプリの正しい使い方。まあ別にどう使っても正しいんだけど(笑)。
--こういう使い方を推奨しているってわけじゃなくて、こういう風に使ったらどうですか、みたいなもの。
-WindowsとかLinuxのユーザ:
--たまに面白そうなアプリがあればefg01を使ってアプリを実行。
-旧OSASK/OSASK-HBのユーザ:
--標準APIなので普通にアプリを実行。
-MonaOSとかOSAkkieとかのOSのユーザ:
--ネイティブアプリをそろえるまでのつなぎ・踏み台として、efg01を経由して実行。特にいきなりコンパイラやアセンブラがそろっているのって結構うれしくないですか?もしネイティブAPI直接利用でもっといいアプリができたのなら、順次そちらに乗り換えていただくということで(そのアプリがたとえ機能性能的に劣っていたとしても、愛着があればそれもアドバンテージです)。
----
-アプリ資産を「ぐいぐい01」で持っておけば、気分でOSを毎日変更しても大丈夫(笑)。カーネルなんて飾りです?!・・・いろんなOSを気軽に使い比べられたら、それはとてもステキだと思うのだ。「ブラウザさえあればOSなんてなんだって同じ」なんてことを言う人が最近出てきたそうだが、「efg01さえあればOSなんてなんだって同じ」と僕は言えるようになりたい。
--仮に「ブラウザさえあればOSなんてなんだって同じ」が真だとすると、もしかしてfirefox.g01とかができたら、「efg01さえあればOSなんてなんだって同じ」も自動的に真になる???(笑)。
*** (23) efg01/OSASK-HBまでの道
-サイズ追求編:
--1.Win95って大きいなあ。DOSのサイズであれだけできたんだからもっと小さくできるんじゃないのかなあ。じゃあOS作ってみるか(OSを作り始めた動機は他にも多数)。
--2.結構小さいOSでもいろいろできるじゃん。こんなに小さくなるとは思わなかった。これってすごくない?うわ、アプリも超小さい。そういえばWinのアプリってみんな大きいのばかりだよね。なんであんなに大きいんだ?・・・よしOSとアプリのサイズをこのOSの特徴の一つにしよう。
--3.その後いろいろ作って徐々にスキルがあがる。その上がったスキルで、しかし初心者が付いていけないような難しいことは極力しないという制限を自分に課して、「はりぼてOS」を作る。そうしたらはりぼてアプリが、同じような内容のOSASKアプリよりもサイズで有利に(OSのサイズでも「はりぼてOS」は有利だが、旧OSASKよりも機能的に大幅に劣っているのでこれは比較できない)。
--4.これを見て以前から感じていた旧OSASKのAPIの設計の甘さへの不満が爆発。こんなAPIはもう許せない。今の自分ならもっといいAPIを作れるはずだ。
--5.そして設計。もちろんこのときは初心者への配慮なんてなくて、全力で設計。特にKHBIOS設計のときの経験が生かされる。「ぐいぐい01」ができる。そして当初の狙い通りアプリのサイズが劇的に改善。ばんざーい、現在に至る。
-どこででも実行できます編:
--0.動機は以前にも書いたが、自分がOSASKを使えるようになった今でさえ、たまにwin32アプリを作っていることに対する自己嫌悪。また以前からkhabaなどで環境に依存しないアプリを作ろうと志してはいた。以下は動機ではなく、技術的にこれはできるかもと思った経緯。
--1.かつてGOでwin32/Cの標準関数/OSASKの3対応ソースを作った。
--2.それを「ぐいぐい01」の設計中に思い出した。「つまるところ、OSに依存する関数をできるだけ減らした上でその関数をDLLにすれば、とりあえずDLLを交換するだけでどんなOS上でも動くわけだよな。」
--3.DLLの機構はOSによってフォーマットや仕様が違うので、そのままではアプリの共通化はできない。じゃあ、ロードとダイナミックリンクするプログラムとDLLを一つのアプリプログラムで提供すればよさそうだな。仕様さえ決めればこれは簡単にできそうだ。そしてこれらをやりやすい仕様を策定し、efg01も作ってみた。うまく動いた。
--4.最初はwin32版だけだったが、その後MonaOS版、Linux版、そして「はりぼてOS」版(=OSASK-HB)でもやってみたらうまくいった。これなら当初の目論見どおり、IA-32のOSなら多分なんだってefg01は移植できるぞ。ばんざーい、現在に至る。
-「ぐいぐい01」を作る過程で得た教訓(っていうかKHBIOSで得た教訓かも):
--IA-32用に作るからといって、IA-32ではどうしたらいいかを最初から考えて設計するな。まずどんな処理をやらせたい・できるようにしたいのかを明確に決めて、そのためにどんな命令・機能・仕様がCPUやOS(=efg01の移植先のOS)に「最低限」必要なのか制約なく考えろ。そしてそのような「最低限」の機能しか持たないが、それを効率よく実行できる都合のよいCPUが実際に実在すると仮定して(もしくはFPGAで誰かが作ってくれると仮定して)、そのCPUに最適な設計をまず作る。これはいわば最善解だ。・・・その上で、それをIA-32上に実装するにあたり、実CPUや実OSでの制約を意識し、妥協すべきところがあれば妥協し、そのまま行くべきところはそのままいく。これが最適解だ。最善解を出す前に最適解をだそうと横着すれば、CPUの仕様や得意なことを重視するあまりに(たとえばIA-32ならメモリはたくさん使えるのが当たり前なので、もっと節約できるところを見過ごしがち)、最善解を経由しないと見えてこないことに気付けないまま、全ての可能な設計を検討しつくした気になってしまう。

* こめんと欄
#comment

« Prev[4]  Next »[5]