HHVM/Hack

PHPは、ZendEngineというインタプリタエンジンを使って動いている

インタプリタの挙動
1. テキストファイルを読み込む(IO処理)
2. ソースコードをパースしてopcodeに変換(CPU処理)
3. opcodeを順番に実行

Opcacheを用いることで一度変換したopcodeをメモリ上に載せておき、2回目以降の処理はメモリにキャッシュされたopcodeを取り出して実行する

opcodeは中間言語の為、cpuやosなど実行環境に応じて実行される。その為、JavaやCなどのコンパイル言語よりも実行速度が遅い
c++やgolangは最初のコンパイルで機械語まで変換する

### Hip Hop Virtual Machine
PHPやHack言語をx64CPU向けにJITコンパイルするvirtual machine。つまり、Zend Engineで実行する代わりにJITコンパイルして実行する
HHVMはFacebook開発
HHVMはPHP7からは非推奨だが、Hack言語のサポート

### Hack言語
PHPに静的型付け機能を追加し、HHVMに最適化
開始するタグが < ?php ではなく < ?hhで、HTMLに埋め込む形ができない Hackは非同期機能をサポート Wikipedia, baiduなどが採用 PHPフレームワークやライブラリが使えない? -> Codeigniter, cake, laravel, Yiiなど動作する

### Hack言語の機能
Generic(型をパラメータとして与え、型だけ違って処理の内容が同じものを作るときに使う)
Map(keyとvalueをset) / Vector(順番に値を保持) / Set(重複不可) / Pair(2つの値をセット)
Enum(値を列挙)
async, awaitで並列実行
hh_client(実行前に構文チェック)