LoginSignup
9
1

More than 1 year has passed since last update.

PyCon JP 2022 day1 詳解 print("Hello, world")

Last updated at Posted at 2022-10-18

前回に続き、現地参加したPyCon JP 2022のセッションのまとめになります。

今回は、Day1の「詳解 print("Hello, world")」です。

動画

スライド

スピーカー

  • Rei Suyamaさん
    • 株式会社RevComm
    • バックエンドエンジニア

内容まとめ

  • シンプルな処理print("Hello, world")の裏側で何が起きているかの深掘り

Pythonとは2つの意味がある

  • プログラミング言語としての言語仕様
    • 文法や挙動の定義をまとめたもの
  • その言語仕様に沿った処理系
    • 実際のプログラム
    • PyPyJythonなど

プログラミング言語とソースコード

  • ソースコードは単なる文字列
  • 文字列に意味を持たせるのが言語
    • コンピュータに解釈してもらうのがプログラミング言語

抽象構文木(Abstract Syntax Tree, AST)

  • プログラミング言語は、ソースコードの文字列を解析してコンピュータが解釈しやすい形式に変換する
  • この変換工程がパース、これを行うのがパーサ
  • このコンピュータが解釈しやすい形式が、抽象構文木

標準ライブラリtokenize

  • Pythonソースコードをトークンに分割して出力するライブラリ
  • トークンとは、意味を持つ最小単位の字句

標準ライブラリast

  • Pythonソースコードの抽象構文木を出力するライブラリ
  • 抽象構文木は、プログラムとして意味を持つ情報を木構造で表現したもの

標準ライブラリdis

  • Pythonバイトコードの逆アセンブル結果を出力するライブラリ
  • Pythonバイトコードは、Python VMが解釈するマシン語

Python VM

  • Pythonバイトコードを逐次実行する仮想マシン
  • Python/ceval.cに記述された巨大なループでバイトコードを実行する

CPythonのビルド

感想

  • こちらもDay1のkeynoteに続き、Pythonの処理系に関するセッションでした。
  • tokenizeastdisといった標準ライブラリを使うと、抽象構文木やバイトコードの処理系を簡単に確認できるのは、初めて知りました。
  • 今まで気にしたことはなかったけど、PHPやRubyの他の言語にもこういうライブラリはありそうですね。
9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1