İçeriğe geç
Muhammet Şafak
Günlük 3 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.


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.

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.

Etiketler: #Python
Paylaş:

İlgili Yazılar

Sitede Ara

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

Esc ile kapat Pagefind ile güçlendirildi