読者です 読者をやめる 読者になる 読者になる

kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

あけましておめでとうございます & 今年やりたいこと

Scala Java プログラミング言語 Packrat Parser

といっても、もう1/3ですが。去年を振り返るエントリでも書こうかなーと思ったのですが、面倒なのでそれはやめにして、今年やれたらいいなー(or やる予定のこと)をつらつらと書き連ねていこうかと思います。あくまでやれたらいいなー的なことなので、今年中にやらないといけない事は省いています。

  • メタプログラミングの会(仮) 3〜4月

去年、k.inabaさん主催の型レベルプログラミングの会というイベントがありましたが、それに影響を受けてやってみたいなと思ったイベントです。趣旨としては、型レベルプログラミングに限らない、色々なメタプログラミングのシステムや技法について語るイベントにできればと思っています。Lispマクロ、C++テンプレート、Template Haskell、などなど色々なメタプログラミングシステム大集合みたいな。開催時期、会場などまだ全く決まっていませんが、春の内に開催できればいいなあ。

  • JVM Code Readingの会 7〜8月

最近のJVMの挙動、特に最適化やGC周りって高度にブラックボックス化され過ぎててよくわからんですよね。もちろん、その辺について解説した記事が無いことも無いのですが、断片的な解説が主で、全体像を知るには程遠い。なら、JDKオープンソース化されたことだし、実際のJVMソースコードを読んでみれば良いじゃないかと。こちらも開催時期、会場も含め全く決まっていませんが、形式としては、参加者各自で範囲を分担して(OpenJDKの)JVMソースコードを読む形になるのかな。何か意見があればコメント欄などに書いていただければ助かります。

  • NAPL(Nominal types As Programming Languages)の開発 今年中

一言で言うとC++やDみたいなテンプレートシステムを持った言語を作りたいということなのですが、C++やDみたいな、展開した結果あっていればOK系のstructuralなシステムではなく、テンプレートの型パラメータに対してnominalな型制約をつけられて、展開前に制約が満たされているかどうかチェックされる方式を考えています。というと、JavaのGenericsと同じじゃんという意見が聞こえて来そうですが、それよりは強力で、コンパイル時にC++やDみたいに色々計算できる能力も持ったものを考えています。元々、Scalaで型レベルプログラミングをしていて、これをもっと発展させるとどうなるんだろうという実験をやってみたいというのが動機なので、実用を目指すつもりは全く無いのですが、今年中に、「とりあえず動作する」ものが作れたらなあと思っとります。

  • OnionをScalaで書き直す(Onion2) 2月中旬〜

現状のOnionはJavaで書かれているのですが、ベース部分を書いたのがかなり前な上に、コードがかなりぐちゃぐちゃなので、今後拡張していくためにScalaで書きなおしたいと考えています。それに合わせて、当時の自分が未熟だったせいで入っていた諸々の変な仕様もばっさり変更したい。あと、余裕があればパーザもPEGパーザコンビネータを使って書きなおしたいところ(現在のJavaCC版から)。こちらの方は、2月締め切りの論文を提出したらすぐに始めようと思っています。

  • Yappリリース 今年中

研究絡みで書いている最適化packrat parserジェネレータYapp(Javaソースコードを出力する)というのがありまして、個人的にはそこそこ面白いものになったと思っているので、せっかくなのでそのうちリリースしたいと考えています。リリースするにあたって、Scalaでの書き直し(現在はJavaで書かれている)とか(出力言語の)多言語対応とか色々やりたいと考えているので、今年中になんとか出来ればよいなあくらいの感じで。

まあ、大体こんな感じです。この内、今年中にどれだけできるかわかりませんが、少なくとも2つくらいはできれば良いなあ。