Programlama dili anlambiliminde bir sıralama nedir?


9

Bölüm 1'de Programlama Dilleri için Pratik Vakıflar , yazar soyut sözdizimi ağaçlar ile ilişkili olduğunu bahseder türlü .

Sezgisel olarak, türler tür gibidir, ancak kesin bir tanımları olup olmadığını bilmek isterim. Bazı referanslar da sağlanırsa çok sevinirim.

Yanıtlar:


4

Bu, türler ve türler için hangi anlambileceğimize bağlıdır. - Ancak kısa - gayri resmi - tanımlar olabilir - Sıralar AST sınıflarıdır ve türleri değer sınıflarıdır .


4

Aslında abstact sözdizimi ve genellikle anlaşıldığı gibi türler arasında çok benzerlik vardır. Ancak türler resmi bir sözdizimsel kavramdır ve AS ağaçları da sözdizimidir, tipler semantik bir kavramdır .

Terminoloji, cebir ( serbest cebir olarak da adlandırılır ) ve evrensel cebir teriminden gelir . Bunlar aslında herhangi bir yorumdan bağımsız olarak analiz edilen cebirsel yapıların sözdizimsel teorileridir. 20. yüzyılın ilk yarısında geliştirildi.

Bir terim, düğümlerin sonlu bir operatör kümesinden etiketlendiği bir ağaç olarak görülebilir; her operatör, ağaçtaki kızların sayısını belirten sabit bir düzene sahiptir. Arity 0 yapraklar içindir. In cebiri çok sıralanmış bu türlü rafine her kızı için, her bir tür aittir operatör ve arities türlü sıralı bir listede yerini böylece onun kafası operatörün tür olduğunu düzeltmeleri. Bir operatörün türüne, kızının türlerinin listesiyle birlikte operatörün imzası denir .

Evrensel cebirlerde, bu terimler arasında eşit olarak tanımlanmış denklik ilişkileri getirilerek daha da rafine edilir.

Biraz solmuş gibi görünse de, bu kavramlar 20. yüzyılın sonlarında bilgisayar bilimlerinde oldukça popülerdi ve çok çalışıldı, daha sonra soyut veri türleri için bir temel olarak görüldüğü soyut cebirler, yani kısmen neyin öncüsü nesne yönelimli programlamada nos sınıfları.

Evrensel cebirler, türlerin ve programlama dillerinin mevcut vizyonunun da temelini oluşturan kategori teorisinin gelişimi ile ilgilidir.

Cebirler sözdizimsel nesnelerdir ve türlere karşılık gelen bazı anlamsal alan (lar) da bir yorumla birlikte kullanılması amaçlanmıştır. Bir yorumlama, değerleri değer türlerine (türlerine) ve operatörleri bu alanlar arasındaki işlevlere eşleyen bir homomorfizmdir , böylece imzalara saygı duyulur ve denklem cebiri durumunda da denklemler bulunur. Grup teorisinin sonuçlarını, bir grubun tanımına saygı duyan bir işlemle herhangi bir etki alanına bu şekilde uygulayabilirsiniz.

Bu organizasyon, özellikle programlama dillerini resmileştirmekle ilgilenen programlama dillerindeki ilk araştırmacılar tarafından çok uygun görülmüştür. Sözdizimi ve anlambilimi izole etme ve matematiksel olarak iyi anlaşılma avantajına sahipti.

Bunu benimsemenin bir başka nedeni, programların, geliştirme ortamlarında veya programların özelliklerini kanıtlamak için resmi sistemlerde (ki daha fazla ikiz problem olduğu ortaya çıktı) manipüle etmek için aracın geliştirilmesiyle ilgili bir endişeydi.

Bu , programlama dilleri için temel olarak çok sıralı bir cebirin (bazen bazı sistemlerde sıralama birliği kullanımı ile rafine edilmiş) terimleri olan soyut sözdizimi ağacı (AST) kavramının ortaya çıkmasına yol açar . AST, anlambilimin homomorfizm tarafından ifade anlambilimindeki gibi tanımlanabildiği bir dilin referans sözdizimidir.

Bu sadece dillerin anlambilimini incelemek için uygun değildir, aynı zamanda ağaçlar daha iyi yapılandırılmış ve bu nedenle programlama araçları ve programlama ortamları geliştirmek için daha iyi bir temel oluşturur.

Ayrıştırma teknolojisinin sınırlamaları çarpık gramerlerin kullanımını zorladığı için, geleneksel olarak dağınık bir parça olan ayrıştırmayı izole etmeyi sağlar. Ayrıca sunum sorunlarını da etkiliyor.

Bazen uygun olabilecek programların birden fazla somut (dize veya grafik) temsilini mümkün kılar (program sözdiziminde sekmelerden veya bunun tersinden ziyade noktalama işaretlerini kullanmanın nedenlerine gerek yoktur).

Program uygulamalarını soyut yorumlarla analiz etmek için programların ve türlerin birçok yorumunu tanımlamayı kolaylaştırır .

Otomatik program dönüşümleri veya diller arasındaki çeviriler için (yarı) otomatik program işleme araçları yazmak için uygundur.

İşler bazen pratikte biraz daha karmaşık olabilir, çünkü Soyut Sözdiziminin bazı formları bazı operatörlerin çeşitli türlere ait ağaçları (ifadeleri) satın almasına izin verir (ona bakmak için gayri resmi bir yol). Örneğin, değişkenleri (atanabilir varlıklar) temsil eden sözdizimsel yapılar için bir tür ve ifadeler için başka bir tür olabilir. Ancak herhangi bir değişken ifade olarak kullanılabilir, tersi de yanlıştır.

Programlama dilleri hakkındaki bu ilk makaleler yetmişli yılların ortalarına dayanmaktadır. O zamandaki kavramsallaştırma, sözdizimi bilincine sahip (daha sonra "yönlendirilmiş" sözcüğü) programlama ortamlarının üretimi için tasarlanmıştır. Avrupa'da Mentor ve Centaur'u ve ABD'de Cornell Program Synthesizer'ı arayın. Bu tür kavramları pratik olarak kullanan ilk iki sistemdi. Daha sonra diğerleri geliştirildi.

Ancak soyut sözdizimi bu sistemlerden önce gelir. Lisp dili (1958) soyut bir sözdizimine sahipti, ki bu bir mantıkçı tarafından geliştirildiğinden ve programları manipüle eden programlar yapmak için sürpriz değil (ayrıca daha sonra gelen ML ve LCF'ye de bakınız). Ancak Lisp sıralanmadı: her şey sözdizimsel olarak bir listeydi ve daha rafine yapı aslında anlambilime bağlıydı. Bu, bazı insanların bir şekilde yanlış bir şekilde Lisp'in sözdizimi olmadığını düşünmesine yol açar.


Biri sözdizimi alanında, diğeri anlambilim alanında olmak üzere 2 farklı hiyerarşi olduğunu söyleyebilir misiniz? Sözdiziminde sizler olarak AST'ler ve çeşitler ve çeşit sınıfları vardır. Anlambilimde değerlerimiz, türlerimiz, çeşitlerimiz vb. Vardır. İkisini de Twelf veya Coq gibi tek bir geliştirme ortamında birleştiren diller yok mu?
CMCDragonkai

@CMCDragonkai (olası hataları engelleme) tam olarak söylediğim şeyi söyleyebilirim. Bu hiyerarşilere değil, (meta-) söylemin alanlarına çağırırım. Sözdizimi-semantik ayrımı, ne hakkında konuştuğumuzu ve nasıl yaptığımızı ayırt eder, bu da temsil gerektirir. Aynı dilin sözdizimini ve semantiğini karıştırmak istememelisiniz, ancak bir dilin sözdizimi bir söylem nesnesi olabilir, dolayısıyla başka bir dilin semantiğine aittir. Bu anlamda, dikkatle ele alınması için birleşme görebilirsiniz. Sözdizimi her zaman sonlu olarak oluşturulurken, anlambilimin böyle bir kısıtlaması yoktur.
babou

2

Dördüncü bölümde, sözdizimi ve türlerin anlambilim için olduğu anlaşılmaktadır.

40. sayfadaki örnek sözdizimi grafiği, L {num str} dilindeki sıralamalar ile ilgilidir. Görünüşe göre sıralamalar dilin sözdizimindeki kategorilerdir.

Özellikle, "artı" nın sonucunun sözdizimsel kategorisi olan bir türü vardır. "Plus" operatörünün türü "Exp" olarak adlandırılır. Bu sözdizimsel olarak, "artı" operatörünün çağrılmasının bir ifade olduğu gerçeğini temsil eder. "Artı" operatörünün çağrılması, bir ifadeye izin verilen soyut bir sözdizimi ağacındaki bir konumu doldurabilir. Bu bir "artı" ne tür bir yapıdır. Bir programı temsil eden metnin yapısına bu şekilde uyar.

Sayfa 41 tip sistemi, L {num str} dilindeki türlerle ilgilidir. "Artı" operatörünün türü, işlenenlerinin "num" türüne sahip olduğu düşünüldüğünde "num" dur. Bu karar, operatörün "artı" semantiğinin kısmi bir tanımıdır. Yani, "artı" operatörünün anlamının bir kısmı, bir sayı üretmek için iki sayının birleştirilmesidir. Bu anlam "artı" yı diğer ifadelerden ayırır.

Ayrıca, "num" ve "str" ​​olmak üzere iki tür içeren "Typ" adında bir sıralama vardır.


1
Bunu bu kavramda kullanıyor, ama açıkça tanımlamıyor. Bana öyle geliyor ki "çok çeşitlenmiş mantık" terimini buldum. Sadece ikisi için de net bir tanım bilmek istedim.
rslima

Bu "saf tip sistemler" ile ilgili bir şey. " Türlü Lambda Calculi " sunumunun konvansiyonel olduğunu düşünebiliriz . Ama kısa değil. Henüz terim, tür, tür ve sıralama ile ilgili net, özlü tanımlar sağlayan bir referans bulamadım.
minopret

Bir ayrıştırıcıdaki üretim kafaları ne olacak? Gramerleri çoğu kez İfade veya Tür gibi benzer adlar altında sınıflandırırsınız.
CMCDragonkai

1

Bölüm 1'in başında Harper, sort kelimesiyle ne demek istediğine dair bir ipucu verir :

Bir dilin sözdizimi, çeşitli türde ifadelerin (ifadeler, komutlar, bildirimler vb.) Program oluşturmak için birleştirilebileceği araçları belirtir .

Kelime öbeğini , daha sonra tartıştığı soyut bir sözdizimi ağacı olarak tanımlar .


Bana öyle geliyor ki "sıralar" burada her zamanki İngilizce anlamı ile kullanılmış, "tür" ile eşanlamlı.
Raphael

@Raphael Evet, ama anlamın ikinci biçimsel kullanımla tutarlı olduğu anlaşılıyor, kabul etmiyor musunuz?
jcora

Pek değil. "Bu tür X" ifadesi kitapta sıkça görünebilir; bu cümle hiçbir şeyin tanımlandığını göstermez. (Ayrıca, bu pasaj "sıralama" terimini nasıl anladığımla eşleşmiyor).
Raphael

@Raphael OK, lütfen bu özel kullanımın nasıl tutarsız olduğunu açıklayın, kesinlikle beni bilgilendirecektir, çünkü şu anda bunu anlıyorum.
jcora

Bildiğim "sıralama" kavramı, AST'nin tek tek düğümleri ile ilişkilidir, bütün bir ağaçla değil ("ifadeniz" kaynağınızda anlamına gelir).
Raphael
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.