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

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

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for penguin045 penguin045
February 11, 2020

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

PHPerKaigi 2020登壇資料

Avatar for penguin045

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