SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
学ばないDSL
2014/01/15 @tadsan
渋谷.rb[:20140115]
お前誰よ
うさみけんた
2012年の夏まで北海道で自宅警備
最近はずっとPHPばっかり書いてます
ぷろぐらみんぐ言語が好きです
渋谷.rbの参加は3回め(だった気がする)
自己紹介
ぼくの好きなプログラミング
スクリプト(台本)
scripter
title

= ->(*args){ ->{ puts args.join("n") } }	
= ->(text) { "『#{text}』n" }	

paragraph = ->(*args){ args.join("n") + "n" }	
chara
= ->(name) { ->(text){ "#{name}「#{text}」"} }	
ryu = chara[:リュウ]; tak = chara[:たかし]	
script = scripter[title[:俺より強い奴に、会いに行く],	
paragraph[:ピンポーン, ryu[:こんにちは], tak[:はいどなた]],	
paragraph[ryu[:いまちょっといいですか], tak[:これから出かけます]],	
paragraph[ryu[:午後出勤ですか?], tak[:はい]],	
paragraph[ryu[:強そうですね], tak[:なにがですか]],	
paragraph[ryu[:態度が]],	
paragraph[:リュウは、自分より強そうな奴に、会いにいったのだった。 完]	
]	
script[]
台本を出力(実行結果)
『俺より強い奴に、会いに行く』	

!
ピンポーン	
リュウ「こんにちは」	
たかし「はいどなた」	

!
リュウ「いまちょっといいですか」	
たかし「これから出かけます」	

!
リュウ「午後出勤ですか?」	
たかし「はい」	

!
リュウ「強そうですね」	
たかし「なにがですか」	

!
リュウ「態度が」	

!
リュウは、自分より強そうな奴に、会いにいったのだった。 完
何をしてるのか
ラムダ式とクロージャ
可変長引数を結合してる
ドメイン固有言語 - Wikipedia
ラムダ式で学ぶクロージャとDSL
意外と移植性が高い!
最近読んだ本
世間には根強く
「えっコンパイラも実装したことないの」
「Lispインタプリタとか課題で実装したわー」
!

といった声がある
言語処理系の基礎が
完全無料で学べる!
実装してみた
出落ち!
MatzLisp!
本書中のサンプルコードは

ふつうのRubyで書かれてます
!

ご安心ください
   _
   \ヽ, ,、
     `''|/ノ
      .|
 _    |
 \`ヽ、|
   \, V
      `L,,_
      |ヽ、)
     .|
    /           ,、
    /        ヽYノ
   .|       r''ヽ、.|
   |        `ー-ヽ|ヮ
    |            `|
   ヽ,    ,r      .|
     ヽ,r'''ヽ!'-‐'''''ヽ、ノ
 ,,,..---r'",r, , 、`ヽ、 ヾ
 ヽ、__/ ./ハレハ i`ヽ、 `''r`ミ_
   .レ//r,,,、 レ'レハヾ,  L,,_ `ヽ、
    "レ, l;;;l   l;;;l`i.リレ' リ ̄~~
     ヽ、 ワ `"/-'`'`'
       `''''''''"      ┼ヽ  -|r‐、. レ |
                 d⌒) ./| _ノ  __ノ

使用フォント
セプテンバーM・L

Más contenido relacionado

Destacado

文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
Tomoharu ASAMI
 
【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方
nwrnet
 
Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要
nwrnet
 
マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。
剛 大島
 
収入と貯蓄の関係V1
収入と貯蓄の関係V1収入と貯蓄の関係V1
収入と貯蓄の関係V1
Shimizu Hitoshi
 
Mon2 25
Mon2 25Mon2 25
Mon2 25
medism
 
大学生のためのドラッカー 同志社生協講演
 大学生のためのドラッカー 同志社生協講演 大学生のためのドラッカー 同志社生協講演
大学生のためのドラッカー 同志社生協講演
ToshimasaHikita
 
Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010
Yamagata Yoriyuki
 

Destacado (20)

C# linq入門 意図編
C# linq入門 意図編C# linq入門 意図編
C# linq入門 意図編
 
SimpleModeler
SimpleModelerSimpleModeler
SimpleModeler
 
ORと経済学の「結婚」問題
ORと経済学の「結婚」問題ORと経済学の「結婚」問題
ORと経済学の「結婚」問題
 
Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発
 
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox
 
【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方【Nwr】0417おしゃれな生き方
【Nwr】0417おしゃれな生き方
 
モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-モテない男のソリューション -万葉恋愛メソッド-
モテない男のソリューション -万葉恋愛メソッド-
 
プロの無職についての考察:序
プロの無職についての考察:序プロの無職についての考察:序
プロの無職についての考察:序
 
バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用バーニングマンから考える組織論 20140223Co-Lab用
バーニングマンから考える組織論 20140223Co-Lab用
 
Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要Nwrノルウェースタディーツアー概要
Nwrノルウェースタディーツアー概要
 
マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。マイケル・ポーターの『競争の戦略』を読んだら。
マイケル・ポーターの『競争の戦略』を読んだら。
 
女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術女性にモテるためのIT系男子的部屋の片付け術
女性にモテるためのIT系男子的部屋の片付け術
 
Leadership
LeadershipLeadership
Leadership
 
(10)昇進管理
(10)昇進管理(10)昇進管理
(10)昇進管理
 
収入と貯蓄の関係V1
収入と貯蓄の関係V1収入と貯蓄の関係V1
収入と貯蓄の関係V1
 
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
大阪大学サイバーメディアセンターにおける可視化サービスの取り組み
 
Mon2 25
Mon2 25Mon2 25
Mon2 25
 
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイルDSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
 
大学生のためのドラッカー 同志社生協講演
 大学生のためのドラッカー 同志社生協講演 大学生のためのドラッカー 同志社生協講演
大学生のためのドラッカー 同志社生協講演
 
Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010Google 日本語入力 TechTalk 2010
Google 日本語入力 TechTalk 2010
 

Más de Kenta USAMI

Rubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミングRubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミング
Kenta USAMI
 
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかDTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
Kenta USAMI
 
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてキャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
Kenta USAMI
 
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
Kenta USAMI
 

Más de Kenta USAMI (20)

5分でわかる静的解析入門
5分でわかる静的解析入門5分でわかる静的解析入門
5分でわかる静的解析入門
 
なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇なんとかStormに負けたくないEmacs初級篇
なんとかStormに負けたくないEmacs初級篇
 
たのしい独自フレームワーク
たのしい独自フレームワークたのしい独自フレームワーク
たのしい独自フレームワーク
 
Real World PHP in pixiv
Real World PHP in pixivReal World PHP in pixiv
Real World PHP in pixiv
 
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
人類の役に立たないDSL、そしていつからRubyが最高の言語だと錯覚してた? with PHP
 
はじめてのUser-Agent文字列
はじめてのUser-Agent文字列はじめてのUser-Agent文字列
はじめてのUser-Agent文字列
 
Rubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミングRubicureに学ぶメタプログラミング
Rubicureに学ぶメタプログラミング
 
Accept-language
Accept-languageAccept-language
Accept-language
 
php.js
php.jsphp.js
php.js
 
これからの名前の話をしよう
これからの名前の話をしようこれからの名前の話をしよう
これからの名前の話をしよう
 
近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話近況の報告と自宅警備員が失職した話
近況の報告と自宅警備員が失職した話
 
札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか札幌F#勉強会とは何だったのか
札幌F#勉強会とは何だったのか
 
tadsanとは誰か
tadsanとは誰かtadsanとは誰か
tadsanとは誰か
 
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったかDTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
DTの異常な愛情 または私は如何にして心配するのを止めてWILLCOMを愛するようになったか
 
PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)PowerShell+Lisp = ? (第2回残パン会)
PowerShell+Lisp = ? (第2回残パン会)
 
キャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化についてキャンプ後の生活の変化とモチベーションの変化について
キャンプ後の生活の変化とモチベーションの変化について
 
関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』関数型都市忘年会『はじめての函数型プログラミング』
関数型都市忘年会『はじめての函数型プログラミング』
 
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)After Camp 2011『今日から始める函数型プログラミング』(内容無し)
After Camp 2011『今日から始める函数型プログラミング』(内容無し)
 
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
黒歴史・闇RubyKaigi(美しいRubyと私 そして闇プログラミング)
 
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
Rubyにおける構文追加の試み 〜ボクとRubyと俺々文法〜
 

Último

Último (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

学ばないDSL