Fernando J. Corbató'nun “Kısıtlı diller”


13

Onun için 1990 Turing Ödülü konuşmasının Fernando J. Corbató kompleks sistemler kaçınılmaz başarısız olur nedenlerini sıraladı. Sonuç olarak, başarısızlık olasılığını azaltmak için bazı önerilerde bulunmaktadır. Bir fikri şöyle sıralıyor:

Tasarım veya sentez için kısıtlanmış dillerin kullanılması güçlü bir metodolojidir. Bir programcının veya tasarımcının alakasız fikirleri ifade etmesine izin vermeyerek, olası hataların alanı çok daha sınırlı hale gelir.

"Kısıtlanmış dil" ile ne demek istiyor?

Bir an için kısıt programlamayı düşündüm . Ancak, kısıtlama programlama, programın çözüm alanını kısıtlamakla ilgilidir. Bir programcıyı güçlendiren bir araçtır. Corbató'nun bahsettiği özellik, programcıyı gerçekten kısıtlayan veya en azından terser kodu yazmaya daha eğilimli hale getiren bir şey gibi görünüyor.

İkinci düşüncem, muhafazakar programlama dillerinden söz ettiği . Corbató, Turing ödülünü 1960'larda ve 1970'lerde yaptığı çalışmalardan aldı. Benim anladığım kadarıyla bir çok delikli kartla uğraştı. Hiç bir punch kart görmedim, bu yüzden kesinlikle bir tane nasıl programlayacağımı bilmiyorum, ama delikli kart programlamanın son derece liberal olduğunu tahmin edebilirim. Tip kontrolü, statik analiz vb. Kavramlarının mevcut olmadığından şüpheleniyorum. Yani, Corbató belki de geliştiricinin aptal hatalar yapmasını kısıtlayan diller fikrine atıfta bulunuyor mu? Bu da böyle görünmüyor. Güvenlik kontrolü ve veri modellemenin terslikle bir ilgisi yoktur, bu da “alakasız fikirlere izin vermeme ...” ifadesinden söz ettiği zaman bahsettiği şeydir.


@jweyrich Beni Programcılar'a ilettiğiniz için teşekkür ederim. Bununla birlikte, StackOverflow'daki programlama dilleri etiketine gittiğimde, benimki kadar genel olan ve "Statik olarak zayıf yazılan bir dil var mı?" burada yazar genel okuma materyallerine de atıfta bulunur
Xander Dunn

5
@thoughtadvances Bahsettiğiniz soruların tarihlerini kontrol edin, çoğu oldukça eski olduğundan eminim. SO 4 yaşında, işler değişiyor ve genel olarak zaman geçtikçe katılaşıyoruz. Sorunuz Programcılar için iyi (Ben bir modum), ancak bunu ılımlı dikkat için işaretlediyseniz ve yeniden yayınlamak yerine taşınmasını isteseydiniz daha kolay olurdu. Göç sizi yeniden yayınlama zahmetinden kurtarırdı ve bu sorunun yanıtı Programcılara yanıtı getirirdi. Endişelenme şimdi, ben hallederim.
yannis

3
Bir örnek olarak,: (not eğer fikri) malloc nedense belirli bir uygulama için "ilgisiz", daha sonra olası hataların domain "sınırlayacak C'nin üzerinde (hiçbir malloc alarak kısıtlı (malloc yoktur))" Java seçerek "malloc
gnat

@YannisRizos Göç ettiğiniz için çok teşekkür ederim. Bu işlevin var olduğunu bilmiyordum. Belki de StackOverflow'daki daha deneyimli kullanıcılar bu yolu sadece kapatmak yerine önerebilirdi.
Xander Dunn

3
" Delikli kartlara kodlama " bir program yazmanın başka bir yoluydu. 1960'ların sonunda ve 1970'lerin başında, bugünkü diller kadar sofistike dillere sahiptik. Programlama dillerinin temel kavramlarının çoğu zaten iyi kurulmuştu ve ALGOL 60 , 1963'e kadar programlama araçları için standardı belirledi.
Ross Patterson

Yanıtlar:


8

"Kısıtlı Programlama Dili" basitçe dillerin amacı ile alakasız şeyler yapmak için (kolay) yollar sağlamayan bir dildir.

Bunun "ilgisiz", "aptal", "aptal" veya "yanlış" olmadığını unutmayın.

Bunun güzel bir örneği, sorgu dilinde özyineleme veya döngüler gibi birçok yordam türü programlama yapısını ifade etmenin bir yolu olmayan ISO / ANSI SQL (SQL-92'den önce) olabilir. (Yine de, şimdi var ve satıcılar zaten onlar için özel uzantılar eklediler).


6
Bu tam olarak Corbató'nun amacı. 1969'da PL / I Sistem Programlama Aracı Olarak "Veri Geçiş Aracı " adlı harika bir makalede (" geçici derleyiciyle " beş yıl "gibi müthiş bir altyazıyla !)
Ross Patterson

Teşekkür ederim, bu cevap çok faydalı. Bu fikrin ilginç sonuçları var. Bu, bir programcının hepsine hükmedecek bir dile sahip olmak yerine, farklı yeteneklere sahip çeşitli dillere çok sayıda erişime sahip olmak istediğini gösteriyor gibi görünmektedir; bu, birçok programcının C, C ++ veya Java'nın olabileceğini varsayar.
Xander Dunn

@RossPatterson Mükemmel! Teşekkür ederim! Corbató'dan konuyla ilgili bir ayrıntı arıyordum, ama fazla bir şey bulamadım.
Xander Dunn

1
Bu Datamation makalesinden büyük bir özet alıntı: " Sistemi yapmadaki amacımız ... sınırı keşfetmek ve belirlenen hedeflere ulaşan ve bunları karşılayan bir sistemi etkili bir şekilde nasıl bir araya getireceğimizi görmekti. Temel tasarım fikirlerini ortaya koyar ve hangi sisteme aşina olduklarına bakılmaksızın bunları başkalarına iletir.Bu nedenle, donanımın belirli ayrıntılarının üstünde bir dil kesinlikle arzu edilir, ... Başka bir deyişle, birini tasarım yapmaya zorlar, Ve bu onun güçlü noktalarından biri olduğu ortaya çıktı . "
Ross Patterson

2
@thoughtadvances " Bu, bir programcının hepsine hükmedecek bir dile sahip olmaktan ziyade, farklı yeteneklere sahip çeşitli dillerden fazlasına erişmek isteyeceğini göstermektedir " - bu, bir genç ve kıdemli bir programcı arasındaki farklardan biridir. Hiçbir marangoz sadece bir çekiç :-)
Ross Patterson


0

İlk olarak, konuşmasının yapıldığı zaman bilgisayar çağını anlamanız gerekir (1990). Ayrıca, akademik bir kitleyle konuştuğunu ve MIT'in ana üssü olduğunu anlayın.

O dönemde, dil yazma dilleri (meta diller) gündemdeki bir konuydu. Meta-Nesne Sanatı protokolü yeni çıktı ve yeni dillerin tasarımına ilham veriyor. Ancak, tüm bu lüks bir bedeli var: karmaşıklık.

Sistemlerin karmaşıklığını azaltmaya yardımcı olmak ve bu sistemleri kontrol etmeye izin vermek için Z gibi meta diller test edilebilir bir şartname yapmak için çıktı. Benim tahminimce bu tür dillere atıfta bulunuyor.


2
Corbató sadece yirmibir geç MIT akademisyeni değil. Alanımızın öncülerinden biri. CTSS ile ilgili çalışmaları seminaldi ve doğrudan Multics, Unix, CP / 67 ve günümüzün Linux ve z / VM sistemlerine yol açtı. Söz konusu ifade , Meta-Nesne Protokolü Sanatı ve Turing dersinden 20 yıl önce açıkça açıkladığı bir ilke ile ilgilidir .
Ross Patterson

0

Muhtemelen, kavraması gereken kavram sayısı oldukça düşük olan bir dil anlamına gelir. Diyagramlar Kontrol burada coffeescript, Ruby ve C ++ içinde kavramların grafiksel temsillerini göstermektedir. Tuner olabilir, bir dilde ne kadar az kavramınız varsa, alakasız fikirleri ifade etme şansınız o kadar az olur.


"... Veya bir dil" - bu bir şeye yorum mu?
gnat

Yorum gibi görünmemek için yayını düzenledi.
Manoj R
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.