|
|
|
|
|
|
|
|
|
|
|
バナーを配布しています。
詳細はこちらよりご覧ください |
|
|
|
|
|
|
≪ 受賞作品一覧
|
-
作品ジャンル
-
プログラミング言語
-
作品概要
-
Fulynは、整数型と関数型のみで構成される静的型付け・正格評価の関数型言語です。
極限まで切り詰められた言語設計と、美しい構文を併せ持つ、シンプルな言語です。
主に川合秀実氏の開発しているセキュアなVM「OSECPU」をターゲットとしており、同VMでは初の高級言語です。
-
開発言語・ツール
-
開発言語:C#
開発環境:
・Microsoft Visual Studio 2012 Professional
・MonoDevelop 4.0.13
-
制作目的・テーマ
-
セキュリティ・キャンプ中央大会のセキュアなシステムクラスのセキュアなOSを作ろうゼミに参加するにあたって、川合秀実氏のOSECPUというVMの、「美しい設計」にとても感動し、美しいVMには美しい高級言語が必要だと思うようになりました。
主にセキュリティ・キャンプの期間中に完成させ、セキュリティ・キャンプ後もアップデートを重ねています。
2条項BSDライセンスでGitHubにて公開しています。
-
構想から完成までの期間
-
1ヶ月弱(全くコードを書いていない期間を含めると2ヶ月程度)
詳細はコミットログを参照。
-
こだわりポイント・独自のアイデア
-
開発においては、「言語設計をいかに単純化できるか」というところに重点を置き、多くの言語で見られる「for文」に代表される無駄な構文等を一切省き、言語要素も「関数」と「文」と「式」の三要素に絞り込みました。
また、構文の美しさも追求し、Cライクシンタックスに見られる「括弧」も、Pythonなどに見られる「インデント」も採用せず、改行を命令単位とした見やすくシンプルな構文となりました。
そして、コンパイラ自体の設計もシンプルなものとし、再帰による式の評価と遅延評価による関数同士の依存関係の解決などにより、パフォーマンスとコードの可読性を保ちながらの高度な最適化、出力バイナリサイズの削減に成功しています。
-
苦心した点
-
最初は正しいOSECPUバイナリがうまく出力できず、川合さんに手伝ってもらいながらデバッグを重ね、なんとか動くようになりました。
そこからはクロージャの実装や高階関数のサポートなど、中核的な機能をほぼ滞り無く実装できました。
標準ライブラリの作成にあたっても川合さんの大きな協力のもと、配列を関数として表現することに成功するなど多大なご支援を頂きました。
また、セキュリティ・キャンプ終了後、本職の言語開発者の方に最適化の極意を伝授していただいたり、関数型プログラマーの方にご意見を頂いたりして、とても勉強になりました。
今までもいくつかの言語の処理系を書いたり、言語を設計したりしたことはありましたが、本格的なコンパイラを作ったのはこれが初めてで、普段のプログラミングに対する有用な示唆を多く得ることが出来ました。
-
応募したきっかけ
-
セキュリティ・キャンプの講師の方に勧められたからです。
-
本格的にプログラム開発を始めてからの年数
-
約3年
-
どうやって勉強したか
-
C#言語自体はウェブサイトを見たり開発者の方にコードレビューをしていただいたり、あとはMSDNを見ながら勉強しました。
コンパイラの開発は特に勉強せず、フィーリングで書きました。
-
受賞した感想
-
正直このようなニッチでマニアックなプログラミング言語がこのような名誉ある賞をいただけることに、嬉しいというよりかは驚いています。
最終審査会では、出会った多くの同年代の開発者の方々、また現役開発者の方々とお話し、とても勉強になりました。
Fulynが美しいプログラミング言語であるのは、ひとえにアドバイスを下さった現役開発者の方々、セキュリティ・キャンプの講師やチューターの方々、セキュリティ・キャンプの同級生の方々、そしてなにより、OSECPUの開発者かつセキュアなOSを作ろうゼミ講師の、川合秀実氏のおかげです。この場を借りてお礼申し上げます。
しかし私はまだ現状のFulynにまだ満足していません。現在開発中のv1.1以降では型推論の強化や構文のさらなる改良、他のプラットフォームへの対応を目指しています。
来年度は、まだ経験のない集団開発やスマートフォンアプリ開発に挑戦し、自分たちの理想を突き詰めたアプリケーションを開発したいと思っています。そして、再び経済産業大臣賞をいただくことができれば幸いです。
|