---
source_url: https://austinhenley.com/blog/python1024.html
source_title: "Making a Python interpreter in 1024 bytes"
hero_image: https://austinhenley.com/blog/images/python1024.png
tags: code-golf,python,interpreter,c-programming
generated_at: 2026-09-07T08:01:04.113Z
model: claude-haiku-4-5
---
# 1024バイトのPythonインタプリタをC言語で実装

Austin Z. Henley氏が、1024バイトのC言語コードでPythonインタプリタを実装するコードゴルフチャレンジに成功した。元の可読版は4800バイト以上であったが、最終的なゴルフ版は正確に1024バイトまで圧縮された。

Austin Z. Henley氏がコードゴルフのチャレンジとして、C言語でPythonインタプリタを実装した。当初は512バイト制限でのチャレンジだったが、これが十分ではないことが判明し、1024バイト制限に拡大された。

## インタプリタの機能

このインタプリタは、単一の小文字名を持つ整数変数をサポートしており、算術演算子（+、-、*、%）と比較演算子（<、>、<=、>=、==）を優先順位付きで実装している。制御フロー機能として、if・else文、while ループ（オプションのelse ブロック付き）、for x in range(y) ループ（オプションのelse ブロック付き）に対応している。また、引数なしの関数定義と関数呼び出し（再帰呼び出しを含む）もサポートしており、インデント ベースのブロック構造を使用している。print文は文字列リテラルまたは整数式に対応し、コメントも認識する。

![コードゴルフのテクニック](https://austinhenley.com/blog/images/codegolfingtips.png)

## 実装の工夫

このインタプリタは再帰下降パーサを採用しており、式を解析と同時に実行する。状態管理はグローバル変数で行われ、プログラムコードは999文字の固定長配列に、変数は256個のシンボルテーブル配列に格納される。ループは逆方向へのジャンプとソースコード再解析により実装され、関数はシンボルテーブル内の位置を保存して、呼び出し時にその位置にジャンプする仕組みになっている。

![Pythonインタプリタの実行](https://austinhenley.com/blog/images/python1024running.png)

元の可読版は4800バイト以上あったが、コードゴルフの手法を駆使して正確に1024バイトまで圧縮された。Henley氏は、もしfizzbuuzzのみの動作で良いのであれば、800バイト以下にできると予想している。また、他にも利用可能なゴルフテクニックがあると考えている。

## 筆者の見立て

- 1024バイトでの実装が可能かもしれないと予想していた
- fizzbuzzのみの実装であれば800バイト以下に削減できる可能性を示唆している
- 他にも活用できるゴルフテクニックが存在すると論じている

*この記事は元記事の事実のみに基づいて自動生成されました。*

## 出典

Austin Z. Henley's blog, "Making a Python interpreter in 1024 bytes", https://austinhenley.com/blog/python1024.html (Stack Overflow および GitHub の報道による)
