第四世代OSASK構想
(0) はじめに
- どうしてKは、飽きもせずに言語の開発を続けられるのか。どうしてネタが尽きないのか。時々そんなことを聞かれます。
- 私には壮大なビジョンがあるのです。私の開発はそれを部分的にかなえているにすぎません。このビジョンがあるから、開発が続けられるのです。
(1) 基本構想
- 私は以下の性質を持つ言語を作りたいです。もしくは誰かが作ってくれるのならそれを使いたいです。
- (1-1)その言語はスクリプト言語とコンパイラが統合されたES-BASICみたいな言語で、それでいて処理系は十分に小さい。実行速度もかなり速い。
- (1-2)その言語はES-BASICをさらに上回るデバッグ支援機能を持つ。seclang01に書かれた項目はすべて盛り込む。
- (1-3)その言語だけで言語処理系を作ることができる(JITコンパイラを作ることができる)。その言語だけでOSを書くこともできる。
- (1-4)その言語はOSに依存しない。CPUにも依存しない。比較的容易に言語処理系を移植できる。
- (1-5)その言語はOSECPU-VMの技術を応用して、コンパクトでOS・CPUに依存しないバイナリ形式も提供する。
- (1-6)その言語はEssen2019-Aのように、実行中のプログラムの変数を監視したり変更したり、保存したり復元したりできる。
- (1-7)その言語はpersistent-Cのような永続変数をサポートする。単に保存できるだけではなく、そのタイミングを制御できたことも重要かもしれないと思いつつある。
(2) これにより何が得られるのか
- 言語処理系が大きいのはナンセンスです。なぜなら大きな処理系は移植が大変になるからです。
- もし将来新しいOSが主流になったらどうするのか、もし新しいCPUが主流になったらどうするのか。・・・そんなとき言語処理系だけを移植すれば、それまでに開発してきたものはすべて継承できることになるのです。これが理想だと私は考えます。だから処理系の移植性は非常に重要なんです。
- 移植作業なんて、もしやらなくて済むのならそれに越したことはないと考えています。一度書いたらずっと使える、どこでも使える、それを目指したいです。
- 確かJavaが「Write once, run anywhere」という素晴らしいスローガンを考えましたが、Javaは処理系が巨大すぎて、自作OSでJavaが動くようにするのはあまりに大変です・・・。
- 万能な言語を目指します。だからこの言語でできないことがあってはいけないのです。
- できないことがあると、それを補うために別の言語を使わなければいけなくなります。そういうのは目指したくはないのです。
- とはいえ、そんなことが実現できるかどうかはわからないのですが・・・。
(3) OSASKの世代
- 第一世代OSASK
- 「エミュレータOS」をうたい、OSはエミュレータ技術を前提に再設計されることで大きく進化すると主張。
- 他のOSのアプリケーションをOSASK上でシームレスに実行できるという夢があった。
- OSASKの旧バージョンのアプリもエミュレーションで動かせばよいので、OSは旧バージョンの設計に縛られずに、常にベストの設計を追求できる。
- こうして、エミュレータOSは互換性ではなく性能を追求するべきだという結論になった。
- 第二世代OSASK
- 第一世代OSASKのアプリは、OSASK上で実行できればそれでよいという考えだったが、それだとアプリを使うにはOSASKを起動しなければいけない(当たり前)。
- それが非常に煩わしいと感じたので、WindowsやLinux上でも容易にアプリの実行環境を構築できるようなアプリ形式に変更。
- 第三世代OSASK
- OSECPU-VMアプリの機能密度の高さ(同じ機能のアプリを作り比べると圧倒的に小さい実行ファイルになる)がすごすぎて、これをメインに据えてOSASKを作り直したいと考えた。
- 第四世代OSASK
- ES-BASICがすごくうまくいったので、OSで実現したかったことを言語処理系で実現したらいいのではないかと考えた。
こめんと欄
|