この記事は 「Pythonって、たぶんそういう意味じゃない」シリーズ の番外編です。
Python歴5年以上、メインで使い続けてきた変態が書いています。
この記事は 個人の経験に基づくポエムです。
環境・用途・経験によって異なる場合があります。
AIにコードを書かせるとき、言語によってコストが違う。
そう気づいたのは、単純な疑問からだった。
「Hello World」を書かせるだけで、言語ごとにどれくらいトークン数が違うんだろう。
OpenAIの最新5.x系トークナイザーで、主要な言語の「Hello World」を実際に測ってみた。
結論:同じ「Hello World」でも、5倍差がある
先に結果を出す。
| 順位 | 言語 | Tokens | Characters |
|---|---|---|---|
| 1 | Python | 6 | 22 |
| 1 | Swift | 6 | 22 |
| 1 | Lua | 6 | 22 |
| 1 | Ruby | 6 | 20 |
| 1 | Bash | 6 | 20 |
| 6 | Elixir | 8 | 24 |
| 6 | JavaScript / TypeScript | 8 | 29 |
| 6 | PowerShell | 8 | 28 |
| 9 | C# | 9 | 35 |
| 10 | PHP | 11 | 30 |
| 11 | Rust | 12 | 44 |
| 11 | Kotlin | 12 | 43 |
| 11 | Dart | 12 | 41 |
| 14 | Scala | 14 | 52 |
| 14 | Haskell | 14 | 45 |
| 16 | Go | 20 | 76 |
| 17 | C | 25 | 83 |
| 18 | Java | 26 | 117 |
| 19 | C++ | 29 | 96 |
| 20 | Zig | 30 | 97 |
最少のPython・Ruby系が6トークンなのに対して、最多のZigは30トークン。5倍の差がある。
なぜここまで差が出るのか
理由は単純だ。言語仕様として、書かなければいけない「お約束」の量が違う。
Pythonはprint("Hello, World!")の一行で完結する。
一方でJavaは、クラス定義・publicの宣言・staticなmainメソッド……と、
「Hello World」を出力するためだけに何行もの構造が必要になる。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
このお約束の部分は、内容として意味のある情報を運んでいない。
AIにとっても人間にとっても、毎回同じことを書かされている「コスト」になる。
トークンが少ないと、何が嬉しいのか
AIにコードを生成させるとき、入力と出力のトークン数がそのままコストと速度に直結する。
- トークンが少ない → 生成が速い、コストが低い
- 同じ文脈量なら、より多くのコードをコンテキストに詰め込める
- シンプルな構文ほど、AIが「何をすべきか」を見失いにくい
言語のトークン効率は、そのままAIとの相性の一部になる。
もちろんこれだけで「AIに向いている言語」が決まるわけではないが、無視できない要素だ。
上位グループに見える共通点
上位の言語を並べると、ある傾向が見える。
Python・Ruby・Lua・Bash・Elixir——いずれも「最小限の記述で動く」ことを重視した言語だ。
型注釈が必須ではなく、クラス定義や public/private の宣言も強制されない。
「書きたいことをそのまま書く」という設計思想が、そのままトークン数の少なさに現れている。
逆にJava・C++・Zigのような言語は、
安全性や明示性を重視するぶん、お約束の記述量が増える。
これは言語の欠点ではなく、設計思想の違いだ。
Rustが意外と多かった理由
個人的に意外だったのはRustの12トークンという結果だ。
fn main() { println!("Hello, World!"); }と、構文自体はそれほど長くない。
それでもPython勢の倍のトークンになっている。
fn main() {
println!("Hello, World!");
}
fn、println!のマクロ記法、波括弧の構造——
Pythonにはない「型」や「構造」を明示する部分が、トークン数に反映されている。
まとめ
- 同じ「Hello World」でも、言語によってトークン数は最大5倍違う
- 差の正体は、言語仕様上の「お約束」の記述量
- Python・Ruby系は最小限の記述で動く設計思想が、トークン効率の良さに直結している
- トークン効率は「AIとの相性」を測る一つの軸になる
「AIが得意な言語」という言葉は、たぶん一つの意味じゃない。
今回はその中の「トークン効率」という一面を覗いてみた。
「Pythonって、たぶんそういう意味じゃない」 シリーズでは、
こういう"なんとなくで語られがちなPython"を言語化していきます。
👉 ストックをフォローしておくと次の記事を見逃しません!