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

2564c99f616f1ecfc0f617a6fe87e2a9?s=47 penguin045
February 11, 2020

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

PHPerKaigi 2020登壇資料

2564c99f616f1ecfc0f617a6fe87e2a9?s=128

penguin045

February 11, 2020
Tweet

Transcript

  1. 2.
  2. 7.

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

    効率よく計算するため • 1970 年ごろからより高度な概念が研究される ◦ 部分型 ◦ 再帰型 ◦ 多相 ◦ 高階型 ◦ などなど 7
  3. 13.

    安全性を高める(裏の顔) • 多くの言語では、抜け道が存在する ◦ たとえば、メモリ操作 API があるとか ◦ 低レベル API

    はそういうのがありがち • 「安全」の定義がまちまち ◦ 型安全? ◦ メモリ安全? 13
  4. 26.

    横道:型推論について • 右辺の型を計算し、左辺の型を推論します • var a = hoge; だけではない def

    map(ls, f) = ls match { case h::t => f(h) :: map(t, f) case Nil => Nil } • 上の疑似コードの型が決まるのが型推論のすごさ 26
  5. 32.

    型システムを強化することへの期待 • 型宣言が性能を上げる ◦ JIT で型宣言の情報を使う ◦ タイプヒンティングをすると性能が悪いのは過去の話 ▪ すでに

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