kmizuの日記

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

コード履歴書とかいうものを書いてみた

巷ではやっているらしい。想い出話を含めて書き起こしておくと、後の自分の役に立つかもと思ったので、書いてみる。

この他に、大学1年からプログラムを書くバイトをしてたので、C++で書かれたCORBA処理系をいじくったり、Ethernet層に相当する何かの実装をしたり、カーネルをいじったりとか、低レベル方面のプログラムも書いていた。あとは、Swingを使ったリッチクライアントフレームワークの開発に関わったりも(この言葉はもう死語だけど)。

社会人1年目に至っては、お仕事で主に使っていたのはCだった(Cじゃないと書けない系プログラムのお仕事)。

  1. 高校2年の頃のお話。私は生物部だったのだけど、文化祭の出し物で、3択クイズゲームを作ることになった。当時の同級生がまずDelphiでプロトタイプを作ったのだけど、何故か私がC++ Builderで作りなおすことに。今、このときのコード見たら憤死するんじゃないかというくらいコピペの嵐だった。
  2. 高校3年の頃、なんとなくJava Appletの勉強がてらテトリスぽいものを作った。ロジックは難しくないものの、当時はどうアニメーションさせるかで苦闘してた記憶がある。
  3. 同じく高校3年の頃、なんとなくJava Appletの勉強がてらぷよぷよもどきを作った。何故かはわからないけど、ぷよぷよもどきの判定ロジックを組むことを通じて再帰を体得できた。大学に入学した後に、同期にぷよの顔グラが「不気味」と言われたのを覚えている。
  4. 同じく高校3年の頃、プログラミング言語作りの第一歩として数式解釈して表示するJava Appletを作った。当時は、BNFという概念も、それをコードに落とし込む技術も頭の中になかったので、どうすればいいのか頭を悩ませた記憶がある。
  5. 大学2年の頃、JavaCCを使って、おもちゃ言語をいくつか作った記憶がある。授業でtinycの処理系を作るというのがあったのだが、あえてyaccではなくJavaCCで、しかも、Javaで書いてたりした。
  6. 大学3年の頃、プログラミング言語Onionを作成。クラスベースで静的型ありと、今残っているOnionの原型はだいたいあった。それに加えて、暗黙の変数宣言、クラス委譲とかのちょっぴり独自な要素を盛り込んだ。ちなみに、情報特別演習という、プチ卒論みたいな授業の一環。この時はバイトコード生成系を作る能力がなかったので、Javaへのトランスレータとして実装。
  7. 大学4年の頃、プログラミング言語Onionをバイトコード生成系としてリライト。生成したコードをバイトコードベリファイアががんがんはじくので、オペランドスタックとか、オペランドスタック上の型をベリファイアがどう認識してるかとかの、JVM層の知識が一気についた。同じく情報特別演習の一環で作成。
  8. M1-M2の頃は、何か作った気がしているのだけど、あまり印象に残っていない。
  9. D1-D3の頃は、Scalaで遊びまくって、色々なプログラムを実験的に食わせて挙動を観察したりjavapしたりしていた。
  10. D3の頃、pegexをネタで作ってみた。ついでに、talkが何故かScala Days 2010を通ったので、スイスに行くことに。アイスランドの凄い長い名前の火山が噴火したり、それで日本に帰れなくなったり色々。
  11. 社会人1年目、Scalaに関する書籍を書いたりとか色々していた。ネタ言語toysを作ったりしていた。
  12. 社会人2年目、なんか色々書いた気がするのだけど、あまり記憶にない。
  13. 社会人3年目、Scala Conference in Japan 2013を立ち上げたりとかしてた。この年で印象に残ってるのは、ISO Rubyの試験実装パーザ(by 中田育男先生)の実装のお手伝いをしたこと。ヒアドキュメントとか配列リテラルとか、Rubyの文法は凄まじいことをこの経験を通して、実感(修士の頃から問題意識はあったのだけど)。これ、リライトして最新版Rubyに対応させてみたいとふと思った。
  14. 社会人4年目、ScalaMatsuri 2014とか色々。PPL 2014で、中田育男先生が、ISO Rubyについての講演をされたのだけど、その中で自分の名前が出たらしい(Twitterで見た記憶が)。
  15. 社会人5年目、Klassicの開発を開始したり、Macro PEGを思いつきで提案してみたりした。Macro PEGは何故か、何名かの知り合いに興味を持ってもらえたようで、実装に落としこむ方法とかセマンティクスについて議論をした。
  16. 社会人6年目、Macro PEGについて第110回プログラミング研究発表会(SWoPP 2016)で発表(査読なし)。パーザコンビネータscombを開発。Kotlin用パーザコンビネータkotbinatorを開発。パーザばっかり。
  17. 社会人7年目、プログラミング言語ハンズオンのために、教育用プログラミング言語nubを設計・実装。今思うと、教育用としては筋が悪かったなと思う部分が多々あり。
  18. 社会人8年目、Dartをいじってみたり、色々な言語のパーザコンビネータを書いたり、などなど。
  19. 社会人9年目、やっぱり、やたらパーザを書いていた記憶。GitHubとかTwitter掘り起こせば色々出てきそうだけど。あと、初めてお仕事関係でOCaml使ったのが印象に残っている。
  20. 社会人10年目、今年はプログラミング言語元年、というわけじゃないけど、1か月1言語企画始動。MatlikeContinuerを開発。2月分、3月分がまだ出来てないので、そろそろ手をつけないと。

大学院以降は、思い返せば趣味ではプログラミング言語とかパーザばっかり書いてた気がする。お仕事では結構多種多様なものを作ってきたのだけど、根本的には趣味だとプログラミング言語とかパーザを作りたくなってしまうのが自分の性ぽい。