- 個人部門 入選作品
- 経済産業大臣賞『草登り』
- 経済産業大臣賞『電子絃楽器練習支援システム「STrike」』
- 経済産業大臣賞『プログラミング言語Cyan』
- 経済産業大臣賞『分割再生』
- 経済産業省商務情報政策局長賞『UTyping』
経済産業大臣賞『プログラミング言語Cyan』
作品紹介 | |
---|---|
表彰理由 | プログラムを作るうちにプログラミング言語そのものに興味を持ち、自分でデザインした言語を作りたいという動機のもとに開発されたオブジェクト指向のプログラム言語。lispのマクロ、python風のインデント、継続など様々な特徴を持ちながら、最小限の実装できれいにまとまった作品。 プログラミング言語に対する深い考察と技術力、そして、作成者本人の大きな将来性を感じさせる作品だった。今後、ぜひ作品を公開し、ブラッシュアップして完成度を高めてほしい。 |
作品名 | プログラミング言語Cyan |
制作者 | 開成高等学校2年 林 拓人 |
作品ジャンル | プログラミング言語 |
作品概要 | 美しい言語を目指して設計された、拡張性の高いプログラミング言語です。リストやハッシュはもちろん、クロージャや継続といった高度なオブジェクトが実装されているほか、多重代入や引数の展開、キーワード引数や演算子の再定義など、様々な機能が利用できます。 Cyanにおいて、プログラムは式の並びであり、式はすべてオブジェクトによって表されます。これにより、コードとデータを区別なく扱え、柔軟な処理を記述できるマクロが実現しました。マクロはコードの圧縮や抽象化などに役立ちます。 その他にも、オブジェクト指向をサポートしているにも関わらず、クラスという仕組みが組込みでないなど、いくつかの特徴があります。 |
開発言語、ツール | 開発言語:C# コンパイル、実行:Mono エディタ:gedit ビルドツール:rake |
プログラムソースの規模 | 6928行 |
構想から 完成までの期間 |
約4ヶ月 |
制作者からのコメント | |
---|---|
こだわりポイント ・独自のアイデア |
インデントによってブロックを表したのに加え、複数のブロックをキーワード引数として関数に渡せるようにしました。また、クラスという仕組みを組込みでは用意せず、スロット、メッセージ、ペアレントへの委譲といった概念による、シンプルなオブジェクト指向を実装しました。ファーストクラスの継続を実装するために関数の実行モデルを工夫したほか、マクロを準クオートによって書けることや、多くの制御構文がマクロで定義されており、予約語がひとつもないのもこだわった点です。 |
苦心した点 | リストは連結リストにすべきか動的配列にすべきか、ハッシュや無名関数の記法はどうするか、多値を実装すべきか、引数の展開をどう実装するかなど、設計と実装の両面でかなり悩みました。周りに相談できる人もおらず、ひとりで考え込んで他のことが手に付かなくなることもありました。しかし、ただの空想だった言語がしだいに形になっていき、アイデアが具現化されていくのはとてもうれしく、悩みもそれが解消されたときの喜びで吹き飛ばすことができました。 |
応募したきっかけ | 中学生の時から学校に貼ってあったポスターでコンテストの存在を知っており、高校に入って自分が作ったプログラムを人に見てもらいたいと思ったから。 |
プログラミング歴 | 約1年 |
指導者の有無 | 指導者は特にいません。 |
どうやって 勉強したか |
書籍やインターネットを通じて。 |
受賞した感想 | このような賞をいただけたことを光栄に思います。私は言語が好きで、自分がとことん好きになれる言語を作りたいと思い、このCyanを設計しました。しかし、私はまだ今のCyanに満足していません。これから多くのことを学び、技術を身につけ、新たな言語を設計したいと思っています。また、プログラミング言語にこだわらず、様々なジャンルのプログラムが作れるようになりたいと思います。今回の受賞を励みに、努力していきたいです。 |
ワークショップ ・式典に参加して |
この度は、このような大臣賞ということで、賞を頂きとても光栄に思っています。本日の様な正式な式典というのは今まで参加したことがなかったので、非常に緊張しました。これからもがんばっていきたいと思いますので、宜しくお願い致します。 |