Bu soruya muhtemelen yeni olan bir cevabım var. Aslında, son 6 aydır hala bu konuyu düşünüyorum ve henüz gazetelerde yazılamadı.
Genel tez, "mantıksal ilişkiler", "simülasyonlar" ve hatta "değişmezler" gibi ilişkisel akıl yürütme ilkelerinin, veri soyutlama veya bilgi gizlemesinin tezahürleri olduğudur. Bilginin saklandığı her yerde, bu ilkeler çoğalır.
Bunu keşfeden ilk insanlar otomat teorisyenleriydi. Otomatların gizli durumu var. Bu yüzden eşdeğerlikleri hakkında konuşmak için ilişkisel akıl yürütmeye ihtiyacınız var. Otomata teorisyenleri bir süre için homomorfizmalar ile mücadele etti, pes etti ve bir simülasyon ilişkileri biçimi olan "ilişkisel kaplama" denilen bir kavram ortaya koydu.
Milner, fikri 1971'de " Programlar arasında bir cebirsel nosyon " olarak adlandırılan az bilinen ama çok temel bir makalede buldu . Hoare, bunu biliyordu ve 1972'de " veri temsillerinin doğruluğunun kanıtı " ile ortaya çıkarken kullandı (ancak kullanıldı. soyutlama, ilişkilerin yerine işlev görür, çünkü “daha basit” olduklarını düşünürdü. Daha sonra sadelik iddiasını geri çekti ve " Rafine edilmiş veri iyileştirme " de ilişkilerini kullanmaya geri döndü . Reynolds, " Programlama El Sanatları " nda ilişkisel akıl yürütmeyi kullandı", Bölüm 5 (1981). İlişkilerin soyutlama işlevlerinden daha doğal ve genel olduğunu düşünüyordu. Eğer bu bölümü okuyup okursanız, etrafta dolaşan, keşfedilmeyi bekleyen ilişkisel parametriklik fikirlerini göreceksiniz. Yeterince, iki yıl sonra, Reynolds, "Türler, soyutlama ve parametrik polimorfizm" (1983) yayınladı.
Bütün bu fikirlerin türlerle hiçbir ilgisi yok gibi görünüyor, ama gerçekten yapıyorlar. Durum bilgisi olan diller ve modeller yerleşik veri soyutlamasına sahiptir. Bilgiyi gizlemek için bir "soyut veri tipi" tanımlamanız gerekmez. Siz sadece yerel bir değişkeni tanımlayın ve gizleyin. İlk birkaç haftada Java sınıfındaki birinci sınıf öğrencilerine öğretebiliriz. Ter yok
Öte yandan, işlevsel diller ve modeller bilgi türlerini gizlemek zorundadır . İşlevsel modeller yerleşik veri soyutlamasına sahip değildir. veya kullanarak açıkça eklemeliyiz . Eğer durumsal bir dili işlevsel bir dile çevirirseniz, tüm yerel durumun tür değişkenlerine çevrildiğini fark edeceksiniz. Bunun nasıl çalıştığının açık bir açıklaması için makaleme " Algol benzeri dillerde nesneler ve sınıflar " konusuna bakın , ancak fikirler gerçekten Reynolds 1981'den ("Algol'un Özü") geliyor. Şimdi sadece bu klasik fikirleri daha iyi anlıyoruz.∃∀∃
İki makineyi alın veM ′MM′MM′XX′RF(X)F(X′)F(R)
Öyleyse, simülasyonlar ve ilişkisel parametriklik aslında aynı fikirdir . Bu sadece yüzeysel bir benzerlik değildir. İlki, yerleşik veri soyutlamanın bulunduğu durumdaki diller için yapılır. Sonuncusu, veri soyutlamanın tip değişkenleriyle elde edildiği durumsuz diller için yapılır.
Peki ya mantıksal ilişkiler? Yüzeyde, mantıksal ilişkiler daha genel bir fikir gibi görünüyor. Parametrikliğin aynı model içinde tip değişkenlerinin nasıl ilişkilendirileceğinden bahsetmesine rağmen, mantıksal ilişkilerin farklı modeller arasında tiplerle ilişki kurduğu görülmektedir. (Dave Clarke bunu daha önce açık bir şekilde dile getirdi.) Ama benim hissim (ve hala gösterilmesi gerekiyor) bunun henüz formüle edilmemiş bir tür yüksek tip parametriklik örneği olduğudur. Bu cephede daha fazla ilerleme için bizi izlemeye devam edin.
[Not eklendi] Mantıksal ilişkiler ve simülasyonlar arasındaki bağlantı son yazımızda Mantıksal ilişkiler ve parametriklik: Kategori Teorisi ve Programlama Dilleri için Reynolds programı .