casualにrubyをパースしてみたい
DESCRIPTION
とちぎRuby会議05での発表資料 http://regional.rubykaigi.org/tochigi05TRANSCRIPT
![Page 1: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/1.jpg)
とちぎRuby会議05
casualにRubyをパースしてみたい
Shinya Hayakawa2013/09/21(土)
![Page 2: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/2.jpg)
概要
•“思い遣りプログラミング”
•自然言語すごい
•Rubyをパースする試み
•新しいプログラミング言語
![Page 3: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/3.jpg)
Pascal思いやりプログラミング
•‘77刊
![Page 4: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/4.jpg)
思いやりとは?
•読みやすいプログラムを書くこと
•使いやすいプログラムを書くこと
![Page 5: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/5.jpg)
誰を思いやる?
•プログラムを使う人
•プログラムを読む人
•自分
![Page 6: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/6.jpg)
どうやって?•意味を表せ
•構造を表せ
•変数の目的はハッキリと
•メッセージは平易なことばで
・・・・・・
・・・
![Page 7: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/7.jpg)
プログラマが知るべき97のこと
82 他者への思いやりを意識したコーディング
![Page 8: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/8.jpg)
他人の存在を意識する
•必ずしも良いコード
クリーンなコード、だけとは限らない
![Page 9: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/9.jpg)
他人の存在を意識する
•コードに触れた誰もが
触れる前より良い人間
良いプログラマになれる
![Page 10: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/10.jpg)
コードに触れた誰もが触れる前より良い人間良いプログラマになれる
![Page 11: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/11.jpg)
プログラミング言語とは
•コンピュータに命令を
伝えるための道具
![Page 12: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/12.jpg)
プログラミング言語
•伝えることばかり意識すぎると、自己主張に偏ったコードになりがち
![Page 13: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/13.jpg)
「思い遣る」
•思いを馳せる
•思いを相手の心に遣わす
•気持ちを察する
山下 景子著 『日本人の心を伝える 思いやりの日本語』より
![Page 14: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/14.jpg)
なぜ思いやるか?
•プログラマは必ずしも、伝えたいことがあるからコードを書くわけでは無い
(code golf, quiz, puzzle, esolang, ...)
![Page 15: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/15.jpg)
なぜ思いやるか?
•意味のないコードを交わして得る安心感、満足感
•ただ、つながっていたかっただけ…
![Page 16: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/16.jpg)
なぜ思いやるか?
•何かを伝えようと書くことよりも、つながっていたいという気持ちが大切
![Page 17: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/17.jpg)
誰とつながりたい?
•コンピュータ?
•e.g. 効率性
•顧客、ユーザ?
•e.g. 「直接的な写像」
•プログラマ?
![Page 18: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/18.jpg)
より深くつながりたい
![Page 19: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/19.jpg)
よりよいつながりを求めて
•情緒力
•人の喜びを自分の喜びとして体得できる心情
•人間の深みを表すコードの世界
![Page 20: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/20.jpg)
参考
•大島 潔 著
『思い出して使ってみたい美しい日本語』
•岡潔 著 『春宵十話』
![Page 21: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/21.jpg)
「命令を伝えるための道具」↓
「つながりを深めるための道具」
プログラミング言語
![Page 22: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/22.jpg)
自然言語すごい
•結果目的語
•時間による空間叙述
•コンテキストの圧縮
![Page 23: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/23.jpg)
結果目的語
•湯を沸かす
•ご飯を炊く
•彼女ほしい
![Page 24: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/24.jpg)
挽く
•麦をひく
•臼をひく
•粉をひく
森田良行著 『日本語質問箱』より
![Page 25: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/25.jpg)
時間による空間叙述
•空間表現
•「長い」「短い」…
•時間表現
•「始まる」「終わる」…山梨正明著 『認知文法論』より
![Page 26: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/26.jpg)
時間による空間叙述
•空間表現と時間表現は、比喩的な拡張に基づいて交わる
![Page 27: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/27.jpg)
時間による空間叙述
•雨の奥から松らしいものが、ちょくちょく顔を出す
『草枕』
•頻度の副詞により空間世界が叙述される
![Page 28: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/28.jpg)
Rubyをパースする試み
•自然言語の表現力をプログラミングに取り入れたい
•パースは困難
•とりあえずRuby?
![Page 29: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/29.jpg)
どうやって?
•Rubyコーパス
•教師なし学習
•コメント、予約語は知らない状態から
![Page 30: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/30.jpg)
参考•入門 自然言語処理
•入門 機械学習
•形式言語の理論
•コーパス分析に基づく認知言語学的構文研究
![Page 31: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/31.jpg)
新しいプログラミング言語を妄想する
•自然言語のような表現が可能なプログラミング言語
•高コンテキスト言語
![Page 32: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/32.jpg)
省略のグラデーション
•「彼は女をゆさぶりました。呼びました。抱きました。徒労でした。彼はワッと泣きふしました。」坂口安吾『桜の森の満開の下』
中村 明著 『文学の名表現を味わう』より
![Page 33: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/33.jpg)
省略のグラデーション
•「彼は女をゆさぶって、呼んだり抱いたりしましたが、徒労だったので、ワッと泣きふしました」
中村 明著 『文学の名表現を味わう』より
![Page 34: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/34.jpg)
省略のグラデーション
•「彼は女をゆさぶりました。そして、呼びました。それから、抱きました。しかし、徒労でした。それで、ワッと泣きふしました。」
中村 明著 『文学の名表現を味わう』より
![Page 35: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/35.jpg)
省略のグラデーション
•接続詞でつなぐと一連の流れが関連つく
•省略で緊迫感を出す
•省略されても構造は保たれている
![Page 36: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/36.jpg)
妄想code
•例外は投げてくれるな的な表現?
cf. File.open
ファイルがありました。開きました。読みました。YAMLでした。…
![Page 37: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/37.jpg)
「無名の質」
•自分が最も生き生きとする瞬間や状況を求める
•「言葉にできない何か」を実現する
•≒情緒力?
![Page 38: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/38.jpg)
〈言語の本質〉
•言葉には“理想文”を作り出す力はない
•本質的に“意味確定度不十分”なもの
今井邦彦著 『語用論への招待』より
![Page 39: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/39.jpg)
〈言語の本質〉
•他人の心が(ある程度)読めるからこそ思いやりを示せる
•聞き手の推論能力に依存
•言語は「不完全」でいられる今井邦彦著 『語用論への招待』より
![Page 40: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/40.jpg)
まとめ
•「無名の質」を追い求めるのに最適なプログラミング言語をつくりたい
•「不完全さ」が必要
![Page 41: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/41.jpg)
巨人の肩
•East Ventures Engineer Accelerator
http://engineer.east.vc
![Page 42: casualにRubyをパースしてみたい](https://reader033.vdocuments.pub/reader033/viewer/2022042700/556a5e3fd8b42a7a138b520b/html5/thumbnails/42.jpg)
つづきは@tsurumau