Dinamik Tipleme
- İ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
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 * quantitySı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.
Sık karşılaştırılanlar
İlgili sayfalar
- Statik TiplemeProgramlamanın Temelleri, s. 52Statik tipleme, değişken ve ifadelerin türünün program çalışmadan önce, genellikle derleyici tarafından denetlenmesidir; birçok tür hatası erken yakalanır.
- Veri türüProgramlamanın Temelleri, s. 54Veri türü, bir programa bir verinin sayı ya da metin gibi hangi tür bir değer taşıdığını ve hangi işlemlerin ona uygulanabileceğini söyleyen sınıflandırmadır.
- PythonProgramlama Dilleri, s. 26Python, okunaklı sözdizimiyle bilinen; veri bilimi, otomasyon ve web arka uçlarında yaygın kullanılan, genel amaçlı ve dinamik tipli bir programlama dilidir.
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
- YorumlayıcıProgramlamanın Temelleri, s. 55Yorumlayıcı, tüm programı önce ayrı bir çalıştırılabilir dosyaya çevirmek yerine kaynak kodu doğrudan, adım adım çalıştıran bir programdır.
- Tür çıkarımıProgramlamanın Temelleri, s. 53Tür çıkarımı, derleyicinin bir değişkenin ya da ifadenin türünü otomatik olarak belirlediği bir özelliktir; her tür bildirimini yazmanız gerekmez.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin