---
title: "1024 Baytta Bir Python Yorumlayıcısı Geliştirmek"
url: https://blog.edumints.com/1024-baytta-bir-python-yorumlayicisi-gelistirmek-fqfvdwrx
category: "Yazılım"
date: 2026-09-07T09:07:47.351Z
publisher: Edumints Blog
lang: tr-TR
source_name: "Hacker News"
source_url: https://austinhenley.com/blog/python1024.html
---

# 1024 Baytta Bir Python Yorumlayıcısı Geliştirmek

Austin Z. Henley, hafta sonları zihnini dinlendirmek ve programlama zanaatına odaklanmak için geleneksel C diliyle zorlayıcı bir meydan okumaya girişiyor: Hiçbir makro hilesi ya da harici kütüphane desteği almadan, yalnızca 1024 baytlık saf C koduyla çalışan bir Python yorumlayıcısı inşa etmek.

## Python Hissi Veren Bir Alt Küme
Python gibi geniş bir dili bu denli dar bir alana sığdırmak olanaksızdır. Bu nedenle yazar, dilin özgün ruhunu yansıtan klasik bir **FizzBuzz** programını referans alan bir alt küme belirlemiştir. Bir kod parçasının Python gibi hissettirmesini sağlayan temel yapı taşları şunlardır:
- **`def` anahtar kelimesi** ile fonksiyon tanımlama,
- Blok sınırlarını belirten **iki nokta üst üste (`:`)** kullanımı,
- Kod bloklarını hiyerarşik olarak düzenleyen **girintileme (indentation)** yapısı,
- `if` koşullarında zorunlu parantezlerin bulunmaması.

## İlk Deneme: 512 Bayt Neden Yetmedi?
Yazar başlangıçta hedefi 512 bayt olarak belirlemiş ve özyinelemeli iniş ayrıştırıcısı (recursive descent parser) ile yola çıkmıştır. Geliştirme süreci en temelden başlayarak adım adım ilerlemiştir:
- Basit aritmetik hesaplama: `1 + 2`,
- Değişken ataması ve işlem önceliği: `x = 1 + 2 * 3`,
- Koşullu ifade blokları: `if x y: z = 3`.

Fakat bu deneme sonucunda ortaya bir Python yorumlayıcısından ziyade gelişmiş bir hesap makinesi çıkmış ve kod boyutu sınırı hızla aşılmıştır. Bu tecrübe, yazılım mühendisliğinin altın kuralını hatırlatır: **Önce çalışmasını sağla, ardından boyutunu küçült**.

## Ayrıştırıcı Mimarisi ve Durum Yönetimi
Standart CPython çalışma mekanizması; kodu tokenize etme, soyut sözdizim ağacı (AST) kurma, optimizasyon yapma ve bayt kodunu yorumlama aşamalarından oluşur. 1024 baytlık bu minimal yorumlayıcı ise bu karmaşık adımların hiçbirini barındırmaz. Durum bilgisi az sayıda global değişkende tutulur:
- **`char src[999]`**: Boşluklarından arındırılmış ham kaynak kodu saklayan dizi,
- **`int vars[256]`**: Değişken değerlerini tutan statik sembol tablosu,
- **`int pos`**: Kaynak kodda bir sonraki karakterin indis konumu,
- **`int ch`**: O an işlenmekte olan aktif karakter,
- **`int line_start`**: Geçerli satırın başladığı bellek konumu.

İfadeler `parse_sum` benzeri fonksiyonlarla ayrıştırılırken eşzamanlı olarak yürütülür; örneğin `parse_term` çağrılarıyla terimler okunur ve anında toplanıp çıkarılır.

## Radikal Kısayollar ve Pratik Çıkarımlar
Bu aşırı kod sıkıştırma (code golf) yaklaşımı, geleneksel yazılım kurallarından radikal fedakarlıklar yapılmasını zorunlu kılmıştır:
- Hata yakalama mekanizmaları tamamen terk edilmiş, kodun hatasız yazıldığı varsayılmıştır.
- Anahtar kelimeler tek bir harfle (`w` - while, `i` - if, `f` - for) tanınmış, aradaki karakterler sabit indis kaydırmalarıyla atlanmıştır.
- Girintiler ve metin dizgilerindeki boşluklar korunurken, diğer tüm boşluklar bellek tasarrufu amacıyla ayıklanmıştır.
- Değişken adları tek küçük harfle sınırlandırılarak sembol tablosuna doğrudan ASCII indeksleme yöntemiyle erişilmiştir.

Bu çalışma, kısıtlı kaynaklar altında bir dilin çekirdek bileşenlerinin nasıl soyutlanabileceğini gösteren etkileyici bir sistem programlama dersidir.

[Orijinal kaynağa buradan ulaşabilirsiniz.](https://austinhenley.com/blog/python1024.html)

---

**Kaynak:** [Hacker News](https://austinhenley.com/blog/python1024.html)
**Yayıncı:** [Edumints Blog](https://blog.edumints.com) · Alıntılarken bu URL'ye bağlantı verin: https://blog.edumints.com/1024-baytta-bir-python-yorumlayicisi-gelistirmek-fqfvdwrx
