Programlama dili anlambilimi kitapları


31

Nielson ve Nielson'un " Uygulamalar ile Semantik " adlı kitabını okudum ve konuyu gerçekten beğendim. Programlama dili anlambilimi hakkında bir kitap daha istiyorum - ancak gerçekten sadece bir tane alabilirim.

Turbak / Gifford kitabına bir göz attım ama çok uzun soluklu; Winskel'in iyi olacağını düşünmüştüm, ancak erişimim yok (Üniversite kütüphanemizde değil ve param yetersiz.) Ve tarihli olmadığından bile emin değilim. Slonneger Tamam görünüyor, ancak pratik kısmı biraz uzun sürüyor ve tarzıyla pek rahat değilim.

Öyleyse sorum şu - Winskel iyi bir kitap mı? Ve tarihli mi?

Ayrıca, konuyla ilgili başka özlü kitaplar var mı?


5
tüm kitaplar için yayıncı sayfalarına bağlantılar eklendi. taramak isteyen başkaları için faydalı olabilir.
Suresh Venkat,

2
Ne tür bir anlambilimiyle ilgileniyorsunuz? Denotasyonel? Operasyonel? Genel Bakış?
Ohad Kammar

@Ohad Kammar: Her ikisiyle de ilgileniyorum.
Jay

Yanıtlar:


31

Her şey ne kadar derine gitmek istediğine ve ne kadarını bildiğine bağlı. Yeni başlayanlar için Winksel'in kitabı gerçekten güzel, ama evet, sizi yaklaşık 20 yıl önce yazıldığı gibi anlamsal olarak sanatın durumuna getirmiyor. Bununla birlikte, konuya hala iyi bir ilk giriş. Ayrıca T. Nipkow Isabelle / HOL içinde Winskel kitabının önemli bir yığın resmileştirdi ettiğini işaret değerli olabilir, bkz burada . Bu nedenle, programlama dillerinin anlamını anlamakla birlikte etkileşimli prova asistanlarını kullanmayı öğrenmek istiyorsanız, üzerine çizeceğiniz çok sayıda tutarlı materyal vardır.

Daha gelişmiş olan diğer kitaplar:

  • Programlama Dilleri Semantiği, Gunter, anlamsızlık semantiğine odaklanan daha gelişmiş bir kitap, anlambilimsel bir yaklaşım, beklentilere dayanamadı. Tamamen fonksiyonel dillere odaklanır ve eşzamanlılığı yok sayar. Bu, kendime bir anlam olarak kendi anlamını öğrettiğim ve geriye döndüğümde Winksel'in kitabını kullanmamı dilerdim. Gunter yeni başlayanlar için kolay bir okuma değil.

  • Alanlar ve lambda- calculi Amadio ve Curien tarafından. Alan teorik geleneğinde daha çok yazılan bir başka kitap, süreç calculi'yi tartışsa da.

  • John Mitchell'in daha önce yukarıda belirtilen kitapları. Ayrıca, çoğunlukla sıralı hesaplama hakkındadırlar.

Pierce'in TAPL'si gibi kitaplar çok güzel, ancak programlama dillerinin bir yönüne, türlerine, yani olduğu kadar önemli bir noktaya odaklanılıyor. Programlama dillerinin genel alanına ilk giriş olarak tavsiye etmem ama türlerini öğrenmek isteyen herkes için okumak zorunludur.

Gerçeği söylemek gerekirse, şu anda son on yılın gördüğü önemli ilerlemeyi yansıtan dil anlambilimiyle ilgili güncel tanıtım kitabının olmadığını düşünüyorum. , aksiyomatik anlambilim ve doğrulamada etkileşimli ispat asistanlarının kullanımı.

Güncelleme 22. Nisan 2014: Tobias Nipkow ve Gerwin Klein yeni bir kitap yayımladı

'Isabelle / HOL'de Winskel' olarak görülebilir. Programlama dilleri (öncelikle operasyonel ve aksiyomatik) anlamına bir giriş niteliğindedir, ancak önceki kalem ve kağıt temelli yaklaşımların aksine, bu kitap tüm matematiğini Isabelle / HOL dilinde ifade eder. Başka bir deyişle, aynı zamanda teorem ispatlanması hakkında bir kitap.

Ben öğretim için kullanmadıysanız yani kitap yepyeni, ama daha düşük bir yüksek perdeden bir giriş olarak gerçekten uygun görünüyor Yazılım Vakıflar Pierce ve arkadaşları tarafından.


2
Sözde yöntemlerden uzak bir kayma var mı? Bana daha önce el dalgalı kanıtlar kullanacak türden insanlar gibi geldi, bugünlerde resmi kanıtlar üretmeleri bekleniyor. Varsayım yöntemleri hala yaptığımız her şeyi kolayca modelleyemediğinden ve daha birçok önkoşul gerektirdiğinden, bu araştırmacılar oyunlar, süreç hesapları, ispat yardımcıları gibi daha ulaşılabilir yöntemler kullanırlar. Sözde yöntemlerde bir düşüş olup olmadığından emin değilim.
Ohad Kammar 19

4
Lütfen terimbilimsel anlambilimi alan teorisi ile karıştırmayın . Oyun semantiği, kusursuz bir ifadedir, yani, bir programın anlamı, parçalarının anlamlarının bir fonksiyonudur.
Andrej Bauer

2
Bu yorumla ilgili yeni bir konu açtım. Fakat sizin tanımınıza katılıyorumdan emin olmasam bile, oyun anlambilimi doğası gereği kınadı. Benim yorumumda "oyunları" "işlemsel anlambilim" ile değiştirmem gerektiğini düşünüyorum ve oyun anlambilimini muhtemelen bir başka anlamsal anlambilim araştırması biçimi olarak eklemeliyim. cstheory.stackexchange.com/questions/3577/…
Ohad Kammar

1
Bir değişim olduğuna ikna olmadım. Andrej'nin yorumunun ışığında ilk yorumuma bakın.
Ohad Kammar,

1
Bir değişim var mı? İlginç bir soru. Bir değişimi nasıl ölçebiliriz? Farklı yaklaşımlara verilen araştırma hibe miktarı gibi görece somut olanlardan, zihin paylaşımı gibi belirsiz fikirlere uygulayabileceğimiz çok fazla kriter var. Araştırmacılar, çalışanlar, hibe parası için başvuranlar olarak bizler ne kadar dahil olduğumuz göz önüne alındığında, bu sorunun cevabını kabul etme ihtimalimiz çok düşük.
Martin Berger

20

Ücretsiz çevrimiçi olarak bulabileceğiniz rastgele bir örnek:

  • Winskel, Programlama Dillerinin Biçimsel Semantiği , Google Kitaplar önizlemesi . Bu kitap hakkında hiçbir şey bilmiyorum. Listede var çünkü soru özellikle çevrimiçi olan içeriği hakkında soruyor.
  • Morgan Şartnamesinden Programlama , ps dosyalar listesine . Konu, üst düzey çalıştırılabilir olmayan tanımlarla başlama ve daha sonra çalıştırılabilir bir şeye sistematik olarak geçiş yapma süreci olan arıtma. Tabii ki, her ayrıntılandırma aşaması anlambilimi korumalıdır, bu nedenle belirli bir anlambilim türünü de tartışır (çoğunlukla yordam göstericilere dayanarak).
  • Harper Programlama Dilleri Pratik Temelleri , tasarının pdf . Aşağıdaki Dave Clarke yorumuna bakın.
  • Remy, OCaml Dilini Kullanma, Anlama ve Çözme , pdf . Bu benim fonksiyonel programlama öğrendim (OCaml, daha doğrusu) ve bunu sevdim hangi kitaptır çok . Temel dil özelliklerinin anlamını çok güzel bir şekilde sunar ve süreçte lambda matematiği ve tip teorisini “bilmesi gerekenler” temelinde sunar.
  • Peyton Jones, İşlevsel Programlama Dillerinin Uygulanması , djvu . İlk bölümlerde lambda matematiği (ve onun operasyonel semantiği) ve dil seviyelerinin lambda matematiğine nasıl düşürüldüğü anlatılmaktadır. Bu anlamda, makale işlevsel diller için işlevsel bir anlam vermektedir.
  • Pierce (ed), Türlerde ve Programlama Dillerinde İleri Konular , Google Kitaplar önizlemesi .
  • Slonneger, sözdizimi ve Programlama Dilleri Semantiği , pdf dosyaların listesini . Uzun süre önce buna kısaca baktım ve bundan pek hoşlanmadım. Listede var çünkü soruda bahsedilir.
  • Brookes, Eşzamanlı Ayırma Mantığı için Anlambilim , pdf . Bu büyük bir makale (80 sayfa), kitap değil. Bunu ekledim çünkü ilginç bulduğum son bir gelişme.

1
bu bir sürü bağlantı :)
Suresh Venkat

3
Liste halinde sunulmuş olsaydı bu daha faydalı olurdu. Her neyse, Harper kitabını tavsiye ederim: "kudret" e tıklayın.
Dave Clarke,

Katılıyorum. Radu, kitapları sıralar mısın, ne dediğimizi biliyoruz? bu mükemmel bir kaynak olacaktır.
Suresh Venkat

Şimdi bir liste. (İlk sürüm, önceki gece yaklaşık 5 saat uyuduktan sonra
sabah

16

Programlama dili anlambilimi ile ilgili kitapları iki sınıfa bölerim: programlama dili kavramlarını modellemeye odaklananlar ve anlambilimin temelleri üzerine odaklananlar . Bir kitabın ikisini birden yapamamasının bir nedeni yok. Ancak, genellikle, bir kitaba koyabileceğiniz çok fazla şey vardır ve yazarların neyin önemli olduğu konusunda kendi önerileri vardır.

Winskel'in kitabı, daha önce de belirtildiği gibi, her iki yönü de biraz yerine getiriyor. Ve bu iyi bir başlangıç ​​kitabıdır. Eşit derecede iyi, belki de daha iyi bir kitap, başladığım kitaptır: Gordon'un Programlama Dillerinin Kaba Tanımı . Bu, lisans çalışmamdan kısa bir süre sonra okuduğum ilk anlambilim kitabımdı. Bana anlambilim açısından sağlam bir temel oluşturduğunu söylemeliyim ve hiçbir zaman kasten anlambilimin operasyonel anlambilimden veya aksiyomatik anlambilimden ne kadar farklı olduğunu merak etmek zorunda kalmamıştım.

Temelsel yönlerden ziyade modellemeye odaklanan diğer kitaplar şunlardır:

  • Tennent en programlama dilleri Semantik zorunlu programlama dilleri anlamlarını da daha çok veya daha az çağcıl kitaptır. Okumak kolaydır. Ancak, kitabın sonraki bölümlerinde soyut olma eğilimindedir ve işlerin neden belirli bir şekilde yapıldığını anlamak için mücadele etmek zorunda kalabilirsiniz.

  • Reynolds'un programlama dilleri teorileri . Anlambilim alanında uzmanlaşmış herkes kesinlikle bu kitabı okumalıdır. Sonuçta Reynolds tarafından. (David Schmidt bir keresinde bana, “Reynolds size sabah gazetesini okuyor olsa bile, dikkatlice dinlemek istiyorsunuz, çünkü önemli bir şey öğrenebilirsiniz” dedi.) Hem modelleme hem de temel yönleri iyi bir şekilde kapsıyor.

Temel yönleriyle ilgili en iyi kitaplar Gunter (lisansüstü bir ders kitabı olarak görüyorum) ve Mitchell (oldukça kapsamlı olduğu için kitaplığınızda olması iyi bir referans kitabıdır).


Seni burada görmek çok güzel, Uday!
Radu GRIGore,

Ben de burada olduğum için mutluyum. Bu çok güzel bir kaynak!
Uday Reddy

Şunlar hakkında: Geçişler ve Ağaçlar: Hans Hüttel 2010'dan Yapısal İşlemsel Semantiklere Giriş. İyi eleştiriler almış görünüyor, ancak burada kimse bahsetmiyor.
Arturo Hernandez

1
@Uday: Cevabınız için teşekkürler. "Programlama dili kavramlarını modellemek" ve "anlambilimin temel yönleri" ne anlama geliyor? Farklılıkları ve ilişkileri neler?
Tim

1
@Tim: Bir programlama dilinin anlamını vermek için, matematiksel yapılar kurmanız gerekir; örneğin en basit durumda kümeler, ancak kümeler ile ilgilenemeyen konular için alanlar, kategoriler, kömürbilgiler gibi karmaşık yapılar. "Temel yönler" ile, bu daha karmaşık yapıların teorisini kastediyorum. İlk durumda, odak dilleri programlama üzerine, ikinci durumda ise matematiksel temellere dayanıyor.
Uday Reddy

8

Anlambilim üzerine lisans dersini alırken Winskel'i okumaktan gerçekten çok zevk aldım. Bu alanda araştırma yapmadığım için tarih attığını söyleyemem. Winskel'in bir artı da, İngilizce'den başka bir dile çevrilmiş olduğunu bulabilirsiniz.

Daha fazla okumak için, daha yüksek lisans düzeyinde, John Mitchell'in Programlama Dillerinde Programlama Dilleri ve Kavramları için Temel Kitaplar kitabını öneririm . Sadece ilk bölümleri okursanız, özlülük gereksiniminizi de karşıladıklarını sanırım.

Bu kitapların ücretsiz taslaklarını bulamayacaksınız, bu nedenle sınırlı bir bütçeniz varsa, Radu'nun cevabındaki "kudret" e gidin.


6

Ben bu konuda uzman değilim, ancak verebileceğim bazı genel tavsiyeler var.

İlk olarak, zaten kitap okuyan ve üzerine yorumlar yazan bazı insanlar var. Örneğin, Winskel kitabı için Programlama Dillerinin Resmi Anlambilimi (bkz. [1] ve [2] ) Amazon'da incelemeler buldum.

Bir incelemenin parçası okuyor:

Bu kitap, değişmezleri değerlerinden ayırmak gibi, başından beri sözdizimi ve anlambilim arasında karışır. Onları ayırt etmek için özel bir not kullanılmamıştır. Bu, yazarın böyle bir konuda ele alması gereken önemli bir konudur. Ayrıca, kullandığı diğer bazı notasyonlar, binaları ve sonuçları göstermek gibi oldukça kafa karıştırıcıdır.

Yazar, arka plan materyallerini ilk birkaç bölümde (örneğin, set teorisi, operasyonel semantik, indüksiyonlar, endüktif tanımlamalar) çok kısa bir süre için açıkladığı gibi gerekli ön koşullara sahip olduğunuzu varsayıyor gibiydi. Giriş bölümünde kullanılan yazar, iki veya üç paragraflı metin paragrafı koymak ve daha sonra da bazı formüller koymaktır. Bu benim için oldukça sinir bozucu ...

18/20 kişi incelemeyi yararlı buldu. Daha fazla değerlendirme görmek için Amazon'u (veya diğer kaynakları) arayabilirsiniz.

İkinci olarak, Amazon, bu kitapla birlikte, Bilgisayar Bilim Adamları için Türler ve Programlama Dilleri ve Temel Kategori Teorisi sunmaktadır . On başka konu Dave Clarke mükemmel olanlar bu kitapları sunuyor "Tip Sistemleri ve Dil Semantik Programlama." Yine uzman değilim, ama bunlar sizin için yararlı olabilir.


TaPL zevkime göre biraz yavaş gidiyor. Bu iyi bir kitap, ama şunu söyledim çünkü soran kişi "uzun soluk" kitaplar hakkında endişeli görünüyor.
Radu GRIGore,

@Radu: Kesinlikle TAPL yavaş ama oldukça iyi bir giriş. Bağlantılarınızda bahsettiğiniz Harper kitabı çok daha hızlı gidiyor ve henüz tamamlanmamasına rağmen çok daha fazla zemin kaplıyor.
Dave Clarke,

4
Winskel'in kitabındaki Amazon incelemesini bir tutam tuzla alın. Genellikle lisans anlambilimi derslerinde önerilen bir metin olarak kullanılır ve muhtemelen hoşnutsuz öğrencileri çeker. Kitabı okudum ve tanıtım bölümlerini fazlasıyla yeterli buldum. Başındaki gösterimi de tamamen standart görünüyordu.
Dominic Mulligan


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.