นักพัฒนาส่วนใหญ่รู้จัก "Python" แต่ไม่ได้รู้ว่ามีหลาย implementations (การนำภาษาออกใช้งานจริง) ซึ่งแต่ละตัวมีจุดประสงค์และความสามารถต่างกัน
Python คือ Specification (ข้อกำหนด)
Python เป็น language specification - ข้อกำหนดภาษาที่สามารถนำไป implement (นำไปสร้าง interpreter/compiler) ได้หลายแบบ
Implementation หลักๆ
1. CPython (มาตรฐาน / Reference Implementation)
- เขียนด้วย C
- เป็น implementation เริ่มต้นและแพร่หลายที่สุด
- คอมไพล์ Python code → bytecode → รันบน VM
- รองรับ C extensions ทั้งหมด (NumPy, Pandas, TensorFlow, etc.)
- มี GIL (Global Interpreter Limit) จำกัด multi-threading CPU-bound
2. PyPy (เร็วที่สุดสำหรับ Pure Python)
- เขียนด้วย RPython (subset ของ Python)
- ใช้ JIT (Just-In-Time) Compiler → เร็วกว่า CPython หลายเท่าสำหรับ pure Python code
- Memory efficient
- รองรับ C extensions จำกัด (ผ่าน cpyext layer)
- เหมาะสำหรับ long-running applications, web servers
3. Jython (Python บน JVM)
- เขียนด้วย Java รันบน JVM
- Import และใช้ Java libraries ได้โดยตรง
- ไม่มี GIL → true multi-threading
- ไม่รองรับ C extensions
- Python version ติดอยู่ที่ 2.7 (Jython 3 กำลังพัฒนา)
4. IronPython (Python บน .NET)
- เขียนด้วย C# รันบน .NET CLR
- เข้าถึง .NET libraries ได้โดยตรง
- ไม่มี GIL
- ไม่รองรับ C extensions
- Python version ติดอยู่ที่ 2.7 (IronPython 3 กำลังพัฒนา)
5. MicroPython / CircuitPython (Embedded Systems)
- Python 3 subset สำหรับ microcontrollers (ESP32, STM32, RP2040)
- รันบน hardware ตรงๆ ไม่มี OS
- Memory footprint ต่ำมาก
6. อื่นๆ
- GraalPython: บน GraalVM, รองรับ polyglot
- RustPython: เขียนด้วย Rust, เน้น memory safety
- Brython: Python ใน browser (transpile เป็น JavaScript)
ตารางเปรียบเทียบสรุป
| Implementation | ภาษาที่เขียน | Platform | Speed (Pure Python) | C Extensions | GIL | Python Version |
|---|---|---|---|---|---|---|
| CPython | C | Cross-platform | Baseline | ✅ เต็มรูปแบบ | ✅ มี | 3.12+ |
| PyPy | RPython | Cross-platform | ⚡ 2-10x เร็วกว่า | ⚠️ จำกัด | ✅ มี | 3.10+ |
| Jython | Java | JVM | ช้า | ❌ ไม่รองรับ | ❌ ไม่มี | 2.7 |
| IronPython | C# | .NET | ช้า | ❌ ไม่รองรับ | ❌ ไม่มี | 2.7 |
| MicroPython | C | Microcontrollers | N/A | ❌ ไม่รองรับ | N/A | 3.4 subset |
ควรเลือกตัวไหน?
- ทั่วไป / ML / Data Science: CPython (รองรับ libraries ครบ)
- Pure Python performance critical: PyPy
- Integration กับ Java: Jython
- Integration กับ .NET: IronPython
- IoT / Embedded: MicroPython / CircuitPython
Cython ≠ CPython
Cython เป็น superset ของ Python ที่คอมไพล์เป็น C extension ใช้เพื่อเร่งโค้ด Python หรือ wrap C libraries — ไม่ใช่ Python implementation