Anlamsal anlambilim, işletimsel anlambilimin cevaplayamayacağı sorular nelerdir?


14

Programlama dillerini tanımlamak için operasyonel anlambilim (hem küçük hem de büyük adım) hakkında bilgi sahibiyim. Ben de anlamsal semantiği öğrenmekle ilgileniyorum, ama çabaya değip değmeyeceğinden emin değilim. Aynı materyali farklı bir bakış açısıyla öğrenecek miyim, yoksa yalnızca anlamsal anlambilimi anlayarak elde edebileceğim bilgiler var mı?

Yanıtlar:


11

Kompozisyonsal semantiği karakterize eden gerçek bir anlaşma yoktur (ayrıca bu makaleye bakın), ancak kompozisyon olması gerekir . Bu, semantik , programları anlamlarına eşleyen şudur: Herkes için harf olmalıdır -ary programı yapıcıları f ve bütün programların M_1 , ..., M_n (örtük iyi typedness varsayarak):n f M 1 M n[[]]nfM1Mn

[[f(M1,...,Mn)]]=trans(f)([[M1]],...,[[Mn]])

Burada , anlamsal alanda karşılık gelen yapıcıdır . Kompozisyonluk, cebirdeki homomorfizm kavramına benzer.ftrans(f)f

İşlemsel anlambilim bu anlamda bileşimsel değildir. Tarihsel olarak, anlamsal anlambilim kısmen, operasyonel anlambilim kompozisyonu olmadığı için geliştirilmiştir. D. Scott'ın çığır açan sıra kuramsal -calculus anlamsal anlambiliminden sonra, en çok anlamsal anlambilim sipariş-kuramsaldı. Saf entelektüel çıkarların dışında - anlamsal anlambilimin çoğunlukla icat edildiğini hayal ediyorum çünkü (1960'larda):λ

  1. İşlemsel semantik hakkında akıl yürütmek zordu.
  2. Önemsiz dillere aksiyomatik anlambilim vermek zordu.

Sorunun bir kısmı, programların eşitliği kavramının şimdiki kadar iyi anlaşılmamış olmasıydı. Her iki sorunun da önemli ölçüde iyileştirildiğini, (1) örneğin süreç teorisinden (belirli bir operasyonel anlambilim biçimi olarak görülebilir) gelen bisimilasyon esaslı teknikler veya örneğin operasyonel anlambilim ve program üzerine Pitts çalışmasıyla iyileştirildiğini iddia ediyorum. eşdeğerlik ve (2) örneğin ness-kalkülüsünde dil dilini programlama yoluyla Hennessy-Milner mantıklarının tipli versiyonları olarak türetilen ayırma mantığı veya Hoare mantıklarının gelişmeleri ile. Program mantıklarının (= aksiyomatik anlambilim) de bileşimsel olduğunu unutmayın.

Anlamsal semantiğe bakmanın bir başka yolu, birçok programlama dilinin olması ve hepsinin benzer görünmesidir, belki de basit ama evrensel bir meta dil bulabilir ve tüm programlama dillerini bu meta ile kompozisyonel bir şekilde eşleyebiliriz. dil. 1960'lı yıllarda bazı yazılan hesabının meta dil olduğu düşünülüyordu . Bir resim 1000'den fazla kelime söyleyebilir:λ

resim açıklamasını buraya girin

Bu yaklaşımın avantajı nedir? Belki ona ekonomik bir POV'dan bakmak mantıklıdır. Bir nesne programı sınıfı hakkında ilginç bir şey kanıtlamak istiyorsak, iki seçeneğimiz var.

  • Doğrudan nesne düzeyinde kanıtlayın.

  • Meta seviyeye (ve geri) çevirinin özelliği 'koruduğunu' kanıtlayın ve ardından meta düzeyi için kanıtlayın ve ardından sonucu tekrar nesne düzeyine itin.

İkincisinin birleşik maliyeti muhtemelen bir öncekinin maliyetinden daha yüksektir, ancak çeviriyi kanıtlamanın maliyeti gelecekteki tüm kullanımlar için amortismana tabi tutulabilirken, meta seviyesi için mülkü kanıtlayan maliyet kanıtın maliyetinden çok daha düşüktür nesne düzeyinde.

Anlamsal semantiğe orijinal düzen teorik yaklaşımı şimdiye kadar bu vaatleri yerine getirmemiştir, çünkü nesne yönelimi, eşzamanlılık ve dağıtılmış hesaplama gibi karmaşık dil özelliklerine henüz kesin düzen teorik anlambilimi verilmemiştir. "Kesin" ile kastediyorum, bu dillerin doğal işlemsel semantiği ile eşleşen anlambilim.


Anlamsal anlambilimi öğrenmeye değer mi? Eğer anlamsal semantiğe düzen teorik yaklaşımları kastediyorsanız, programlama dilleri teorisinde çalışmak istemiyorsanız ve daha eski makaleleri anlamanız gerekmedikçe muhtemelen hayır. Anlamsal semantiğe düzen teorik yaklaşımları öğrenmenin bir başka nedeni de bu yaklaşımın güzelliğidir.


4

Ben yazacağım yalnızca böylece (ve mevcut değil ise) ve için anlamsal anlambilim . Her iki anlambilimi de doğru bir şekilde tanımlarsanız, büyük olasılıkla edeceğinizi unutmayın . I yazacaksýn anlamına gelmesi veya .O(p,σ)σp,σσD(p)pO(p,σ)=D(p)(σ)S(p)σO(p,σ)D(p)

Şimdi derleyicisini alın . Derleyici olduğunu söylemek anlambilimi koruduğu anlamına gelir, yani . İşlemsel anlambilim kullanarak bunu kanıtlamaya çalışsaydınız, herhangi bir ve herhangi bir , için bunu kanıtlamanız gerekir . Bunu anlamsal semantik kullanarak kanıtlamak için, sadece herhangi bir , için kanıtlamanız gerekir . üzerinde ölçmek zorunda kalmamak çoğu zaman çok fazla iş tasarrufu sağlar.C:XXS(C(p))=S(p)pσO(C(p),σ)=O(p,σ)pD(C(p))=D(p)σ

Aptal örnek:

( q ; q ) ( s k i p ; q ; s k i p ; q ; s k i p )C(p)= tümünü yerine .(q;q)(skip;q;skip;q;skip)

Anlamsal anlambilimde, sadece indüksiyon ile bir kanıt yapacaksınız ve bir derleyici olduğunu kolayca alacaksınız . Operasyonel semantikte, atlamaları hesaba katmak için türevlerinizi almanız ve türev parçalarınızı her yere takmanız gerekir ve bu bir kabus olacaktır.CpC

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.