irisuinwl’s diary

サークル不思議(略)入巣次元の、数学や技術的なことを書きます。

CPython Internalsが良い

こんにちは、いりすです。最近youtubeバ美肉配信にハマってます

 

今回は最近読んでいるCPython Internalsについて紹介します。

 

CPython InternalsはReal Pythonというコミュニティから出た本で、CPython 3.9の実装を概念、コードリーディング、コードの改変を通して解説していく本となっております。

realpython.com

 

自分でまとめたnotionは以下となります

ついでですが、自分が読書配信した再生リストです:

www.youtube.com

 

本記事ではCPython Internalsを読んでみた感想を紹介します。

 

 

まず、CPython Internalsはcpython コンパイラを読んで理解するという意欲的な本ですが、解説が非常に丁寧でわかりやすいです。

 

最初の章では、cpythonをgitでcloneして、利用するOSごとにビルド方法を解説して、IDEごとに読むのに助かるextensionを紹介、そして、コンパイルするところまでを行います。

非常に導入が丁寧で好感が持てました。

 

また、並列処理の章では、そもそもPOSIXの並列処理(threadやprocess)ってどういう構造なの? OSでどういう処理がされているの? という基本的なところから解説を始めております。

基礎から、だんだんとPythonのmultiprocessingライブラリの説明やPool, Pipeの構造、GILの説明へと進んでいき、最終的にCoroutinesとasyncioの解説までを扱います。

 

解説だけでなく、実際にコードを動かし、理解をさせるバランスも上手いです。

 

まず、一番最初のLanguage and Grammarの章では、PythonのGrammarファイルを編集して、passと同等の処理をする命令を追加し、実際にGrammarからparserの再生成を行って、ファイルとPythonの動きがどのように同期するかを説明します。

 

Lexing and Parsingの章では、実際に入力したコードをCSTを木構造の形で出力するコードを書いたり、ASTをvisualizeするライブラリであるinstavizを用いてコードに対してどのようなCST, ASTが作られてCST, ASTとは何かを説明します。

 

章の順序も素晴らしいです。

Grammar -> Configure -> Parsing -> CompileとCPythonコンパイラの処理の順序から順に解説していくので、本当の本当の基礎からCPythonを理解できます。

 

ただし、Pythonのことを少し知っていないと読むのは厳しいかもしれません。python文法の解説は全くしないので。

おそらく、CPythonコンパイラを読む人だから、Pythonのことを知らない人はいないと思うのですが…

 

とにかく非常によく書かれている本です。

Pythonのことを実装レベルで深く知りたい人や、Pyhtonのコードリーディングを通してコンパイラプログラミング言語を知りたいという人はかなりオススメの本となっております。

 

では。