Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

コンテキストと仲良く

2.134 visualizaciones

Publicado el

Kichijoji.pm #14

Publicado en: Ingeniería
  • Sé el primero en comentar

コンテキストと仲良く

  1. 1. コンテキストと仲良く id:karupaneura Kichijoji.pm #14
  2. 2. ※今回のものを含む、ぼくがコミュニ ティにおいて発表する全ての内容は、 特に明⾔言のない限り所属する組織や団 体の意思やスタンスなどを代弁ないし 表明するものでは⼀一切ありません。 ※あくまでも個⼈人の考えに基づく内容 となりますので予めご了了承ください。 お断り
  3. 3. だれ • かるぱねるら (@karupanerura) at DeNA • Perl / Go / Python / Ruby / Java / etc.. • Japan Perl Association 理理事 • Gotanda.pm / Mackerel UG 発起⼈人 • Shibuya.pm 現リーダー (仮)
  4. 4. 宣伝: Shibuya.pm #18 • 7/5(⽊木) 19:00- • DeNA, Co,. LTD • テーマ: あのCPANモジュールの裏側 • skaji • songmu
  5. 5. こういうツイートをわざわざ しちゃうくらいPerlが好き
  6. 6. 今回のボツ題 よくあるPerl disへのdis
  7. 7. Perlに関してよく聞く話
  8. 8. Perlに関してよく聞く話 • シジル意味ある?邪魔では? • リスト邪魔、全部リファレンスでいいじゃん • なんでeqと==ふたつもあるの?無駄では? • 数値がいつのまにか⽂文字列列になっててキモい • 真偽値ないなんてありえない
  9. 9. これみんな ただのコンテキストに 対する理理解不不⾜足だよ
  10. 10. 全部コンテキストが背景にある • シジル • リスト • ⽂文字列列演算⼦子と数値演算⼦子 • 数値、⽂文字列列、真偽値などの表現 コンテキストを理理解してなきゃ意味わからなくて当たり前 ※とはいえちゃんと分からなくてもPerlは書けるよ!
  11. 11. tl;dr • コンテキストを理理解すればPerlをdisる理理由が ほぼなくなるよ • 少なくとも他のLLと同じかそれ以下にはなる
  12. 12. コンテキスト わかってしまえば こわくない 字余り
  13. 13. コンテキスト #とは ところで!
  14. 14. ⼀一般的に⾔言われるコンテキスト refs: https://www.google.co.jp/search?q=%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88
  15. 15. ⼀一般的に⾔言われるコンテキスト
 その2 refs: https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AF%E3%82%B9%E3%83%88
  16. 16. Perlにおけるコンテキストとは • Perlでデータを扱うときに必ず扱われる概念 • データの型解釈の仕⽅方をPerlに伝えるルール • コンテキストを理理解すればPerlでも型を⾃自在 にコントロールできる • Perlわからん…ってなってしまった⼈人は⼤大抵 コンテキストを理理解すれば解決する
  17. 17. コンテキストを理理解する = Perlをもっと好きになる⼀一歩! とはいえ、概念なので理理解が⼤大変。中級者以上向け
  18. 18. 先⼈人達の知⾒見見 • たくさんあるので読むと良いです • perldoc perldata • ほか「Perl コンテキスト」でググるとたくさ んでてくる • 抽象的な概念なので⾊色んな⼈人の解釈やコード を読んでイメージを⾃自分の中に作るのがコツ
  19. 19. おすすめスライド refs. https://www.slideshare.net/KondoYoshiyuki/yapc2012-20120929
  20. 20. 詳しい解説は今回はしません 知りたい⼈人はさっきの資料料読んでね
  21. 21. 個⼈人的なコンテキスト考 あくまでも私⾒見見なので そこんとこよろしく
  22. 22. perldoc perldata • perldoc.jp訳 • 「Perl はスカラが⽂文字列列、数値、リファレ ンス (オブジェクトを含みます)を 保持する ことのできる⽂文脈的多態⾔言語 (contextually polymorphic language) です。」
  23. 23. Contextually Polymorphic Language
  24. 24. データ型の違い • 変数が3種類類ある • スカラ/配列列/ハッシュ (単値とその集合) • スカラは評価されるコンテキストで具体的な型 が決定する • これがContextually Polymorphicたる所以
  25. 25. Perlは⾃自然⾔言語っぽい というか⼈人間っぽいというか • ⾃自然⾔言語っぽい書き味はコンテキストが作ってる • コンテキストはPerlが(ルールベースで)⼈人間っぽく 「空気を読んで」データを解釈する仕組みと⾔言える • Perlがどう空気を読んでくれるのかという仕様が コンテキストの本質 • とにかく他のプログラミング⾔言語とは異異⾊色
  26. 26. 「空気を読む」 #とは • 演算⼦子の種類類など⽂文を形作るものが何かによっ て、どのコンテキストかが定まる • ただのルールなので覚えれば⼈人も分かる • データが明確な型を持っている世界ではない • コンテキストによってデータの型が確定する • → 単純にパラダイムが異異なるので理理解が必要
  27. 27. でも、なんで…? 他の⾔言語と同じじゃダメ…?
  28. 28. 私⾒見見 他の⾔言語と同じでも良い けどPerlはこうしたかった それはなぜか
  29. 29. Perlの主戦場はテキスト処理理 • ⾃自然⾔言語上で型を意識した表現はしない • なぜなら⼈人の思考の中ではそのデータを数 値として扱うか⽂文(の⼀一部)として扱うかは⽂文 脈により⼀一意に決定されるから • モノが0個なら無い、1個や2個ならある、っ て判断は真偽値コンテキストじゃん?
  30. 30. たとえば年年齢 • 「100歳のおじいさん」だとか⼈人は書く • ⽂文中だから100を⽂文字列列にしようとか考えない けど⾃自然とやる • 逆に、"100歳" がわかれば来年年は +1 して "101歳" とか考えられる • 同様のことをコード上で素直に表現するには?
  31. 31. たとえば年年齢 • $age . '歳のおじいさん' • 「⽂文中なので年年齢は⽂文字列列として考えよう」 • $age + 1 • 「計算するんだから年年齢は数値として考えよう」 • つまりそれぞれの⽂文の中で$ageの型解釈が⾃自明
  32. 32. ⾃自然⾔言語っぽい データの解釈だと思いません?
  33. 33. ⼈人間が簡単にデータを扱いたい ↓ ⾃自然⾔言語のデータの扱い⽅方に合わせたい ↓ ⽂文脈によって型が⾃自明になるようにしたい ↓ ⽂文脈でデータ型を表現できる仕組みが必要 ↓ コンテキストの誕⽣生?
  34. 34. Perlがコンテキストで解決したこと • データの解釈を⾃自然⾔言語的にした • Perlはデータ型やメモリなどを理理解せずとも 書ける • システム運⽤用担当者などプログラミングに 明るくない⼈人にも優しい⾔言語になった • 「簡単なことはより簡単に」の実践
  35. 35. 解決しなかったこと • データ型など⼀一般的なプログラミング⾔言語の 概念と結びつけにくい • 柔軟な考え⽅方が苦⼿手な⼈人には少し難しい • 処理理系実装の複雑さを招く⼀一因になった • Cには当然コンテキストが存在しないので Objectiveに同様の物を表現する必要がある
  36. 36. まとめ
  37. 37. まとめ • コンテキストは分かれば簡単だけど最初は難しい • ⾃自然⾔言語的な側⾯面があり、ルールが多い • コンテキストはPerlの中⼼心になってる • ちゃんと理理解するとPerlと仲良くなれる • 各位、コンテキストと仲良く!
  38. 38. 落ち葉拾拾い(というか⾔言い訳) • あくまでも私⾒見見であり公式⾒見見解ではないよ • LTなんで詳しい説明はしなかったよ • 詳しく聞きたい⼈人は懇親会とかでも • 分からなくてもPerl書いて良いんだよ • 知ってると「より正しい」コードが書けるよ

×