* 2016年11月05日のプレゼン下書き -(by [[K]], 2016.10.11) ** Essenまでの歴史 -OSASK計画とは? --OSASK計画とは、超軽量OSである「OSASK(おさすく)」を開発するためのオープンソースコミュニティ。川合秀実が代表。 -2000年: OSASKをせっせと開発。 --一定の成果を達成。 ---OSのインストールサイズ:100KB未満 ---インベーダーゲーム: 1108バイト -2008年: 第二世代OSASKを開発。 --川合が実現したかったことは、OSを作らなくてもある程度は実現可能ではないかと考えて、作った。 --川合は優秀なAPIを使いたいからOSを作ったのであって、OSを作ることはそのための一つの方法でしかないと気付いた。 --これも一応の成果を達成。 ---処理系のサイズ: 14.5KB -2013年: OSECPU-VM(おせくぷ・ぶいえむ)(第三世代OSASK)を開発。 --x86にこだわらずJavaみたいなものを作れば、さらに限界が突破できるのではないかと考えた。 ---理想のAPIを考えているうちに、理想の命令セットを追及してみたくなった感じ。 --これも一応の成果を達成。 ---VM処理系:29.0KB。 ---インベーダゲーム : 430バイト -2016年: 理想のプログラミング言語がほしくなって開発を開始した。「Essen」(えっせん)。 --詳細は後述。 ** Essenの基本的な考え方 -川合の主観: --RubyやPythonは本当に素晴らしい言語だと思うけど、処理系が大きすぎると感じる。 ---(註)川合は何でも小さく作るのが得意。 --何万行、何十万行と、たくさん書けば、いろいろできるようになるのは「当たり前」では? --処理系の行数が少ないのに、意外にあれこれできてしまうような処理系こそ良い処理系なのでは? ---移植しやすい ---結果的に仕様がシンプルなので例外が少なく仕様を理解しやすい -どんな言語を目指すか? --初心者がEssenを勉強して覚えた後、もしEssenには不得意なことをやりたくなったら、他の言語にスムーズに移行できるような言語。 ---だからビジュアルなプログラミング言語は目指さない。 ---C言語やJavaにある程度似ていることが望ましい。 --八方美人は目指さない。 ---不得意なことがあってもよい。 --構文や演算子を自由に定義できる言語。 ---既存の構文を再定義することができる。新規の構文を定義することもできる。 ---既存の演算子を再定義することができる。新規の演算子を定義することもできる。 ---C言語は関数を自由に定義できるようにした。C++は型を自由に定義できるようにした。 ---でもC++では演算子は既存の物をオーバーライドできるだけで新規には作れない。 ---C++もJavaも構文は自由には作れない。 ---これからは演算子や構文も自由に作る時代だー。 --Essenはシンプルなインタプリタ。 ---実行速度は遅い。 ---変数は型を持たない(変数宣言をさせたくなかったので)。 ---対話式で操作できる。 ---初心者にはそのほうが分かりやすいのではないかと川合は考えた。 --既存言語との共存を目指す言語。 ---「Essenひとつで何でもできるようになる」を目指さない。 ---Essenの中で既存言語を混ぜて書くことができる(インライン・アセンブラみたいな感覚、インラインC++とか)。 ---スピードが必要な部分だけをC++などの高速な言語で書けばいいのでは? ---スピードが必要な部分なんて全体のうちの1~2割程度のはず。残りの8~9割をEssenで書けばいい。 ---Essenからの移行もスムーズになるはず。 ** 基本機能紹介