Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPerがこれから「型」とお付き合いしていくために

penguin045
February 11, 2020

 PHPerがこれから「型」とお付き合いしていくために

PHPerKaigi 2020登壇資料

penguin045

February 11, 2020
Tweet

More Decks by penguin045

Other Decks in Programming

Transcript

  1. 型システムとは何なのか • プログラムのふるまいを推論するためのツール • 始めは int と float の違いを区別するようなもの ◦

    効率よく計算するため • 1970 年ごろからより高度な概念が研究される ◦ 部分型 ◦ 再帰型 ◦ 多相 ◦ 高階型 ◦ などなど 7
  2. 安全性を高める(裏の顔) • 多くの言語では、抜け道が存在する ◦ たとえば、メモリ操作 API があるとか ◦ 低レベル API

    はそういうのがありがち • 「安全」の定義がまちまち ◦ 型安全? ◦ メモリ安全? 13
  3. 横道:型推論について • 右辺の型を計算し、左辺の型を推論します • var a = hoge; だけではない def

    map(ls, f) = ls match { case h::t => f(h) :: map(t, f) case Nil => Nil } • 上の疑似コードの型が決まるのが型推論のすごさ 26
  4. 型システムを強化することへの期待 • 型宣言が性能を上げる ◦ JIT で型宣言の情報を使う ◦ タイプヒンティングをすると性能が悪いのは過去の話 ▪ すでに

    Opcache で性能向上に利用されている(と言えなくもない) • 開発のしやすさの向上 ◦ もちろん動的型付き言語のメリットはある程度犠牲になる ◦ プロダクトの長い成長に耐えるコードベースの基礎ができる 32