ES-C

  • (by K, 2020.02.16)

(0) はじめに

  • ES-CはEssen開発プロジェクトのサブプロジェクトで、ES-BASICのC言語版です。
  • でもES-BASICがかなり適当に作っていたのに対して、ES-Cは他の野望も意識して、もう少し丁寧に作ります。

(1) ES-Cにて盛り込まれる予定の野望(= ES-Cはもはやただの言語ではありません!)

  • (1-1) ES-Cで書くと、C言語の関数が作れるわけだけど、それをES-C本体から必要に応じて呼び出すことで、言語の拡張が動的にできる(ES-Cの再ビルドなどは不要)
    • (同じことは、まあES-BAISCでもできなくはないのですが、KはBASICで言語拡張をしたいとは思っていないので、今のところ開発予定はありません。)
  • (1-2) ES-Cは移植性の高いC言語を目指す。intやlongのビット幅やエンディアンが異なっても、ソースを一文字も直さずに動くことを目指す。またデータファイルやメモリイメージを異なるアーキテクチャに自動でコンバートすることもできる。
    • 状態保存して、他のアーキテクチャで状態復元して再開することもできる。
    • アセンブラを併用した部分がある場合は、その部分の移植は必要になる(そこは積極的にはフォローしない、消極的には支援する)。
    • OSによる差異も言語処理系や標準ライブラリで吸収する。
    • (同じことは、まあES-BAISCでもできなくはないのですが、(以下略))
  • (1-3) セキュリティやデバッグ支援にも力を入れる。→seclang01
    • (同じことは、まあES-BAISCでもできなくはないのですが、(以下略))

(2) ES-CとOSASKの関係

  • OSASK(おさすく)はK(=私)が2000年から作っていた超軽量型のOSです。
  • OSASKは、アプリケーションの状態保存、エミュレーション機能(=移植作業を不要にする技術)、デバッグ支援機能、などの実装を計画していました。現在OSとしてのOSASKの開発は休止中ですが、私はこれらの理想をあきらめたわけではなく、OSとして実現するのではなく、言語処理系で実現しようと考えています。
  • OSを作るとなると、ハードウェアの進歩に合わせてOSもアップデートしていかなければならず、それはK個人では大変な負担です。そういう状況なのであれば、ハードウェアのサポートなどは既存のOSたちに任せて、私は私の実現したい機能(上記の機能)に集中して開発するほうが実現が早まると考えています。そういう考えがあったので、あえてOS屋から言語屋に転職(?)したのです。
  • もちろん、これらの機能を当初の予定通りにOSで実現していたら、記述言語によらずに、アプリの状態保存、エミュレータ機能、デバッグ支援機能が得られるわけです。そのほうがすごいのは間違いないのですが、私の(限られた)実装能力を考えると実現可能性が下がってしまうな・・・と。
    • 一方で、言語で作るメリットとしては既存OSのユーザと競争関係にならずに済むので、みんな仲良しでいられるかもしれません(既存言語ユーザとは競争関係になりますが)。

こめんと欄


コメントお名前NameLink

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-02-16 (日) 13:19:58 (137d)