ページへ戻る

− Links

 印刷 

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

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

  Next »[4]
* ぐいぐい01に関するメモ-03
-(by [[K]], 2008.04.28)
-メモのうち重要な部分をそのうちまとめてまともなページを作る
*** (12) 標準ライブラリ不要論?
-C言語には一般にprintfやputsやfopenなどの標準ライブラリというものがある。これの何がありがたいのかというと、これらの関数だけを使っている限りにおいてソース互換が達成されて、CPUやOSが違ってもソースコードを流用したり共用できるというものである。・・・まあでもこれは建前で、現実にはエンディアンやint幅の違いでただの再コンパイルだけではうまくいかない場合も少なくはない。
-さて「ぐいぐい01」を使えば、このようなライブラリに頼らずともソースの完全互換どころかバイナリまで互換になる。エンディアンとかintの幅とかが違う心配も全くない。環境によって処理速度や画面の解像度が違うといった程度の際で、これは同じAT互換機間でも生じうる差だから、事実上、機種の違いはないといっていい。
-そもそも標準ライブラリというのはオーバーヘッドが大きい。なぜならANSI-Cで定められた仕様を満たすために実際のAPIをラッピングして実装されており、直接APIを呼び出すのと比べればどうしても遅くて大きくなる。「ぐいぐい01」アプリでありさえすれば互換性について気にする必要なんかないのに、どうしてわざわざ効率の悪い標準ライブラリを使う必要があるだろうか。
-「ぐいぐい01」がエミュレータを使わずに互換性を提供できる範囲は、確かにそんなには広くない。というのはIA-32でなくてはいけないからである。しかしちょっと考えてみてほしい、今IA-32が使えない環境がどれほどあるだろうか。MacもIA-32になってしまった。TOWNSもPC-98も昔からIA-32だ(PC-98の286までの機種を除く)。・・・なるほど、[[K]]のお気に入りのGBAなど、IA-32ではない機種も確かに存在するが、それはどちらかというと組み込み環境であって、そういうものではそもそも標準ライブラリが完全に用意されているとは限らない。
-この考えで行くと、標準ライブラリを使わないようにすることで失われるのはX68Kとのソース互換やPowerPCマックや68マックとのソース互換くらいなものである。逆に標準ライブラリよりも「ぐいぐい01」のAPIを直接使うようにすれば、オーバーヘッドが少なくて効率が良いアプリが得られるわけで、この利益はX68Kや旧Macとのソース互換をあきらめても十分につりあうものだと思う(X68Kや旧Macしかもっていない人が、「ぐいぐい01」アプリを使うためにX68Kや旧Mac程度の処理能力の中古PCを代替で購入したとしても、そのコストは十分に小さいと考えられるから。しかもOSASK上でで動かすことにするなら、アプリの高効率性との相乗効果で、さらに1ランク下のPCでも十分かもしれない)。
-ということで[[K]]は、「ぐいぐい01」が出来上がって行くにつれて、自作アプリでは標準ライブラリを使わなくして行こうと思う(今後はwin32アプリなどはほとんど作らない予定)。そしてそのうち忘れちゃうんだと思うけど、それでも忘れないように努力するみたいなことは一切しないと思う。そんなことするくらいなら「ぐいぐい01」のAPIを覚えておくほうがマシだと思う。

* こめんと欄
#comment

  Next »[4]