プログラミング言語Egison - 表現の新たな抽象化の発見

653
views

Published on

このスライドは2015年2月3日のソフトウエアジャパンアワード受賞スピーチのために作成されました。 …

このスライドは2015年2月3日のソフトウエアジャパンアワード受賞スピーチのために作成されました。

柔軟なパターンマッチを可能にする構文を生み出し、アルゴリズムをより直感的に記述できる全く新しい理論を構築した、との評価での受賞です。

Published in: Software

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
653
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. / 43 プログラミング言語Egison - 表現の新たな抽象化の発見 - ソフトウエアジャパンアワード受賞スピーチ 1 Vol.01 Feb/3/2015 Satoshi Egi (江木 聡志) Rakuten Institute of Technology http://rit.rakuten.co.jp/
  • 2. / 43 自己紹介 2 名前 江木聡志 所属 楽天技術研究所 Webサイト http://www.egison.org/~egi/ GitHub https://github.com/egisatoshi 研究分野 プログラミング言語理論、自動推論 趣味 Egisonプログラミング、エッセイ執筆、 数学の勉強
  • 3. / 43 目次 • Egisonを作った理由 • Egison概要・デモ • Egison開発史 • Egisonのこれから 3
  • 4. / 43 目次 • Egisonを作った理由 • Egison概要・デモ • Egison開発史 • Egisonのこれから 4
  • 5. / 43 プログラミング言語とは? • 単純な命令列しか理解できないコンピュータに対す る要求を、人間が形式的に記述するための言語 • e.g. C, Java, Ruby, Lisp, Haskell, Egison, … 5
  • 6. / 43 形式的表現を考えるのは難しい • 人間の考えをコンピュータ向けに翻訳して記述せね ばならない場面は未だにある 6
  • 7. / 43 Egisonを作った理由 • 人間の頭の中の認識 (直感) をより直接的に表現す る新しい方法を発見した! 7
  • 8. / 43 目次 • Egisonを作った理由 • Egison概要・デモ • Egison開発史 • Egisonのこれから 8
  • 9. / 43 プログラミング言語Egison 9 パラダイム パターンマッチ指向、純粋関数型 作者 江木聡志 ライセンス MIT バージョン 3.5.6 (2015/2/3) 最初のリリース 2011/5/24 拡張子 .egi 実装言語 Haskell 3,800行 Egisonはオープンソースのプログラミング言語 https://github.com/egison/egison
  • 10. / 4310 Egisonとは? Egisonは1つの定まった標準形を持たないデータに対 しても柔軟なパターンマッチが表現可能なプログラミ ング言語 pairs = [] (1..xs.length).each do |i| (i+1..xs.length).each do |j| if xs[i] == xs[j] pairs.push(xs[i]) end end end (match-all xs (multiset integer) [<cons $x <cons ,x _>> x]) コレクション‘xs’の要素で2回以上現れ る要素を列挙するプログラム Egison Ruby 多重集合(multiset) : 要素の重複は考慮するが、順 番を考慮しないコレクション型
  • 11. / 43 Egisonデモ • ポーカーの役判定 • 麻雀の上がり判定 • 双子素数の列挙 • 巡回セールスマン問題 11
  • 12. / 4312 の部分がパターン デモ : ポーカーの役判定
  • 13. / 4313 デモ : ポーカーの役判定(Straight Flush)
  • 14. / 4314 デモ : ポーカーの役判定(Straight Flush) 同じ名前の変数が、1つのパターン内に複数現れるような パターンを非線形パターンと呼ぶ
  • 15. / 4315 デモ : ポーカーの役判定(Two Pair)
  • 16. / 4316 デモ : ポーカーの役判定(Two Pair) ‘_’ はどんな値にもマッチするワイルドカードと呼ばれる パターン
  • 17. / 4317 雀頭にマッチするパターン e.g. 順子にマッチするパターン e.g. 刻子にマッチするパターン e.g. 上がりにマッチするパターン e.g. デモ : 麻雀のあがり判定
  • 18. / 4318 雀頭にマッチするパターン e.g. 順子にマッチするパターン e.g. 刻子にマッチするパターン e.g. 上がりにマッチするパターン e.g. デモ : 麻雀のあがり判定 パターンのモジュール化も可能
  • 19. / 4319 の部分が双子素数にマッチするパターン 先頭5個の双子素数を列挙 デモ : 双子素数の列挙
  • 20. / 4320 の部分が双子素数にマッチするパターン 先頭5個の双子素数を列挙 デモ : 双子素数の列挙 複数の結果を持つパターンマッチも可能
  • 21. / 4321 の部分が全ての駅を巡回する経路にマッチするパターン 東京渋谷 新宿 三鷹 北千住 錦糸町 デモ : 巡回セールスマン問題
  • 22. / 4322 の部分が全ての駅を巡回する経路にマッチするパターン 東京渋谷 新宿 三鷹 北千住 錦糸町 デモ : 巡回セールスマン問題 Egisonプログラマは幅広いデータ型に 対してパターンマッチの方法を定義可能
  • 23. / 43 • 非線形パターンマッチ • e.g. ポーカーの役判定をはじめ全てのデモ • 複数の結果を持つパターンマッチ • e.g. 双子素数の列挙、巡回経路の列挙 • データ型毎のパターンマッチの方法のモジュール化 • e.g. list、multisetのパターンマッチの方法の定義 • パターンの静的スコープ • e.g. 麻雀の上がり判定 23 Egisonにより可能になること
  • 24. / 43 Egisonのような本質的かつ根幹的なプログラミング言語 の進歩は、歴史を紐解いても数少ない 24 Egisonの革新性 Turing賞 Turing賞 Turing賞 Egisonは   の部分の機能を 世界で初めて全て同時に実現した
  • 25. / 43 目次 • Egisonを作った理由 • Egison概要・デモ • Egison開発史 • Egisonのこれから 25
  • 26. / 43 発端 • 2010年3月、卒業研究のために数学の定理を自動で 予想するプログラムを書いている時にEgisonのアイ デアを得た • 数学の理論の自動生成のためには、より直接的な直 感を表現の方法が必要だという認識を得て、Egison の設計を始めた 26
  • 27. / 43 構想・最初のリリース 修士1年の期間すべてを使って構想を練り、2011年 5月24日、Egison version 0.1をリリース 27
  • 28. / 43 コミュニティの誕生 • 最初のリリースの一ヶ月後には、研究室の先輩、後 輩4人が理解し、使い始めてくれた • 新しい理論の普及のためには、周囲の優しさは非常 に重要 28
  • 29. / 43 大学院卒業 • 2012年3月、東京大学大学院を卒業(コンピュータ 科学修士) • 2012年2月-8月 IPA未踏IT人材発掘・育成事業のプ ロジェクトの1つとしてEgisonの開発を進める 29
  • 30. / 43 初めての就職とEgisonチーム • 2012年10月、初めての就職 • 2012年12月、東京大学、筑波大学のコンピュータサイエ ンスの学科の学生をアルバイトとして集め、Egisonチー ムを発足 • 2013年3月、チームでEgisonをフルスクラッチから再設 計・再開発して新たなバージョンのリリース • 2013年6月、退職、Egisonチーム解散 30
  • 31. / 43 楽天技術研究所に入所 • 2013年11月15日、4ヶ月以上の就職活動期間を経 て、楽天技術研究所に入所 • まつもとさんの紹介、萩谷先生の推薦文、竹内郁雄 先生のダメ押し推薦メール • 地に足がついた生活が送れるようになった 31
  • 32. / 4332 楽天技術研究所、入所直後のWebサイト(2013/11/15)
  • 33. / 4333 リニューアルした現在のWebサイト(2015/2/3)
  • 34. / 4334 日本語版Webサイト(2015/2/3)
  • 35. / 43 Webサイト更新の結果 • 2014年3月、reddit上で話題になる • http://www.reddit.com/domain/egison.org/ • 2014年4月、InfoWorldで取り上げられる • http://www.infoworld.com/article/2606823/application- development/146094-Ten-useful-programming- languages-you-might-not-know-about.html • 2014年6月、7月、Hacker News上で立て続けに話題になる • https://hn.algolia.com/?q=egison#!/story/forever/prefix/ 0/egison%20-edison%20-elison%20-egibson 35
  • 36. / 4336 萩谷先生による東京大学でEgisonの授業の約束
  • 37. / 43 目次 • Egisonを作った理由 • Egison概要・デモ • Egison開発史 • Egisonのこれから 37
  • 38. / 43 Egisonのこれから • コンピュータサイエンスの各分野(e.g. 自動推論、 プログラムの自動生成)でEgisonの理論によりブ レークスルーが起こる • Egisonのパターンマッチは、多くのプログラミング 言語に当たり前に組み込まれるようになる • 学校で全ての子供がEgisonでプログラミングを学ぶ ようになる 38
  • 39. / 43 プログラミング言語の未来 • 現在は「習得が容易なプログラミング言語」が「直 感をより直接的に表現できるプログラミング言語」 よりも広く使われている • 将来、コンピュータサイエンスの素養が当たり前に なった世界では後者が当たり前になる • Egisonを教育に真っ先に取り入れれば、国の将来に とって大きなアドバンテージになる 39
  • 40. / 43 Egisonの世界的普及は時間の問題 • 理論も実装も既にできている • ただ、いつ普及するのかはわからない • 普及のためには多くの方々に勉強し理解して頂くこ とが必要 • Egisonを多くの方々に理解して頂き、Egisonの先 にあるもっと“とんでもない”研究に没頭したい 40
  • 41. / 43 まとめ • 「直感を直接的に表現できるプログラミング言語」 こそが究極のプログラミング言語 • Egisonは最先端の「直感を直接的に表現できるプロ グラミング言語」 • Egisonのような本質的かつ根幹的なプログラミング 言語の進歩は、歴史を紐解いても数少ない 41
  • 42. / 4342 Egisonは歴史的革新 Turing賞 Turing賞 Turing賞 Egisonは   の部分の機能を 世界で初めて全て同時に実現した
  • 43. / 43 関連リンク • 公式Webサイト : http://www.egison.org/ja/ • GitHub : https://github.com/egison/egison • Twitter : @Egison_Lang • CodeIQ MAGAZINE連載 : https://codeiq.jp/magazine/tag/egison/ • メーリングリスト : http://www.egison.org/ja/community.html • 個人サイト : http://www.egison.org/~egi/ 43