ScholarGate
Asistan

Polimorfizm ve Jenerikler

Polimorfizm, tek bir kod parçasının birçok tür üzerinde tekdüze bir şekilde çalışmasına olanak tanımaktadır; başlıca biçimleri parametrik polimorfizm (jenerikler), ad hoc polimorfizm (aşırı yükleme ve tür sınıfları) ve alt tür polimorfizmidir.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Polimorfizm, tek bir fonksiyonun, türün veya işlemin birden fazla türdeki değerlere uygulanabilme özelliğidir; parametrik polimorfizm bunu tür parametreleri (jenerikler) aracılığıyla tekdüze bir şekilde yaparken, ad hoc polimorfizm türe özgü uygulamalara yönlendirme yapmaktadır.

Kapsam

Bu konu, polimorfizmin başlıca türlerini kapsamaktadır: jenerikler ve System F ile gerçekleştirilen parametrik polimorfizm, aşırı yükleme ve tür sınıfları aracılığıyla ad hoc polimorfizm ve kapsama (alt tür) polimorfizmi. Parametrikliği ve bunun sağladığı güçlü akıl yürütme ilkelerini ele almakta, ayrıca jenerik soyutlamaların nasıl derlendiğini ve kısıtlandığını incelemektedir.

Temel sorular

  • Jenerikler, tür güvenliğinden ödün vermeden yeniden kullanımı nasıl sağlamaktadır?
  • Parametriklik nedir ve ücretsiz olarak hangi garantileri sunmaktadır?
  • Tür sınıfları, ad hoc aşırı yüklemeyi nasıl sistemleştirmektedir?
  • Jenerik tanımlar nasıl derlenmektedir ve tür parametrelerini hangi kısıtlamalar bağlayabilmektedir?

Temel kuramlar

Parametriklik (soyutlama teoremi)
Reynolds'ın soyutlama teoremi, parametrik polimorfik fonksiyonların türler arasında tekdüze davrandığını göstermektedir; bu özellik, somut tür örneklemesinden bağımsız olarak olası davranışlarını kısıtlamaktadır.
Ücretsiz teoremler
Wadler, parametrik polimorfik bir fonksiyonun türünün tek başına, davranışıyla ilgili ücretsiz teoremleri ima ettiğini göstermiştir; bu, parametrikliğin doğrudan ve pratik bir sonucudur.
İlkeli aşırı yükleme için tür sınıfları
Wadler ve Blott, ad hoc polimorfizme, aşırı yüklenmiş işlemlerin metot uygulamalarının örtük sözlükleri geçirilerek çözüldüğü tutarlı bir tür-teorik temel sağlayan tür sınıflarını tanıtmışlardır.

Klinik önem

Jenerikler ve polimorfizm, modern dillerdeki yeniden kullanılabilir kütüphane tasarımı ve koleksiyon çerçeveleri için merkezi bir öneme sahiptir. Tür sınıfları ve bunların benzerleri (traits, concepts, protocols), ilkeli, tür açısından güvenli aşırı yükleme sağlamakta, parametriklik ise doğruluk akıl yürütmesini ve derleyici optimizasyonlarını desteklemektedir.

Tarihçe

Parametrik polimorfizmi yakalayan System F, 1970'lerin başında Girard ve Reynolds tarafından bağımsız olarak keşfedilmiştir. ML, çıkarım ile polimorfizmi pratiğe taşımıştır. Cardelli ve Wegner'in 1985 tarihli araştırması polimorfizm biçimlerini sınıflandırmış, Reynolds 1983'te parametrikliği formüle etmiş, Wadler ve Blott'un 1989 tarihli tür sınıfları ise Haskell'deki aşırı yüklemeyi şekillendirmiş ve başka yerlerdeki traits ve concepts'i etkilemiştir.

Tartışmalar

Silme (Erasure) ve Yeniden Somutlaştırılmış (Reified) Jenerikler
Dil uygulayıcıları, jenerikleri, basit ancak çalışma zamanı tür bilgisini kaybeden tür silme (type erasure) yoluyla derlemeyi, karmaşıklık ve kod boyutu maliyetiyle iç gözlemi mümkün kılan çalışma zamanında tür parametrelerini yeniden somutlaştırmaya (reifying) karşı tartışmaktadır.

Öne çıkan isimler

  • John Reynolds
  • Jean-Yves Girard
  • Philip Wadler
  • Luca Cardelli
  • Robin Milner

İlgili konular

Temel eserler

  • reynolds1983
  • wadler1989free
  • wadler1989
  • cardelli1985

Sıkça sorulan sorular

Parametrik ve ad hoc polimorfizm arasındaki fark nedir?
Parametrik polimorfizm, tüm tür argümanlarına tekdüze bir uygulama (jeneriklerde olduğu gibi) uygularken, ad hoc polimorfizm, aşırı yükleme veya tür sınıflarında olduğu gibi türe özgü bir uygulama seçmektedir.
Parametriklik bize ne sağlamaktadır?
Parametriklik, jenerik bir fonksiyonun tüm tür örneklerini tekdüze bir şekilde ele almasını garanti etmektedir; bu da, yalnızca tür imzasından türetilebilen davranışı hakkında 'ücretsiz teoremler' sağlamaktadır.

Bu kavram için yöntemler

İlgili kavramlar