Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

コンピュータのための新たな表現の追及―プログラミング言語Egison開発史

1,528 views

Published on

このスライドは2014年11月28日に東京大学のGlobal Design Seminarでの講演に使われました。
http://www.gcl.i.u-tokyo.ac.jp/wp-content/uploads/2014/11/Rakuten20141128.pdf

コンピュータは非常に高速な代わりに、機械語という単純な命令列しか理解できません。そのため、人間はコンピュータにしてほしいことを全て形式的に記述せねばなりません。
コンピュータ向けに翻訳することなしに、人間の直感による認識を表現するというのは、非常に難しい問題です。私達が日常行っているコミュニケーションは、聞き手や読み手の補完によって成り立っています。例えば、数学書の記述は、書き手の数学的認識を、読み手が自身の頭の中に構築するためのヒントの羅列に過ぎません。内容を理解するには、ただ一通り読むだけでは足りなくて、相当の思考が必要です。
人間の直感による認識の直接的な表現は、コンピュータの出現によって非常に重要な問題になりました。もしそのような表現が見つかれば、プログラミングにより、コンピュータに非常に少ない労力で仕事をさせることができるからです。幾つもの表現の抽象化の発見により、プログラミング言語は、直接かつ形式的に表現できる直感の範囲を広げてきました。しかしながら、人間の考えをコンピュータ向けに翻訳して記述せねばならない場面は未だにあります。そのような場面を見つけ、自身の直感を分析し、その直接的な表現を見出すことにより、私は新しいプログラミング言語Egisonを作りました。

本講演では、その研究の経緯を話すことにより、プログラミングやプログラミング言語の研究の面白さを共有したいと考えています。

Published in: Software
  • Be the first to comment

コンピュータのための新たな表現の追及―プログラミング言語Egison開発史

  1. 1. コンピュータのための 新たな表現の追求 Vol.01 Nov/28/2014 Satoshi Egi (江木 聡志) Rakuten Institute of Technology http://rit.rakuten.co.jp/ - プログラミング言語Egison開発史-
  2. 2. 2 自己紹介 Name 江木 聡志 Association 楽天株式会社 楽天技術研究所 Education 東京大学大学院情報理工学系研究科コンピュータサ イエンス専攻修士 Interests プログラミング言語・自動推論 Website http://www.egison.org/~egi/
  3. 3. 3 1. Egison を作った経緯 2. Egison 概要 3. Egison 開発の歴史 目次
  4. 4. 4 1. Egison を作った経緯 2. Egison 概要 3. Egison 開発の歴史 目次
  5. 5. 5 プログラミング言語とは? 単純な命令列しか理解できないコンピュータに 対する要求を、人間が形式的に記述するための 言語 例. C, Java, Ruby, Lisp, Haskell, Egison, …
  6. 6. 6 表現を考えるのは難しい 人間の考えをコンピュータ向けに翻訳して記述 せねばならない場面は未だにある
  7. 7. 7 Egisonを作った理由 人間の頭の中の認識 (直感) をより直接的に表現す る方法を見つけた! 人間の考えをコンピュータ向けに翻訳して記述せねばなら ない場面は未だにあります。そのような場面を見つけ、自 身の直感を分析し、その直接的な表現を見出すことにより、 私は新しいプログラミング言語Egisonを作るに至りました。 CodeIQ MAGAZINEへの寄稿記事より
  8. 8. 8 重要な事実 「直感的」という言葉は「わかりやすい」という意味で使われ ることが多いですが、直感自体は全く「直感的」なものでは ありません。それゆえに、直感の直接的な表現は多くの人 にとって、最初はわかりやすくありません。 習得が容易な プログラミング言語 直感をより直接的に表現できる プログラミング言語 CodeIQ MAGAZINEへの寄稿記事より
  9. 9. 9 1. Egison を作った経緯 2. Egison 概要 3. Egison 開発の歴史 目次
  10. 10. 10 Egison紹介 Egisonはオープンソースのプログラミング言語です。 https://github.com/egison/egison パラダイム パターンマッチ指向、 純粋関数型 作者 江木 聡志 ライセンス MIT バージョン 3.3.12 (2014/10/24) 最初のリリース 2011/5/24 拡張子 .egi 実装言語 Haskell (3,800行くらい)
  11. 11. 11 Egisonとは? Egison は1つの定まった標準形を持たないデータに対 しても柔軟なパターンマッチが表現可能なプログラミン グ言語です。 (match-all xs (multiset integer)! [<cons $x <cons ,x _>> x])! Egison コレクション‘xs’の要素で2回以上 現れる要素を列挙します。 pairs = []! (1..n).each do |i|! (i..n).each do |j|! if xs[i] == xs[j]! pairs = pairs +! xs[i]! end! end! end! Ruby
  12. 12. 12 デモ: ポーカーの役判定
  13. 13. 13 デモ: ポーカーの役判定 Pattern for straight flash
  14. 14. 14 デモ: ポーカーの役判定 Pattern for straight flash Match as a set of cards
  15. 15. 15 Straight Flush のパターン
  16. 16. 16 Straight Flush のパターン Same suit with $s
  17. 17. 17 Straight Flush のパターン Same suit with $s Numbers are serial from $n
  18. 18. 18 Straight Flush のパターン Same suit with $s Numbers are serial from $n バリューパターン(‘,’の後)には任意の式を 記述できます
  19. 19. 19 デモ: ポーカーの役判定 Pattern for two pair
  20. 20. 20 Two Pair のパターン
  21. 21. 21 Two Pair のパターン Matches with any suit Matches with any card
  22. 22. 22 Two Pair のパターン Matches with any suit Matches with any card Same number with $m Same number with $n
  23. 23. 23 Two Pair のパターン Matches with any suit Matches with any card Same number with $m Same number with $n 非線形パターンの表現力は非常に強力です
  24. 24. 24 デモ: ポーカーの役判定 全ての役が1つのパターンで表現できます
  25. 25. 25 デモ: 麻雀の上がり判定
  26. 26. 26 デモ: 麻雀の上がり判定 Two same tiles Three consecutive tiles Three same tiles
  27. 27. 27 デモ: 麻雀の上がり判定 Two same tiles Three consecutive tiles Three same tiles Seven twins or one twin + four shuntsu or kohtsu
  28. 28. 28 デモ: 麻雀の上がり判定 Two same tiles Three consecutive tiles Three same tiles Seven twins or one twin + four shuntsu or kohtsu パターンのモジュール化も非常に 強力な機能です
  29. 29. 29 デモ: 素数の無限列に対するパターンマッチ
  30. 30. 30 デモ: 素数の無限列に対するパターンマッチ
  31. 31. 31 プログラミング言語理論の中でのEgison Egison has been pioneering a new field of the theory of programming language.
  32. 32. 32 Egison 公式ウェブサイト
  33. 33. 33 1. Egison を作った経緯 2. Egison 概要 3. Egison 開発の歴史 目次
  34. 34. 34 発端 2010年3月、卒業研究のために数学の定理を自動で 予想するプログラムを書いている時にEgisonのアイデ アを得た
  35. 35. 35 発端 2010年3月、卒業研究のために数学の定理を自動で 予想するプログラムを書いている時にEgisonのアイデ アを得た 数学の理論の自動生成という大問題の部分問題として 新しいアイデアを得た
  36. 36. 36 構想期間 修士1年の期間すべてを使って構想を練る 2011年3月、実装を開始する 2011年5月24日、Egison version 0.1をリリース
  37. 37. 37 構想期間 修士1年の期間すべてを使って構想を練る 2011年3月、実装を開始する 2011年5月24日、Egison version 0.1をリリース 素早く実装できる能力は非常に重要
  38. 38. 38 歴史的瞬間!? 2011年5月、初めてEgisonのパターンマッチ 式のコンピュータ上での実行に成功
  39. 39. 39 コミュニティの誕生 研究室の先輩、後輩4人が理解し、使い始めてくれた
  40. 40. 40 コミュニティの誕生 研究室の先輩、後輩4人が理解し、使い始めてくれた 先輩・後輩に恵まれていた 新しい理論の普及のためには、環境と周りのひとの優 しさは非常に重要
  41. 41. 41 初めての社会的評価 2011年12月、Egisonが「未踏IT人材発掘・育成事業」 に採択される
  42. 42. 42 初めての社会的評価 2011年12月、Egisonが「未踏IT人材発掘・育成事業」 に採択される 初めて社会的に評価されて安心した 行動力は非常に重要 発表したり、公募に応募するなど、できることは何でもし たほうがよい
  43. 43. 43 大学院卒業 就職できなかったので、研究室でアルバイト タイムリミットが半年延びた
  44. 44. 44 第1回 Egison ワークショップ 2012年7月、未踏プロジェクトを主催しているIPAに、 第1回Egisonワークショップを開催させて頂いた 発表者4名、参加者30名ほどで、新たな出会いがあっ た
  45. 45. 45 第1回 Egison ワークショップ 2012年7月、未踏プロジェクトを主催しているIPAに、 第1回Egisonワークショップを開催させて頂いた 発表者4名、参加者30名ほどで、新たな出会いがあっ た 多くの方々に強力して頂くと色々なアイデアが出てくる
  46. 46. 46 初めての就職と Egison チーム チームでのEgison開発など、有り難い経験を沢山させ て頂いた
  47. 47. 47 Egison チーム 2013年3月、チームでEgisonをフルスクラッチから再 設計・再開発して新たなバージョンのリリース
  48. 48. 48 Egison チーム解散 2013年6月、会社を辞め、就職活動を再開する
  49. 49. 49 楽天技術研究所に入所 2013年11月15日、4ヶ月以上の就職活動期間を経て、 楽天技術研究所に入所
  50. 50. 50 楽天技術研究所に入所 2013年11月15日、4ヶ月以上の就職活動期間を経て、 楽天技術研究所に入所 執念と行動力は非常に重要
  51. 51. 51 情報発信の重要さを認識 より多くのひとにEgisonについて知ってもらい、 理解して頂くことが、この先の成長には必要
  52. 52. 52 情報発信の重要さを認識 より多くのひとにEgisonについて知ってもらい、 理解して頂くことが、この先の成長には必要 多くの方々に理解して頂くために必要なのは、 サービス精神
  53. 53. 53 ウェブサイトを更新
  54. 54. 54 ウェブサイトを更新
  55. 55. 55 オンラインデモを実装
  56. 56. 56 正月休みにオンラインチュートリアルを実装
  57. 57. 57 ウェブサイト大改装の結果 •  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 
  58. 58. 58 半年間のアクセスマップ (2014/4/23 – 2014/10/23) Total session is 15,228
  59. 59. 59 コミュニティの成長 (2013/11/15 – 2014/11/28) •  メーリングリスト •  Before: 12 – 作者の友人のみ •  Current: 27 – 世界中の人々 •  Stargazers on GitHub •  Before: 12 – 作者の友人のみ •  Current: 250 – 世界中の人々
  60. 60. 60 他の言語の Egison 拡張
  61. 61. 61 ポーカーの役判定 (Rubyバージョン)
  62. 62. 62 RubyKaigi 2014 RubyKaigi 2014で 発表しました!
  63. 63. 63 萩谷先生から東京大学でEgisonについて授業で取り上げ て頂く約束を得る
  64. 64. 64 2014年10月、メディアへの記事の初寄稿
  65. 65. 65 まとめ • プログラミング言語を考えることは面白い • 新しい理論を考えることは面白い • 新しい理論を普及させることは大変 •  この情報化社会でも非常に大変 •  理論を作る以上の行動力と執念が必要 •  新しい理論の普及には周りの方々の優しさが必須
  66. 66. 66 是非ウェブサイト見に来てください! http://www.egison.org Twitterもしています! @Egison_Lang

×