娘の絵本を書いに行った本屋で、面白そうだなーと思って買ってみた。
感想
面白かった!流し読みしただけだけど。「俺、今、難しい本を読んでるぞ!」って雰囲気で「なるほど?」とか言うのを楽しんだ(分かってない
第2章 オペコードのパフォーマンスを考える
オペコードを見ながら「こうなるからパフォーマンスに違いがでるんだよ」って教えてくれてるの「へー!」ってなって面白かった。
第3章 PHPコアの仕組みと開発の定石を知る
zval構造体とかコピーオンライトとかHashTableの仕組みとかの説明が書いてあって面白かった。「zvalは、どの型にも対応している、美しく万能な構造体です」ってところが好き。
第4章 オブジェクト指向だとなぜ遅いのか
『オブジェクト指向だと遅くなる』だけで終わらずに『でも、保守性などを重視してオブジェクト指向で開発することをおすすめします』まで書いてあるの良いなー。 #PHPはどのように動くのか
— Mitsuyuki Shiiba (@bufferings) 2018年8月20日
第5章 PHP7はなぜ速くなったか
ここまでの説明が全部つながってる感じがしたなー。PHP5とPHP7のコピーオンライトの対応の違いがzvalの作りからも分かるの嬉しい。「PHP7ではその(zvalの)美しさを捨てて、型を差別化することにしました」ってところが好き。
その後の章は
ExtensionとZend Engineのハックなので、本当にさらっと読んだ。
全体的に
自分の理解力のせいでふわっとしか分かってないけど、でも裏側でどういうことが起こってるのかを雰囲気知ることができたので、楽しかった!
読んだ後
Zend Engineの名前のルーツはなんだろう?って気になって見つけた記事。Zendって名前はそういうことなのかー。
[ThinkIT] 第1回:意外と知らないZend Engine (1/3)
Zend Engineについてのスライド。めっちゃ分かりやすい。
www.slideshare.net
そのスライドの中で紹介されてたGCのお話のスライド。これもめっちゃ分かりやすい。
なるほど?
❯ cat hello.php <?php $name = "World"; echo "Hello, {$name}"; ❯ phpdbg -p\* hello.php function name: (null) L1-5 {main}() /path/to/hello.php - 0x7fde320700a0 + 5 ops L3 #0 ASSIGN $name "World" L4 #1 NOP L4 #2 FAST_CONCAT "Hello, " $name ~1 L4 #3 ECHO ~1 L5 #4 RETURN<-1> 1 [Script ended normally]
さて
普通のPHP入門の勉強に戻ろっと。