# Dinamik Tipleme

Adres: https://softwaredictionary.org/tr/terimler/dynamic-typing
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-10-03
İngilizcesi: Dynamic Typing
Türkçe karşılığı: dinamik tür sistemi
Okunuşu: daynemik tayping

Kısaca: Dinamik tipleme, türlerin değişkenlere değil değerlere ait olması ve program çalışırken kontrol edilmesidir; bir değişken önce sayı, sonra string tutabilir.

## Dinamik tipleme (dynamic typing) nedir?

Python, JavaScript, Ruby ya da PHP gibi dinamik tipli bir dilde bir tür bildirmeden `x = 5` yazarsınız; sonradan `x = "five"` yazmak da serbesttir. Yorumlayıcı program çalışırken her değerin türünü izler ve yalnızca bir işlem o değer için anlamsız olduğunda, örneğin sahip olmadığı bir metot çağrıldığında, hata verir.

Bu, kodu hızlı yazılır ve denemeye uygun yapar. Betikler, prototipler, veri analizi ve yapıştırıcı kod (glue code), her türü baştan tarif etmek zorunda olmamaktan fayda görür. Birçok dinamik dil ördek tiplemesine (duck typing) de dayanır: bir nesnede ihtiyacınız olan metot varsa, bildirilen sınıfı ne olursa olsun onu kullanabilirsiniz.

Bedeli, tür hatalarının geç ortaya çıkmasıdır; bazen yalnızca production'da nadiren kullanılan bir kod yolunda. Bu yüzden büyük dinamik kod tabanları testlere ve giderek daha çok araçlarla kontrol edilen isteğe bağlı tür açıklamalarına dayanır: mypy ya da Pyright ile Python tür ipuçları, JavaScript için de TypeScript ya da JSDoc türleri.

Sık yapılan bir yanlış, dinamik tipli dillerde tür olmadığını düşünmektir. Her değerin yine bir türü vardır ve Python gibi güçlü tipli dinamik bir dil bir sayıyı bir string'e eklemeyi reddeder. Buna karşılık JavaScript dinamik ve zayıf tiplidir: değerleri sessizce dönüştürür, bu yüzden `"5" * 2` sonucu 10'dur.

## Önemli noktalar

- Türler değerlere aittir ve çalışma zamanında kontrol edilir.
- Python, JavaScript, Ruby ve PHP dinamik tiplidir.
- Betikler, prototipler ve keşif için hızlıdır.
- Tür hataları geç ortaya çıkar; bu yüzden testler ve isteğe bağlı tür ipuçları işe yarar.
- Dinamik, türsüz demek değildir: Python dinamik ama güçlü tiplidir.

## Örnek: Yalnızca çalışma zamanında ortaya çıkan bir tür hatası (Python)

```python
def total_price(price, quantity):
    return price * quantity

x = 5
x = "five"                 # allowed: the variable just points to a new value

print(total_price(9.99, 3))     # 29.97
print(total_price("9.99", 3))   # "9.999.999.99": a string repeated, no error!
print(total_price("9.99", "3")) # TypeError, but only when this line runs

# Optional type hints let tools such as mypy catch it before running
def total_price_typed(price: float, quantity: int) -> float:
    return price * quantity
```

## Sık sorulan sorular

**Python dinamik tipli mi?**

Evet. Python'da değişkenlerin sabit bir türü yoktur ve türler kod çalışırken kontrol edilir. Python aynı zamanda güçlü tiplidir; yani uyumsuz türleri sessizce karıştırmaz. İsteğe bağlı tür ipuçları da araçlarla kontrol edilebilir.

**Ördek tiplemesi (duck typing) nedir?**

Bir nesneyi hangi sınıftan olduğuna göre değil, neler yapabildiğine göre kullanmaktır: ördek gibi yürüyor ve ördek gibi vaklıyorsa ona ördek gibi davran. Örneğin `read()` metodu olan herhangi bir nesne, dosya beklenen yerde kullanılabilir.

**Dinamik tipleme daha mı yavaştır?**

Çoğu zaman biraz, çünkü tür kontrolleri çalışma sırasında yapılır. JavaScript motorlarındakiler gibi modern just-in-time derleyiciler, gerçekte gördükleri türlere göre optimizasyon yaparak bu farkı büyük ölçüde kapatır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
