İçeriğe geç
Muhammet Şafak
en
Günlük 2 dk okuma

Python'a giriş: bir betik dili daha neden

Polyglot pratiğimde Python'un doldurduğu boşluğu, öğrenme sürecimi ve PHP geliştiricisinin Python'a bakışını anlatıyorum.

Kapak görseli — koyu klavyenin yakın çekimi; geniş bir tuşta mavi-sarı Python logosu ve python yazısı, çevredeki tuşlar mavi ışıkta

Bu yazı 6 yıl önce yazıldı — o günün koşullarını yansıtır.


Geçen yıl Go öğrenmeye başladım. O deneyimi yazdığımda motivasyon açıktı: Go derlenmiş, hızlı, concurrency için özel tasarlanmış bir dil. Farklı bir problem sınıfına farklı bir araç. Python için aynı net gerekçeyi uzun süre bulamadım. PHP var, Go var — Python neden?

Cevabı teoride değil pratikte buldum. Birkaç veri dönüştürme işi, bir CSV işleme script’i, bazı otomasyon ihtiyaçları. Bunların hepsini PHP ile yazabilirdim; bazılarını Go ile de yazardım. Ama Python için yazılmış kütüphaneler, Python topluluğunun bu alanlarda ürettiği araçlar, ve dilin bu tür işler için olan okunabilirliği farklı bir deneyim sundu.

PHP geliştiricisinin ilk Python izlenimi

Syntax şoku bekledim, olmadı. Büyük fark $ yok, noktalı virgül yok, süslü parantez yok. Indentation anlamlı — bu ilk birkaç günde alışılması gereken tek kavramsal değişiklik.

Type hint’ler PHP 7’den sonraki dünyaya alışkın biri için tanıdık geldi; Python 3’te var ama zorunlu değil. Ben yine de yazmayı tercih ediyorum: kodun niyetini açıkça ifade ediyor.

from typing import List

def process_csv(filepath: str, delimiter: str = ',') -> List[dict]:
    import csv
    rows = []
    with open(filepath, newline='', encoding='utf-8') as f:
        reader = csv.DictReader(f, delimiter=delimiter)
        for row in reader:
            rows.append(dict(row))
    return rows

PHP’de on satır olan şey Python’da beş satır. Her iki dilde de çalışır, ama Python’un standard library’si bu tür görevler için önceden düşünülmüş.

Polyglot pratiğinde Python’un yeri

Bir dili öğrenmek için “her şeyi bu dille yap” yaklaşımı benim için işe yaramadı. Ne Go’da ne Python’da tüm projelerimi yazmaya çalıştım. Bunun yerine her dili en iyi görev uyumuna yönlendiriyorum.

PHP: web uygulamaları, API’ler, Laravel projeleri. Bu kesin.

Go: long-running süreçler, CLI araçları, yüksek concurrency gerektiren servisler.

Python: veri dönüştürme betikleri, otomasyon, metin işleme, hızlı prototip. Özellikle bir şeyi hızla deneyip geçmek istediğimde Python birinci tercih oluyor.

Bu ayrımın pratik değeri var: bir CSV’den e-posta listesi çıkarmak için Python kurup 10 satır yazmak, PHP projesi açıp Composer kurmaktan çok daha hızlı. Doğru ölçek.

Standart kütüphane zenginliği

Python öğrenmenin en güzel yanı standart kütüphanenin genişliği. HTTP istekleri için urllib, JSON için json, tarih işlemleri için datetime, CSV için csv, regular expression’lar için re, dosya sistemi için pathlib — bunların çoğu sıfır bağımlılıkla geliyor.

PHP’de buna alışkın değilim; orada çok şey için Composer’a başvuruyorum. Python’da birkaç ay sonra fark ettim ki yazdığım betiklerin büyük kısmı yalnızca standart kütüphaneyi kullanıyor.

Öğrenme süreci

Kitap okumak yerine doğrudan bir ihtiyaca yöneldim. Elimde binlerce satırlık bir log dosyası vardı, belirli kalıpları bulmam gerekiyordu. Python’da yazdım. Çalıştı. Sonra başka bir ihtiyaç. Her seferinde yeni bir modül, yeni bir veri yapısı.

Zorlandığım yer object-oriented kod değildi; Python OOP’u iyi destekliyor. Zorlayıcı olan şey Python topluluğunun “Pythonic” dediği, dile özgü idiomatic kod anlayışı. List comprehension’lar, context manager’lar, generator’lar — bunların PHP’de karşılıkları var ama farklı yazılıyor.

# Pythonic: liste anlama (list comprehension)
active_users = [u for u in users if u['active']]

# Daha verbose ama tanıdık
active_users = []
for u in users:
    if u['active']:
        active_users.append(u)

Her ikisi de çalışır; birincisi daha Python’ca. Bunu kavramak birkaç ay aldı.


Python öğrenmeye devam ediyorum, henüz uzman sayılmam. Ama artık bir “ikinci dil” ve “üçüncü dil” ayrımı yapmıyorum: Go ve Python iki farklı ihtiyaç için iki farklı araç. PHP’nin yerini almak için değil, PHP’nin iyi yapmadığı şeyleri iyi yapmak için buradalar.

Bu konudaki deneyler

Bir Sentry issue'sunu çalışan koda karşı analiz eden, düzeltmeyi diff ve regresyon testiyle sunan, onay almadan dosyaya dokunmayan Claude Code skill'i.

Şu an ne yapıyor

Bir Sentry issue'sunu çalışan koda karşı okuyup kök neden analizi ve düzeltme planı çıkarıyor; onay alınmadan tek bir dosyaya dokunmuyor. Claude Code kullanan ve prodüksiyon hatasını triyaj etmek isteyen herkes skill'i kurabilir.

Açık kaynak Python Bash Sentry API +3 daha
Temmuz 2026 — Devam ediyor

Dile özgü serileştirme yerine dondurulmuş bir JSON zarfı; polyglot kuyruk standardı BabelQueue'ya dönüştü.

Şu an ne yapıyor

Dondurulmuş JSON zarfı dört dilde — PHP, Python, Go, Node.js — aynı baytları okutuyor; sidecar ya da broker eklentisi gerekmiyor. Polyglot kuyruk kuran ekipler spesifikasyonu ve SDK'ları bugün kullanabilir.

Açık kaynak JSON Redis RabbitMQ +4 daha
Mart 2026 — Haziran 2026
Etiketler: #Python
Uzmanlık: Python Geliştirici
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi