Tür sistemi
Görünüm
Tür sistemi (İngilizce: type system), bir programlama dilindeki ifadelerin, değişkenlerin ve fonksiyonların hangi türde değerler alabileceğini tanımlayan kurallar bütünüdür. Bu sistem, programların doğruluğunu ve güvenliğini artırmak için tasarlanmıştır.[1]
Temel Kavramlar
[değiştir | kaynağı değiştir]Tür Denetimi
[değiştir | kaynağı değiştir]- Statik tür denetimi: Derleme zamanında yapılır (Örn: Java, Rust)
int sayi = "metin"; // Java derleme hatası
- Dinamik tür denetimi: Çalışma zamanında yapılır (Örn: Python, JavaScript)
sayi = "metin" # Hata vermez (runtime'da kontrol)
Tür Çıkarımı
[değiştir | kaynağı değiştir]Derleyicinin türü otomatik belirlemesi yani derleyicinin, programcı tür belirtmese bile değişken veya fonksiyon türlerini otomatik anlamasıdır.
- Haskell'de değişken tür çıkarımı
topla x y = x + y
- Haskel'de fonksiyon türü:
Num a => a -> a -> a
Tür Sistemleri Sınıflandırması
[değiştir | kaynağı değiştir]Aşağıdaki tabloda, programlama dillerinde kullanılan tür sistemleri statik ve dinamik olarak sınıflandırılmış; denetim zamanı, örnek diller ve sağladıkları avantajlar açısından karşılaştırmalı olarak sunulmuştur.
| Karşılaştırma Kriteri | Statik Türleme | Dinamik Türleme |
|---|---|---|
| Tür Denetimi Zamanı | Derleme Zamanı | Çalışma Zamanı |
| Örnek Programlama Dilleri | C++, Java,[2] Haskel[3] | Python,[4] Ruby[5] |
| Başlıca Avantajı | Hataların erken tespiti | Daha fazla esneklik |
Önemli Tür Sistemleri
[değiştir | kaynağı değiştir]Güçlü/Zayıf Türleme
[değiştir | kaynağı değiştir]- Güçlü: Örtük dönüşüm yok (Haskell)
5 + "5" tip uyumsuzluğu hatası
- Zayıf: Örtük dönüşüm var (JavaScript)
5 + "5" // "55" string birleştirme
Jenerik Türler
[değiştir | kaynağı değiştir]- TypeScript'te jenerik fonksiyon
function identity<T>(arg: T): T {
return arg;
}
Tarihsel Gelişim
[değiştir | kaynağı değiştir]- 1960: ALGOL - İlk statik tür sistemi
- 1973: C - Zayıf tür kontrolleri
- 1990: Haskell - Güçlü statik türleme
- 1995: Java – Nesne yönelimli ve statik türlemeli yapı[2]
- 2012: Rust - Mülkiyet tabanlı tür güvenliği[6]
Kaynakça
[değiştir | kaynağı değiştir]- ^ Pierce, Benjamin C. (2002). Types and Programming Languages. MIT Press. s. 1-15. ISBN 978-0262162098.
- ^ a b "The Java™ Language Specification". 13 Ocak 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Mayıs 2025.
- ^ "Type Systems". Haskell Wiki. 1 Eylül 2023 tarihinde kaynağından arşivlendi.
- ^ "Python Language Specifications". 8 Mayıs 2025 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Mayıs 2025.
- ^ "How do developers use dynamic features? The case of Ruby". 15 Nisan 2024 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Mayıs 2025.
- ^ Klabnik, Steve; Nichols, Carol (2019). "4". The Rust Programming Language. No Starch Press. ISBN 978-1718500440.