お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会
Upcoming SlideShare
Loading in...5
×
 

お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会

on

  • 2 views

 

Statistics

Views

Total Views
2
Views on SlideShare
2
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会 お金になりにくいプログラミング言語を学ぶ技術 - RubyHiroba 2014 生活発表会 Presentation Transcript

  • 䛚㔠䛻䛺䜚䛻䛟䛔 䝥䝻䜾䝷䝭䞁䜾ゝㄒ䜢 䜔䜚⥆䛡䜛ᢏ⾡ esehara shigeo RubyHiroba2014 ⏕άⓎ⾲఍
  • 䛚๓ ㄡ䛰
  • esehara shigeo ㊃࿡:ゝㄒ䛔䛨䜚 FizzBuzz䛾◊✲ ᩘㄽ䞉ㄽ⌮Ꮫ←New!! 㞴ゎ䝥䝻䜾䝷䝭䞁䜾 Pythonista Clojuren
  • ⏕ά䛾 ୍㒊
  • ึ⣭ၥ㢟
  • ✺↛䛾 Haxeḧ䟿
  • ୰⣭ၥ㢟
  • ✺↛䛾 FORTRAN77 ḧ䟿
  • ௚䛻䛿?
  • underscore.py
  • 䛒䜜䚸JavaScript䛻 ྠ䛨䜘䛖䛺䝥䝻䝎䜽䝖䛜
  • 䛚㔠䛻 䛺䜙䛺䛔䟿
  • ⏕ά 䛷䛩䛧䛽
  • 䛸䛔䛖䜟䛡䛷(?)
  • Rubyጞ䜑䜎䛧䛯
  • ฟ⮬䛿Pythonista䛷䛩
  • ௙஦䜒Python䛷䛩
  • ௙஦䛷䛿 Ruby䛿 ౑䛳䛶䛔䜎䛫䜣
  • 䛷䜒䜔䜝䛖䛸 ᛮ䛳䛯䛾䛷 Rubyጞ䜑䜎䛧䛯
  • Agenda
  • 䝇䝷䜲䝗120ᯛ 䛒䜚䜎䛩
  • Motivation
  • JUST FOR FUN 䚷http://www.amazon.co.jp/dp/4796880011
  • Example
  • Ruby䛿䛂ᴦ䛧䛥䛃䜢 ➨୍䛾┠ᶆ䛸䛩䜛 ゝㄒ䛷䛒䜛
  • It is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language. Swift Programming Language
  • But
  • ただ、肝心の「文章を書く」という作業はどうかというと、実は「好き」とか 「楽しい」とか思ったことはありません。文章がスラスラ出てくるなどという 経験はなく、基本的にはしぼり出すようなしんどい作業です。世の中に は文章を書くのが好きな人も多いと思いますが、私はWebの記事であ れ、雑誌の記事であれ、書くのは苦手です。精神力をごっそり削られま す。 プログラミングが楽しいと思えないのは悪いことなのか IT Proより
  • And
  • I wish to be able to eat sushi everyday. (⏬ീ) Wikipedia ―䚷http://commons.wikimedia.org/wiki/File:2007feb-sushi-odaiba-manytypes.jpg
  • Reason
  • ከゅⓗ䛺どⅬ䞊ᕥ㠃䛿㟷䚸ྑ㠃䛿㉥ (⏬ീ) Wikipedia ― Rubix cube.jpg
  • 㐨ල䛾⏕ែ⣔ (⏬ീ) Wikipedia 20060513Toolbox.jpg 䜘䜚
  • 䜲䝯䞊䝆䛸䛧䛶䛾ᢏ⾡ (⏬ീ) http://bjorn.tipling.com/if-programming-languages-were-weapons
  • ᘓ๓
  • ዴఱ䛺䜛 䝟䝷䝎䜲䝮䛷䜒 㣗䜟䛪᎘䛔䛧䛺䛔
  • 䜘䜚䜘䛔ᐇ⿦䛸 タィ䜢ồ䜑䛶
  • Language of Year (⏬ീ) Wikipedia ― Rubix cube.jpg
  • ᮏ㡢
  • JUST FOR FUN 䚷http://www.amazon.co.jp/dp/4796880011
  • 䛹䜣䛺䜒䛾䛷䜒 䛚㔠䛻䛿ฟ᮶䜛䛜 ⮬ศ䛜ฟ᮶䜛䛸䛿 㝈䜙䛺䛔
  • Real
  • functional programming 䛾ྎ㢌
  • Ᏻ඲䛷⥡㯇䛺㛤Ⓨ䛾䛯䜑䛻 - Scala
  • ㏻ಙ䜢☜ᐇ䛛䛴኱㔞䛻⿢䛟䛯䜑䛻 - Erlang
  • But
  • Ruby䛾䛂㛵ᩘᆺᚿྥ䛃䜙䛧䛥 ● 㛵ᩘ䛾᭱ᚋ䛾⾜䛿䛂ᬯ㯲䛻䛃㏉䜚್䜢ᣢ䛴 ○ 䝕䜱䝇䜰䝊䞁䝤䝷䛾ᣲື䜢ぢ䜛䛸䚸ṇ☜䛻䛿㛵ᩘ䜢 Leave䛧䛶䛔䜛䛳䜍䛔ᣲື( http://mugenup-tech. hatenadiary.com/entry/2014/07/03/195554) ● 㓄ิ䛻each䜔map䛺䛹䛾䛂㧗㝵䛃ⓗ䛺ᢅ䛔䛜⮬ ↛䛸䛷䛝䜛 ○ 䛸䛿䛔䛘䚸䝰䝎䞁䛺ゝㄒ䛰䛸䚸䛰䛔䛯䛔䛣䛖䛔䛖䛣䛸䛿ฟ ᮶䜛
  • వㄯ
  • Ruby䛿 ఱฎ䛻ᙳ㡪䜢 ୚䛘䛯䛛
  • Lisp᪘
  • Ruby䛿Clojure䛻ᙳ㡪䜢୚䛘䛶䛔䜛
  • 䛭䜒䛭䜒Ruby
  • with influence from Emacs implementation (Matz)
  • Lisp䛛䜙⏕䜎䜜 Lisp䛻㏉䜛
  • Point
  • 2䡚3ᖺ๓䛟䜙䛔䜎䛷䛿 䛂㛵ᩘᆺ䛃䛷 䛂䝯䝅䜢㣗䛖䛃䛾䛿 ୍㒊䛰䛳䛯(༳㇟)
  • 䝥䝻䝎䜽䝖᥇⏝஦౛䛾ቑຍ - Scala
  • RabbitMQ䛺䛹䛾OSSᇶ┙䜈 - Erlang
  • 䛭䜒䛭䜒 Lightweight Language
  • 2004 Lightweight Language WEEKEND
  • 䝥䝻䜾䝷䝮䜘䜚ᢤ⢋
  • ༙ศᘓ๓ ༙ศᮏ㡢
  • ዴఱ䛺䜛 䝟䝷䝍䜲䝮䛷䜒 㣗䜟䛪᎘䛔䛧䛺䛔
  • 䛺䛬䛺䜙䚸 ᢏ⾡䛜㐍Ṍ䛩䜛௨ୖ 䝥䝻䜾䝷䝭䞁䜾䜒 㐍Ṍ䛩䜛
  • ๓⨨䛝䛣䛣䜎䛷 (䝇䝷䜲䝗48ᯛᾘ໬)
  • ぢ䛫䛶䜒䜙䛚䛖䛛 㔠䛻䛺䜚䛻䛟䛔 䝟䝷䝎䜲䝮䛳䛶 䜔䛴䜢䜘!!!
  • ክ䛿⤊䜟䛳䛯䛜 (➨஬ୡ௦䝁䞁䝢䝳䞊䝍䞊) ㄽ⌮ᆺ䛾௦⾲䛿 䝎䝔䛨䜓䛺䛔䟿䟿
  • Prolog
  • 䛚⸀䜑䛾ฎ⌮⣔(⌧ᅾ Stable 6.6)
  • Prolog䛸䛛䛳䛶 1989ᖺ䛾ゝㄒ䛰䛧 Web Server䛸䛛 స䜜䛺䛔䛷䛧䜗
  • SWI Prolog䛿Web Server䜒❧䛶䜙䜜䜛(බᘧdoc)
  • 䛴䞊䛶䜒 ౛䛘䜀Rゝㄒ䛸䛛 㐃ᦠ䛧䛻䛟䛔䛷䛧䜗
  • R䜈䛾䜲䞁䝍䞊䝣䜵䜲䝇……䛰䛸䠛(බᘧdoc)
  • Prolog䛿 䜎䛰㐍໬䛧䛶䛔䜛……
  • 䛱䛺䜏䛻⥲ົ┬䛾␗⬟䝧䞊䝅䝵䞁䛷䛿 䛂Prolog䛾ḟୡ௦ゝㄒ䛃䛷ᥦฟ䛥䛫䛶䜒䜙䛔䜎䛧䛯
  • 䜒䛧䛛䛧䛯䜙ẖ᪥ᑑྖ䛜㣗䜉䜙䜜䜛䛛䜒 …… (⏬ീ) Wikipedia ―䚷http://commons.wikimedia.org/wiki/File:2007feb-sushi-odaiba-manytypes.jpg
  • 䛫䛳䛛䛟䛰䛛䜙 Ruby䛷 ㄽ⌮䝥䝻䜾䝷䝭䞁䜾
  • ⪁⯒䛾Logic Programming(䛯䛰άື䛿ᚤጁ)
  • Scheme䛻䜘䜛Logic Programmingᮏ䠄⩻ヂ䛿↓䛧)
  • Lisp
  • 䛣䜜䛿䜔䜚䛯䛛䛳䛯 䛰䛡䛷䛩
  • 䛯䛰䚸Ruby䛾 miniKanren䛿 ᚤጁ䛻౑䛘䛺䛔
  • 䛭䛣䛷 ‘Ruby-Prolog’
  • ౑䛔᪉ require 'ruby-prolog' c = RubyProlog::Core.new c.instance_eval do # 䛣䛣䛻䝻䝆䝑䜽䜢᭩䛟 end
  • 䝆䝱䞁䜿䞁䛾 䝹䞊䝹䜢 グ㏙䛧䛶䜏䜛
  • ௨ୗ䚸CROSS 2014䛾౑䛔䜎䜟䛧䛷䛩 (ᡭ䜢ᢤ䛔䛶䛩䛔䜎䛫䜣)
  • 䛨䜓䜣䛡䜣䛸䛿 ● 䛒䜛せ⣲䠄䛣䛾ሙྜ䛿ᡭ䠅䛻ᑐ䛧䛶䚸ఱ䛾ᡭ䛻຾ ฼䛧䛶䛔䜛䛛䛾㛵ಀᛶ䛻䜘䛳䛶຾ᩋ䛜Ỵᐃ䛩䜛 䝀䞊䝮䛷䛒䜛 ○ 䜾䞊→䝏䝵䜻 ○ 䝏䝵䜻→䝟䞊 ○ 䝟䞊→䜾䞊
  • 䛒䜛㛵ಀᛶ䜢䛂ゎ䛟䛯䜑䛾䝻䝆䝑 䜽䛃䜢᤼㝖ฟ᮶䜛䛺䜙䜀䚸䛭䛾 䝹䞊䝹⮬య䛻䛴䛔䛶䛿䚸䛂᥎ ㄽ䛃䛷஦㊊䜚䜛
  • 䛴䜎䜚䛣䛖䛔䛖䛣䛸 janken['䜾䞊', '䝏䝵䜻'].fact janken['䝟䞊', '䜾䞊'].fact janken['䝏䝵䜻', '䝟䞊'].fact puts query(janken[:P, '䝏䝵䜻']).to_s # => [[janken["䜾䞊", "䝏䝵䜻"]]]
  • 䛂຾䛴䛃䛸䛿 ● 䛒䜛せ⣲䠄䛣䛾ሙྜ䛿ᡭ䠅䛾㛵ಀ䛜ᡂ䜚❧䛴ሙ ྜ䛻䛚䛔䛶䚸ఱ䛾せ⣲䛸⤖䜃䛴䛔䛶䛔䜛䛛䛸䛔 䛖䛣䛸䛷䛒䜛 ○ 䝥䝺䜲䝲䞊䛾ᡭ䛸CPU䛾ᡭ䛸䛔䛖⤌䜏ྜ䜟䛫䛜䝹䞊䝹 䛻᭩䛔䛶䛒䜛䛺䜙䚸䝥䝺䜲䝲䞊䛾຾䛱 ○ CPU䛾ᡭ䛸䝥䝺䜲䝲䞊䛾ᡭ䛸䛔䛖⤌䜏ྜ䜟䛫䛜䝹䞊䝹 䛻᭩䛔䛶䛒䜛䛺䜙䚸CPU䛾຾䛱 ○ 䛹䛳䛱䜒䛺䛔䛺䜙ᘬ䛝ศ䛡
  • ຾฼䝹䞊䝹䛾ᐃ⩏ win_p1[:P1, :P2] << [janken[:P1, :P2]] win_p2[:P1, :P2] << [janken[:P2, :P1]]
  • ຾฼ุᐃ㛵ᩘ䛾ᐃ⩏ 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
  • ᐇ⾜ puts win?('䝏䝵䜻', '䝟䞊') puts win?('䜾䞊', '䝟䞊') puts win?('䝟䞊', '䝟䞊')
  • Prolog䛾Ⰻ䛔䛸䛣䜝 ● 䛂஦ᐇ䛃䛾ᐉゝ䛻䜘䜚䚸㛵ಀ䜢グ㏙䛩䜛䛰䛡䛷䚸 䛭䛾䛂஦ᐇ䛃䛻䛴䛔䛶䛾᥎ 䛿㏣䛔䜔䜜䜛 ○ ㏫䛻ゝ䛘䜀䚸䛂᥎ㄽ䛃䜢㧗ᗘ䛻㞃ⶸ䛩䜛䛯䜑ゎ䜚䛻䛟䛔㒊 ศ䛿⏕䜎䜜䜛䛜䚸䛣䜜䛿䛹䜣䛺ゝㄒ䜢౑䛳䛶䜒୍⥴䛰䜝 䛖 ● ᥎ㄽ㒊ศ䜢㏣䛔䜔䜜䜛䛸䛔䛖䛣䛸䛿䚸䛒䜛ព࿡ 䛻䛚䛔䛶䚸䛂タᐃ䝣䜯䜲䝹䛃䛻㏆䛵䛔䛶䛔䛟
  • Prolog䛾ᝏ䛔䛸䛣䜝 ● ⤌䜏ྜ䜟䛫⇿Ⓨ ○ 䛣䜜䛿䜾䝷䝣䝕䞊䝍䝧䞊䝇䛻䜒ゝ䛘䜛䛣䛸䛷䚸᥎ㄽ䛻㛵䛩䜛⤌䜏ྜ䜟䛫䛜 ⇿Ⓨ䛩䜜䜀䚸ᙜ↛Ṛ䛼 ● 䝕䝞䝑䜾䛧䛻䛟䛔 ○ X + Y = 3䛿䚸↓㝈䛻⤌䜏ྜ䜟䛫䛜⏕䜎䜜䜛䛾䛷᥎ㄽ䜶䝷䞊䛻䛺䜛䛡䜜 䛹䚸䛣䜜䜢䛂᥎ㄽ䛃䛸䛧䛶㑊䛡䛺䛜䜙グ㏙䛩䜛䛾䛿㞴䛧䛔 ● ᑐヰ๓ᥦ䛿ே㛫䛻䛿᪩䛩䛞䜛 ○ ᇶᮏ䚸irb䛾䜘䛖䛺ᑐヰᆺ䛷䛂᥎ㄽ䛃䜢ၥ䛔ྜ䜟䛫䛺䛜䜙䜔䜛䛡䛹䚸ḧ䛧䛔䛾 䛿䛂ᑐヰ䛃䛷䛿䛺䛟䛂⤖ᯝ䛃
  • 䝔䝯䜶䛾グ㏙䛜 ṇ䛧䛔䛛䛹䛖䛛 ನ䛻ド᫂䛥䛫䜝
  • Isabelle
  • Proof Assistant ㅖ஦᝟
  • Proof Assistant䛳䛶䛺䜣䛰 ● Proof Assistant 䛿䛂ド᫂ᨭ᥼䛃䛾䛣䛸 ● 䛒䜛ド᫂䛜▩┪䛺䛟䛂ᡂ䜚❧䛴䛃䛯䜑䛻ᚲせ䛺䜒 䛾䛿䛺䛻䛛䚸䛒䜛䛔䛿▩┪䛧䛶䛔䛺䛔䛛䜢⹻₽ 䛧䛻᥈䛧ฟ䛧䛶䛟䜜䜛 ● 䛂ㄽ⌮ᆺ䛃䛜䛂ෆഃ䛛䜙ᡂ䜚❧䛴䛃䛣䛸䜢᥈䛩䛺 䜙䚸䛂ド᫂ᨭ᥼䛃䛿䛂እഃ䛛䜙ᡂ䜚❧䛴䛃䛣䛸䜢ㄪ 䜉䛶䛟䜜䜛
  • Proof Assistant஧኱ᕧ㢌 ● ᪥ᮏㄒ䛾᝟ሗ䛜᥈䛧䜔䛩䛟䚸䝁䝭䝳䝙䝔䜱䞊䜒䛒 䜚䚸᏶ᡂᗘ䜒㧗䛔䛾䛿Coq ○ Ocaml䝧䞊䝇 ● Haskell䝧䞊䝇䛷᭩䛛䜜䛶䛔䜛䛾䛿Agda
  • 䛘䛳䚸 Isabelle౑䜟䛺䛟䛶䜒 Ⰻ䛟䛽?
  • 䛒䛺䛯䚸 ゝ䛳䛶䛿䛔䛡䛺䛔䛣䛸䜢 ゝ䛳䛶䛧䜎䛔䜎䛧䛯䛽
  • Proof Assistant ᐇ⦼᝟ሗ
  • GIZMODO䛾グ஦ http://www.gizmodo.jp/2014/08/post_15285.html
  • Isabell䛾ຊᢏ䜢ぢ䜝 䞊䞊 String???
  • ሗ࿌
  • ༙ศᘓ๓ ༙ศᮏ㡢
  • ዴఱ䛺䜛 䝟䝷䝍䜲䝮䛷䜒 㣗䜟䛪᎘䛔䛧䛺䛔
  • 䛺䛬䛺䜙䚸 ᢏ⾡䛜㐍Ṍ䛩䜛௨ୖ 䝥䝻䜾䝷䝭䞁䜾䜒 㐍Ṍ䛩䜛
  • ᢏ⾡䛜㐍Ṍ䛩䜛௨ୖ ࿘ᅖ䛾 䝥䝻䜾䝷䝭䞁䜾ゝㄒ䜒 㐍໬䛩䜛
  • 䛭䜒䛭䜒ᢏ⾡䜔 Web䝃䞊䝡䝇䛿 ൅䛯䛱䜢౽฼䛻 䛩䜛䛯䜑䛾䜒䛾
  • 䛂䛣䜣䛺䛣䛸 䛷䛝䜛䜣䛰䟿 䝇䝀䞊䟿䛃䛸䛔䛖 䝉䞁䝇䜸䝤䝽䞁䝎䞊
  • mame䛥䜣䞊䞊Ruby䜢⏝䛔䛯㉸⤯ᢏᕦ䝥䝻䜾䝷䝮
  • 䛭䜜䛜൅䛻䛸䛳䛶䛿 䛂䛩䛤䛔䜒䛾䛃 䛰䛳䛯䛛䜙
  • ⪺䛔䛶䛟䜜䛶䛒䜚䛜䛸䛖䟿