Python Implementasyonları: CPython, PyPy, MicroPython, Jython, IronPython, Pyodide
'Python tek bir program' diye düşünüyorsan, bu ders kafanı yumuşak bir tokat gibi açacak. CPython resmî implementasyon ama tek değil — alternatiflerin nerede ve neden işe yaradığını anlatıyoruz.
Şükrü Yusuf KAYA
14 dakikalık okuma
Başlangıç🤯 Bu ders kafanı biraz açacak
Çoğu kişi Python öğrenirken 'Python = bir program' sanıyor. Aslında 'Python' bir dil spesifikasyonu, yani gramer ve davranış kurallarının yazılı tarifi. Bu tarifi farklı şekillerde uygulayan birden fazla program var. Bunlardan en yaygını CPython — sen "python" yazdığında çalışan o. Ama tarayıcıda Python çalıştırabilirsen, mikrokontrolcüde Python kullanırsan, .NET ile entegre olursan — bunların arkasında farklı implementasyonlar var. Hadi tanıştıralım.
"Python" sözünün iki anlamı#
İki farklı kavramı aynı kelime ile söylemek programcıların büyük kafa karışıklığı kaynaklarından biri. Bu derste şunu netleştireceğiz:
1. Python (dil): Söz dizimi, davranış, semantik kuralları. Yani , , , ne anlama gelir, ne sonuç verir, fonksiyonlar nasıl çalışır — bunların tarifi. Bu tarif PEP'ler (Python Enhancement Proposal) ve dil referans dokümanı şeklinde resmî olarak yazılı.
defclassforif5/22. Python (implementasyon): Bu tarifi gerçekleştiren program. Sen "python" komutunu çalıştırdığında bilgisayara yüklü olan, kodunu okuyup çalıştıran şey.
Şimdi şu enteresan: aynı tarif birden fazla şekilde gerçekleştirilebilir. Tıpkı aynı tarifi farklı aşçıların farklı yöntemlerle yapabilmesi gibi. Sonuç (yemek) aynı olsa da yöntem (mutfak teknikleri) farklı.
Python'un da birden fazla implementasyonu var. Birkaçı popüler, birkaçı niş, hepsi farklı bir ihtiyaca cevap veriyor.
🐍 CPython — referans implementasyon#
CPython, Python'un resmî, referans implementasyonu. Adından da anlaşılacağı gibi C dilinde yazılmış.
Sen "python kurdum" dediğinde %99 ihtimalle CPython kurmuşsundur. python.org'dan indirdiğinde de bu çıkar.
Özellikleri:
- C ile yazılmış: Yorumlayıcının kendisi C kodu. Bu, çok geniş platform desteği ve yüksek olgunluk demek.
- Yorumlayıcı: Python kodunu önce bytecode'a (dosyaları) çevirir, sonra çalıştırır. Aslında saf yorumlayıcı değil, hibrit; bytecode VM'i çalıştırıyor.
.pyc - GIL var: Global Interpreter Lock — bir Python süreci aynı anda sadece bir thread çalıştırır. (3.13+ free-threaded build hariç.)
- C extension API'si: NumPy, pandas, PyTorch gibi kütüphaneler altta CPython'un C API'sini kullanır.
- Yıllık takvim: Her yıl Ekim'de yeni minor sürüm.
Ne zaman kullanırsın?: Her zaman, varsayılan. Aksini yapmayı gerektirecek özel bir sebebin yoksa CPython.
⚡ PyPy — hızlı bir alternatif#
PyPy, Python'un kendisinin Python ile yazılmış (!) versiyonu. RPython adında Python'un bir alt kümesinde yazıldı. Asıl gücü: JIT compiler (Just-In-Time derleyici).
CPython senin kodunu satır satır yorumlarken, PyPy "şu fonksiyonu çok kullanıyorsun, bunu makine kodu olarak derleyip cache'leyeyim" diyor. Sonuç: CPU-yoğun (CPU-bound) işlerde 3x-50x kadar hızlanma.
Ama:
- Bütün C extension'larla uyumlu değil. NumPy çalışır ama bazı küçük paketler çalışmaz.
- İlk birkaç çalıştırma JIT "ısınma" süresi ister; kısa script'lerde fayda göremezsin.
- Sürümler genelde CPython'un 1-2 minor gerisinden gelir (CPython 3.12 stable iken PyPy 3.10 olabiliyor).
Ne zaman kullanırsın?: Saf Python ile yapılan ağır CPU işleri (matematik simülasyon, hesaplama). Eğer kütüphanelerin (NumPy, Pandas, PyTorch) hepsi ana ağırlıkta zaten C/C++ ise, PyPy sana büyük fark vermez.
Pratik örnek: Bir kişi yıllar önce 6 saatlik bir Python simülasyonunu PyPy ile 18 dakikaya indirmiş. Bu örnekte iş tamamen saf Python'du. Senin işin de öyle olabilir, olmayabilir — denedikten sonra anlarsın.
🤏 MicroPython — mikrokontrolcüler için Python#
Bilgisayarın CPU'su milyarlarca transistor, gigabaytlarca bellek. Bir Arduino veya ESP32 mikrokontrolcüde işlemci 240 MHz, RAM 520 KB falan. CPython'u oraya kuramazsın — yer yok.
MicroPython tam bunun için yazıldı. Damian George adlı bir İngiliz fizikçinin Kickstarter projesi olarak 2013'te başladı; bugün IoT ve embedded dünyasında ciddi bir oyuncu.
Özellikleri:
- Çok düşük bellek tüketir (256 KB RAM bile yeter).
- Standart kütüphanenin küçük ama akıllı bir alt kümesini sağlar.
- ESP32, Raspberry Pi Pico, BBC micro, STM32 gibi popüler mikrokontrolcülerde çalışır.
- REPL'i bile mikrokontrolcü üzerinde çalışır — bağlanıp interaktif Python yazabilirsin.
Ne zaman kullanırsın?: Sıcaklık sensörü okuyup buluta gönderecek bir IoT cihazı yapacaksan, akıllı ev projende mikrokontrolcü programlayacaksan, robot kontrolü yapacaksan — MicroPython değerli.
Bonus: CircuitPython, Adafruit'in MicroPython'dan fork ettiği bir versiyon — eğitim odaklı, daha "kullanıcı dostu" yapılmış. Birçok Adafruit board'unda default olarak gelir.
🏛️ Jython ve IronPython — JVM ve .NET dünyasıyla evlilik#
İki niş ama tarihsel olarak önemli implementasyon var.
Jython#
Jython, Python'un JVM (Java Virtual Machine) üzerinde çalışan versiyonu. Yani senin Python kodun .pyc yerine .class dosyalarına derlenir; JVM bunu çalıştırır.
Avantajı: Java ekosistemine doğrudan erişim. Bir Java kütüphanesini Python'da gibi import edip kullanabilirsin.
from java.util import ArrayListDezavantajı: Sürüm geride. Yıllardır Python 2.7'ye sıkışmış durumda; Python 3 desteği geliştirilmeye çalışılıyor ama henüz olgun değil. Bu yüzden 2026 itibariyle Jython çoğu kullanım için önerilmez.
Ne zaman?: Eğer büyük bir Java tabanlı kuruma sızmaya çalışan bir Python kullanıcısıysan ve "kabul etmezler ama Jython çalıştırırlar" durumun varsa. Niş.
IronPython#
IronPython, Python'un .NET Common Language Runtime üzerinde çalışan versiyonu. Microsoft destekli olarak başladı.
Avantajı: C# kütüphanelerine erişim. .NET ekosistemiyle entegrasyon.
Dezavantajı: Aynı Jython gibi — Python 3 desteği geride; en yeni IronPython 3.4.x civarında. Aktif gelişiyor ama 2026'da hâlâ tutkulu kullanım az.
Ne zaman?: .NET projesinde scripting katmanı isteyenler. Niş.
🌐 Pyodide — Tarayıcıda Python (en şaşırtıcısı)
Bu kursun yapay zekâ derslerini hatırlıyor musun? Hands-on kod örnekleri tarayıcında çalışıyor — Python kurman gerekmiyor. İşte bunu Pyodide sağlıyor: CPython'un WebAssembly'ye derlenmiş hali. Tarayıcı sandbox'ında çalışıyor, ama NumPy, Pandas, scikit-learn dahil. 'Bu nasıl olabilir?' demeden önce bunu canlı dene: koddaki ▶️ butonlarına bas, sayfan donmaz, kod browser'ında çalışır. Bu teknoloji JupyterLite ve hatta bazı online Python eğitim siteleri için temel olmuş durumda.
🌐 Pyodide — gerçek Python, gerçek tarayıcı#
Pyodide, CPython'un WebAssembly'ye derlenmiş versiyonu. Yani bir derleyici geliştirici ekibi (Mozilla başlattı, bugün açık kaynak topluluk), CPython'un C kodunu WASM'e çevirip tarayıcıda çalıştırılabilir hale getirdi.
Sonuç: Hiçbir kurulum yapmadan, sadece JavaScript'in çalıştırdığı bir sayfada Python yazabilirsin. NumPy, pandas, scikit-learn, matplotlib gibi popüler kütüphaneleri de içeriyor.
Kullanım alanları:
- Eğitim platformları (bu kurs gibi)
- Veri görselleştirme demoları (Streamlit/Dash benzeri ama serverless)
- Hızlı prototip
- Offline çalışan PWA uygulamaları
Performans olarak CPython'un 1.5-2x gerisinde — ama hiç sunucuya ihtiyaç olmaması büyük avantaj.
İlk yükleme yaklaşık 10-15 saniye sürer (WASM bundle'ı indiriliyor); sonra kütüphaneler hızla yükleniyor. Bu kursun ileri derslerinde Pyodide ile gerçek hands-on yapacaksın.
Cevap: CPython.
Kursun ana akışı, iş projelerin, veri analizi, AI/ML, web — hepsi CPython. Bu dilin "default" implementasyonu, kütüphane uyumu en yüksek olan, en olgun olanı.
Kuruyorsun, çalıştırıyorsun, devam ediyorsun. Detayları diğer derslerde göreceğiz.
Mention etmediğim ama bilmen gereken birkaç tane daha#
Yukarıdakiler en popüleri ama liste tükenmiyor. Birkaç tane daha, sadece varlığını bilmen için:
- Stackless Python: Microthread ve coroutine için optimize edilmiş bir CPython fork'u. EVE Online (efsanevi MMO) onu kullanmış.
- Cython: Tam olarak implementasyon değil; Python kodunu C'ye çeviren bir araç. Python yazıp C performansı almak istiyorsan. NumPy ve pandas'ın bazı parçaları Cython.
- Nuitka: Python kodunu standalone executable'a derleyen bir araç. PyPy ile Cython arasında bir yerde.
- Brython ve Skulpt: Tarayıcı için Python — ama Pyodide'a göre kütüphane desteği daha sınırlı.
- GraalPy: Oracle'ın GraalVM üzerinde çalışan modern bir alternatif. Hâlâ olgunlaşıyor; PyPy'ye benzer performans hedefliyor.
Bu isimlerle bir blog yazısında karşılaşırsan kafan karışmasın diye söyledim. Ama bu kurs için cevap her zaman: CPython.
Bu derste neler kazandın?#
✓ "Python" sözünün iki anlamı olduğunu — dil spesifikasyonu vs. implementasyon.
✓ CPython'un referans implementasyon olduğunu ve neredeyse her zaman doğru seçim olduğunu.
✓ PyPy'nin saf Python performansı için bir alternatif olduğunu — ama her senaryoda fayda sağlamadığını.
✓ MicroPython/CircuitPython'un IoT/mikrokontrolcü dünyasında hayatı kurtardığını.
✓ Jython ve IronPython'un Java/.NET dünyalarına köprü olduğunu, ama Python 3 desteğinin gerideki olduğunu.
✓ Pyodide'ın tarayıcı içinde "gerçek" Python çalıştırmaya izin verdiğini ve bu kursun ona dayandığını.
Sıradaki ders: Python topluluğunun "manifestosu" sayılan Zen of Python üzerinde duracağız. yazınca çıkan o 19 satırlık şiir gerçekte ne anlatıyor, dilin tasarım kararlarını nasıl yönlendiriyor, ve "Pythonic" demek ne demek? Ufak ama bir o kadar derin bir ders olacak.
import thisSık Sorulan Sorular
Evet, hatta bunu yapmanı öneririm. github.com/python/cpython adresinde bütün kaynak kod var. C bilmesen bile `Python/`, `Lib/`, `Doc/` klasörlerine göz atmak çok eğitici olabilir. Standart kütüphanenin Python kısmı (`Lib/`) saf Python; oradan kütüphane kodlarının nasıl yazıldığına bakabilirsin.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...