お金になりにくいプログラミング言語を学ぶ技術 - rubyhiroba 2014 生活発表会
DESCRIPTION
TRANSCRIPT
![Page 1: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/1.jpg)
お金になりにくいプログラミング言語を
やり続ける技術esehara shigeo
RubyHiroba2014 生活発表会
![Page 2: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/2.jpg)
お前誰だ
![Page 3: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/3.jpg)
esehara shigeo趣味:言語いじりFizzBuzzの研究
数論・論理学←New!!難解プログラミング
PythonistaClojuren
![Page 4: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/4.jpg)
生活の一部
![Page 5: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/5.jpg)
初級問題
![Page 6: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/6.jpg)
![Page 7: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/7.jpg)
突然のHaxe欲!
![Page 8: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/8.jpg)
中級問題
![Page 9: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/9.jpg)
![Page 10: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/10.jpg)
突然のFORTRAN77
欲!
![Page 11: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/11.jpg)
他には?
![Page 12: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/12.jpg)
underscore.py
![Page 13: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/13.jpg)
あれ、JavaScriptに同じようなプロダクトが
![Page 14: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/14.jpg)
![Page 15: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/15.jpg)
お金にならない!
![Page 16: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/16.jpg)
生活ですしね
![Page 17: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/17.jpg)
というわけで(?)
![Page 18: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/18.jpg)
Ruby始めました
![Page 19: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/19.jpg)
出自はPythonistaです
![Page 20: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/20.jpg)
仕事もPythonです
![Page 21: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/21.jpg)
仕事ではRubyは
使っていません
![Page 22: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/22.jpg)
でもやろうと思ったので
Ruby始めました
![Page 23: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/23.jpg)
Agenda
![Page 24: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/24.jpg)
スライド120枚あります
![Page 25: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/25.jpg)
Motivation
![Page 26: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/26.jpg)
JUST FOR FUN http://www.amazon.co.jp/dp/4796880011
![Page 27: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/27.jpg)
Example
![Page 28: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/28.jpg)
Rubyは「楽しさ」を第一の目標とする
言語である
![Page 29: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/29.jpg)
It is the first industrial-quality systems programming language that is as
expressive and enjoyable as a scripting language.
Swift Programming Language
![Page 30: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/30.jpg)
But
![Page 31: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/31.jpg)
ただ、肝心の「文章を書く」という作業はどうかというと、実は「好き」とか
「楽しい」とか思ったことはありません。文章がスラスラ出てくるなどという
経験はなく、基本的にはしぼり出すようなしんどい作業です。世の中に
は文章を書くのが好きな人も多いと思いますが、私はWebの記事であ
れ、雑誌の記事であれ、書くのは苦手です。精神力をごっそり削られま
す。
プログラミングが楽しいと思えないのは悪いことなのか
IT Proより
![Page 32: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/32.jpg)
And
![Page 33: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/33.jpg)
I wish to be able to eat sushi everyday.(画像) Wikipedia ― http://commons.wikimedia.org/wiki/File:2007feb-sushi-odaiba-manytypes.jpg
![Page 34: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/34.jpg)
Reason
![Page 35: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/35.jpg)
多角的な視点ー左面は青、右面は赤(画像) Wikipedia ― Rubix cube.jpg
![Page 36: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/36.jpg)
道具の生態系(画像) Wikipedia 20060513Toolbox.jpg より
![Page 37: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/37.jpg)
イメージとしての技術(画像) http://bjorn.tipling.com/if-programming-languages-were-weapons
![Page 38: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/38.jpg)
建前
![Page 39: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/39.jpg)
如何なるパラダイムでも
食わず嫌いしない
![Page 40: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/40.jpg)
よりよい実装と設計を求めて
![Page 41: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/41.jpg)
Language of Year(画像) Wikipedia ― Rubix cube.jpg
![Page 42: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/42.jpg)
本音
![Page 43: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/43.jpg)
JUST FOR FUN http://www.amazon.co.jp/dp/4796880011
![Page 44: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/44.jpg)
どんなものでもお金には出来るが自分が出来るとは
限らない
![Page 45: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/45.jpg)
Real
![Page 46: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/46.jpg)
functionalprogramming
の台頭
![Page 47: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/47.jpg)
安全で綺麗な開発のために - Scala
![Page 48: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/48.jpg)
通信を確実かつ大量に裁くために - Erlang
![Page 49: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/49.jpg)
But
![Page 50: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/50.jpg)
Rubyの「関数型志向」らしさ
● 関数の最後の行は「暗黙に」返り値を持つ○ ディスアゼンブラの挙動を見ると、正確には関数を
Leaveしているっぽい挙動( http://mugenup-tech.hatenadiary.com/entry/2014/07/03/195554)
● 配列にeachやmapなどの「高階」的な扱いが自然とできる○ とはいえ、モダンな言語だと、だいたいこういうことは出
来る
![Page 51: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/51.jpg)
余談
![Page 52: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/52.jpg)
Rubyは何処に影響を与えたか
![Page 53: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/53.jpg)
Lisp族
![Page 54: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/54.jpg)
RubyはClojureに影響を与えている
![Page 55: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/55.jpg)
そもそもRuby
![Page 56: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/56.jpg)
with influence from Emacs implementation (Matz)
![Page 57: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/57.jpg)
Lispから生まれLispに返る
![Page 58: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/58.jpg)
Point
![Page 59: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/59.jpg)
2~3年前くらいまでは「関数型」で
「メシを食う」のは一部だった(印象)
![Page 60: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/60.jpg)
プロダクト採用事例の増加 - Scala
![Page 61: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/61.jpg)
RabbitMQなどのOSS基盤へ - Erlang
![Page 62: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/62.jpg)
そもそもLightweight Language
![Page 63: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/63.jpg)
2004 Lightweight Language WEEKEND
![Page 64: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/64.jpg)
プログラムより抜粋
![Page 65: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/65.jpg)
半分建前半分本音
![Page 66: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/66.jpg)
如何なるパラタイムでも
食わず嫌いしない
![Page 67: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/67.jpg)
なぜなら、技術が進歩する以上
プログラミングも進歩する
![Page 68: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/68.jpg)
前置きここまで(スライド48枚消化)
![Page 69: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/69.jpg)
見せてもらおうか金になりにくいパラダイムってやつをよ!!!
![Page 70: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/70.jpg)
![Page 71: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/71.jpg)
夢は終わったが(第五世代コンピューター)
論理型の代表はダテじゃない!!
![Page 72: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/72.jpg)
Prolog
![Page 73: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/73.jpg)
お薦めの処理系(現在 Stable 6.6)
![Page 74: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/74.jpg)
Prologとかって1989年の言語だしWeb Serverとか作れないでしょ
![Page 75: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/75.jpg)
SWI PrologはWeb Serverも立てられる(公式doc)
![Page 76: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/76.jpg)
つーても例えばR言語とか連携しにくいでしょ
![Page 77: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/77.jpg)
Rへのインターフェイス……だと?(公式doc)
![Page 78: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/78.jpg)
Prologはまだ進化している……
![Page 79: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/79.jpg)
ちなみに総務省の異能ベーションでは
「Prologの次世代言語」で提出させてもらいました
![Page 80: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/80.jpg)
もしかしたら毎日寿司が食べられるかも ……(画像) Wikipedia ― http://commons.wikimedia.org/wiki/File:2007feb-sushi-odaiba-manytypes.jpg
![Page 81: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/81.jpg)
せっかくだからRubyで
論理プログラミング
![Page 82: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/82.jpg)
老舗のLogic Programming(ただ活動は微妙)
![Page 83: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/83.jpg)
SchemeによるLogic Programming本(翻訳は無し)
![Page 84: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/84.jpg)
Lisp
![Page 85: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/85.jpg)
これはやりたかっただけです
![Page 86: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/86.jpg)
ただ、RubyのminiKanrenは微妙に使えない
![Page 87: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/87.jpg)
そこで‘Ruby-Prolog’
![Page 88: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/88.jpg)
使い方
require 'ruby-prolog'c = RubyProlog::Core.newc.instance_eval do # ここにロジックを書く
end
![Page 89: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/89.jpg)
ジャンケンのルールを
記述してみる
![Page 90: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/90.jpg)
以下、CROSS 2014の使いまわしです
(手を抜いてすいません)
![Page 91: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/91.jpg)
じゃんけんとは
● ある要素(この場合は手)に対して、何の手に勝利しているかの関係性によって勝敗が決定するゲームである○ グー→チョキ○ チョキ→パー○ パー→グー
![Page 92: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/92.jpg)
ある関係性を「解くためのロジック」を排除出来るならば、そのルール自体については、「推論」で事足りる
![Page 93: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/93.jpg)
つまりこういうこと
janken['グー', 'チョキ'].factjanken['パー', 'グー'].factjanken['チョキ', 'パー'].fact
puts query(janken[:P, 'チョキ']).to_s# => [[janken["グー", "チョキ"]]]
![Page 94: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/94.jpg)
「勝つ」とは
● ある要素(この場合は手)の関係が成り立つ場合において、何の要素と結びついているかということである○ プレイヤーの手とCPUの手という組み合わせがルール
に書いてあるなら、プレイヤーの勝ち
○ CPUの手とプレイヤーの手という組み合わせがルール
に書いてあるなら、CPUの勝ち○ どっちもないなら引き分け
![Page 95: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/95.jpg)
勝利ルールの定義
win_p1[:P1, :P2] << [janken[:P1, :P2]]win_p2[:P1, :P2] << [janken[:P2, :P1]]
![Page 96: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/96.jpg)
勝利判定関数の定義
def win?(p1, p2) if query(win_p1[p1, p2]).length != 0 'Win Player 1' elsif query(win_p2[p1, p2]).length != 0 'Win Player 2' else 'Draw !!' end end
![Page 97: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/97.jpg)
実行
puts win?('チョキ', 'パー')puts win?('グー', 'パー')puts win?('パー', 'パー')
![Page 98: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/98.jpg)
● 「事実」の宣言により、関係を記述するだけで、その「事実」についての推測は追いやれる○ 逆に言えば、「推論」を高度に隠蔽するため解りにくい部
分は生まれるが、これはどんな言語を使っても一緒だろ
う
● 推論部分を追いやれるということは、ある意味において、「設定ファイル」に近づいていく
Prologの良いところ
![Page 99: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/99.jpg)
Prologの悪いところ
● 組み合わせ爆発○ これはグラフデータベースにも言えることで、推論に関する組み合わせが
爆発すれば、当然死ぬ
● デバッグしにくい○ X + Y = 3は、無限に組み合わせが生まれるので推論エラーになるけれ
ど、これを「推論」として避けながら記述するのは難しい
● 対話前提は人間には早すぎる○ 基本、irbのような対話型で「推論」を問い合わせながらやるけど、欲しいの
は「対話」ではなく「結果」
![Page 100: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/100.jpg)
![Page 101: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/101.jpg)
テメエの記述が正しいかどうか俺に証明させろ
![Page 102: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/102.jpg)
Isabelle
![Page 103: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/103.jpg)
Proof Assistant諸事情
![Page 104: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/104.jpg)
Proof Assistantってなんだ
● Proof Assistant は「証明支援」のこと● ある証明が矛盾なく「成り立つ」ために必要なも
のはなにか、あるいは矛盾していないかを虱潰しに探し出してくれる
● 「論理型」が「内側から成り立つ」ことを探すなら、「証明支援」は「外側から成り立つ」ことを調べてくれる
![Page 105: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/105.jpg)
Proof Assistant二大巨頭
● 日本語の情報が探しやすく、コミュニティーもあり、完成度も高いのはCoq○ Ocamlベース
● Haskellベースで書かれているのはAgda
![Page 106: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/106.jpg)
えっ、Isabelle使わなくても
良くね?
![Page 107: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/107.jpg)
あなた、言ってはいけないことを言ってしまいましたね
![Page 108: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/108.jpg)
Proof Assistant実績情報
![Page 109: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/109.jpg)
GIZMODOの記事
http://www.gizmodo.jp/2014/08/post_15285.html
![Page 110: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/110.jpg)
Isabellの力技を見ろ ーー String???
![Page 111: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/111.jpg)
報告
![Page 112: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/112.jpg)
半分建前半分本音
![Page 113: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/113.jpg)
如何なるパラタイムでも
食わず嫌いしない
![Page 114: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/114.jpg)
なぜなら、技術が進歩する以上
プログラミングも進歩する
![Page 115: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/115.jpg)
技術が進歩する以上周囲の
プログラミング言語も進化する
![Page 116: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/116.jpg)
そもそも技術やWebサービスは僕たちを便利にするためのもの
![Page 117: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/117.jpg)
「こんなことできるんだ!
スゲー!」というセンスオブワンダー
![Page 118: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/118.jpg)
mameさんーーRubyを用いた超絶技巧プログラム
![Page 119: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/119.jpg)
それが僕にとっては「すごいもの」だったから
![Page 120: お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会](https://reader036.vdocuments.site/reader036/viewer/2022081801/547bb22eb479596d098b4eab/html5/thumbnails/120.jpg)
聞いてくれてありがとう!