Programlama dili teorisi

Programlama dili teorisi (PDT), programlama dilleri olarak bilinen biçimsel dillerin ve bunların bireysel özelliklerinin tasarımı, uygulanması, analizi, karakterizasyonu ve sınıflandırılması ile ilgilenen bir bilgisayar bilimleri dalıdır. Matematik, yazılım mühendisliği, dilbilim ve hatta bilişsel bilime bağlı ve onu etkileyen bilgisayar bilimi disiplinine girer. PDT'ye adanmış çok sayıda dergide ve genel bilgisayar bilimi ve mühendisliği yayınlarında yayınlanan sonuçlarla tanınmış bir bilgisayar bilimi dalı ve aktif bir araştırma alanı haline gelmiştir.

Bazı yönlerden, programlama dili teorisinin tarihi, programlama dillerinin kendilerinin gelişmesinden bile önce gelir. 1930'larda Alonzo Church ve Stephen Cole Kleene tarafından geliştirilen lambda hesabı, programcıların bir bilgisayar sistemine algoritmaları tanımlamaları için bir araç olmaktan ziyade hesaplamayı modellemek için tasarlanmış olmasına rağmen, bazıları tarafından dünyanın ilk programlama dili olarak kabul edilir. Birçok modern fonksiyonel programlama dili, lambda hesabı üzerinde "ince bir katman" sağladığı şeklinde tanımlanmıştır, ve birçoğu bu açıdan kolayca tarif edilmektedir.

İcat edilmiş ilk programlama dili 1940'larda Konrad Zuse tarafından tasarlanan, ancak 1972'ye kadar kamuya açıklanmayan (ve 1998'e kadar uygulanmayan) Plankalkül'dü. Yaygın olarak bilinen ve başarılı ilk üst düzey programlama dili, 1954'ten 1957'ye kadar John Backus liderliğindeki IBM araştırmacılarından oluşan bir ekip tarafından geliştirilen Fortran'dı. Fortran'ın başarısı, "evrensel" bir bilgisayar dili geliştirmek için bir bilim adamları komitesinin kurulmasına yol açtı; çabalarının sonucu ALGOL 58'di. Ayrı olarak, MIT'den MITJohn McCarthy'idi, kökleri akademiden başarılı ve kökleri olan ilk dil olan Lisp'i geliştirdi. Bu ilk çabaların başarısı ile programlama dilleri 1960'larda ve sonrasında aktif bir araştırma konusu haline geldi.

Simula dili Ole-Johan Dahl ve Kristen Nygaard tarafından geliştirilmiştir; nesne yönelimli bir programlama dilinin ilk örneği olarak kabul edilir; Simula ayrıca ko-rutinler kavramını da tanıttı.

1964'te Peter Landin, Church'ün lambda hesaplamasının programlama dillerini modellemek için kullanılabileceğini fark eden ilk kişidir. Lambda ifadelerini "yorumlayan" SECD makinesini tanıtıyor.

1966'da Landin, The Next 700 Programming Languages adlı makalesinde soyut bir bilgisayar programlama dili olan ISWIM'i tanıttı. Haskell programlama diline giden dillerin tasarımında etkilidir.

1969'da William Alvin Howard, doğal tümdengelim olarak adlandırılan "üst düzey" bir ispat sisteminin, sezgisel versiyonunda lambda hesabı olarak bilinen hesaplama modelinin yazılı bir varyantı olarak doğrudan yorumlanabileceğini gözlemledi. Bu Curry-Howard yazışması olarak bilindi.

Alan Kay liderliğindeki Xerox Parc'taki bir bilim adamları ekibi, yenilikçi geliştirme ortamıyla yaygın olarak bilinen nesne yönelimli bir dil olan Smalltalk'u geliştiriyor.

1975 yılından itibaren Gerald Jay Sussman ve Guy Steele, sözcüksel kapsamlamayı sözcüksel kapsamlamayı, birleşik bir ad alanını ve birinci sınıf süreklilikler de dahil olmak üzere aktör modelinden öğeleri içeren bir Lisp lehçesi olan Scheme programlama dilini geliştirir.

Backus, 1977 Turing Ödülü dersinde, endüstriyel dillerin mevcut durumuna saldırdı ve şimdi işlev düzeyinde programlama dilleri olarak bilinen yeni bir programlama dilleri sınıfı önerdi.

1978'de Robin Milner, ML için Hindley-Milner tip çıkarım algoritmasını tanıttı. Tip teorisi programlama dillerine bir disiplin olarak uygulanmaya başlandı, bu uygulama yıllar içinde tip teorisinde muazzam ilerlemelere yol açtı.

Robin Milner'ın, İletişim Sistemleri Hesabı ve C.A.R. Hoare'un Sıralı İletişim Süreçler modeli gibi süreç hesapları ve Carl Hewitt'in aktör modeli gibi benzer eşzamanlılık modelleri ortaya çıktı.

Programlama dili teorisi içinde yer alan veya üzerinde derin bir etkisi olan birkaç çalışma alanı vardır; bunların birçoğu önemli ölçüde örtüşmektedir. Ayrıca PDT, hesaplanabilirlik teorisi, kategori teorisi ve küme teorisi dahil olmak üzere matematiğin diğer birçok dalını kullanır.

Biçimsel anlambilim, bilgisayar programlarının ve programlama dillerinin davranışının biçimsel özelliğidir. Bir bilgisayar programının şematiği veya "anlamını" tanımlamak için kullanılan üç yaygın yaklaşım, düz anlambilim, işlemsel anlambilim ve aksiyomatik anlambilimdir.

Tip teorisi, tip sistemlerinin incelenmesidir; bunlar "ifadeleri hesapladıkları değer türlerine göre sınıflandırarak belirli program davranışlarının yokluğunu kanıtlamak için izlenebilir bir sözdizimsel bir yöntemdir". Birçok programlama dili, tür sistemlerinin özellikleriyle ayırt edilir.

Program analizi, bir programı inceleme ve temel özellikleri belirleme (program hataları sınıflarının olmayışı gibi) genel sorunudur. Program dönüştürme, bir programı bir biçimden (dilden) başka bir biçime dönüştürme işlemidir.

Karşılaştırmalı programlama dili analizi, programlama dillerini özelliklerine göre farklı türlere ayırmayı amaçlar; programlama dillerinin geniş kategorileri genellikle programlama paradigmaları olarak bilinir.

Meta-programlama, yürütüldüğünde sonuç olarak programlar (muhtemelen farklı bir dilde veya orijinal dilin bir alt kümesinde) üreten daha yüksek dereceli programların üretilmesidir.

Derleyici teorisi, derleyiciler (veya daha genel olarak çevirmenler) yazma teorisidir; Bir dilde yazılmış bir programı başka bir forma çeviren programlar. Bir derleyicinin eylemleri geleneksel olarak sözdizim analizine (tarama ve ayrıştırma), semantik analize (bir programın ne yapması gerektiğini belirleme), optimizasyona (bir metrik tarafından belirtildiği gibi bir programın performansını iyileştirme; tipik olarak yürütme hızı) ve kod oluşturma olarak ayrılır (bazı hedef dilde eşdeğer bir programın oluşturulması ve çıkışı; genellikle bir CPU'nun emir seti).

Çalışma zamanı sistemleri, sanal makineler, çöp toplama ve yabancı işlev arayüzleri dahil olmak üzere programlama dili çalışma zamanı ortamlarının ve bileşenlerinin geliştirilmesine atıfta bulunur.

Konferanslar, programlama dillerinde araştırmaları sunmak için birincil mekandır. En iyi bilinen konferanslar arasında Programlama Dilleri İlkeleri Sempozyumu (POPL), Programlama Dili Tasarımı ve Uygulaması (PLDI), Uluslararası İşlevsel Programlama Konferansı (ICFP), Uluslararası Nesne Yönelimli Programlama, Sistemler, Diller ve Uygulamalar Konferansı (OOPSLA) ve Uluslararası Programlama Dilleri ve İşletim Sistemleri için Mimari Destek Konferansı (ASPLOS) .

PLT araştırmasını yayınlayan önemli dergiler arasında ACM İşlemleri Programlama Dilleri ve Sistemleri (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming ve Higher-Sıradan ve Sembolik Hesaplama bulunmaktadır.