Teoria języka programowania - Programming language theory

Mała grecka litera λ ( lambda ) jest nieoficjalnym symbolem dziedziny teorii języka programowania. To użycie wywodzi się z rachunku lambda , modelu obliczeń wprowadzonego przez Alonzo Churcha w latach 30. XX wieku i szeroko stosowanego przez badaczy języka programowania. Uświetnia okładkę klasycznego tekstu Structure and Interpretation of Computer Programs oraz tytuł tak zwanych Lambda Papers z lat 1975-1980, napisanych przez Geralda Jaya Sussmana i Guy Steele , twórców języka programowania Scheme .

Teoria języka programowania ( PLT ) to dział informatyki, który zajmuje się projektowaniem, implementacją, analizą, charakteryzacją i klasyfikacją języków formalnych znanych jako języki programowania oraz ich indywidualnych cech . Należy do dyscypliny informatyki, zarówno zależnej, jak i mającej wpływ na matematykę , inżynierię oprogramowania , językoznawstwo, a nawet kognitywistykę . Stała się uznaną gałęzią informatyki i aktywnym obszarem badawczym, a jej wyniki publikowane są w licznych czasopismach poświęconych PLT, a także w publikacjach z zakresu informatyki ogólnej i inżynierskiej.

Historia

Pod pewnymi względami historia teorii języków programowania wyprzedza nawet rozwój samych języków programowania. Rachunek lambda , opracowany przez Alonzo Church i Stephen Cole Kleene w 1930 roku, jest uważany przez niektórych za pierwszy na świecie język programowania, mimo że był przeznaczony do modelu obliczeń zamiast być środkiem dla programistów do opisania algorytmów do systemu komputerowego . Wiele nowoczesnych języków programowania funkcjonalnego zostało opisanych jako „cienkie okleiny” nad rachunkiem lambda, a wiele z nich można łatwo opisać w tym zakresie.

Pierwszym wynalezionym językiem programowania był Plankalkül , który został zaprojektowany przez Konrada Zuse w latach 40. XX wieku, ale nie był znany publicznie do 1972 (i nie został zaimplementowany do 1998). Pierwszym powszechnie znanym i odnoszącym sukcesy językiem programowania wysokiego poziomu był Fortran , opracowany w latach 1954-1957 przez zespół naukowców IBM kierowany przez Johna Backusa . Sukces FORTRAN doprowadził do powstania komitetu naukowców, którzy stworzyli „uniwersalny” język komputerowy; rezultatem ich wysiłków był ALGOL 58 . Osobno John McCarthy z MIT opracował Lisp , pierwszy język wywodzący się ze środowiska akademickiego, który odniósł sukces. Wraz z sukcesem tych początkowych wysiłków języki programowania stały się aktywnym tematem badań w latach 60. i później.

Kilka innych kluczowych wydarzeń w historii teorii języka programowania od tego czasu:

1950

  • Noam Chomsky opracował hierarchię Chomsky'ego w dziedzinie językoznawstwa, odkrycie, które bezpośrednio wpłynęło na teorię języka programowania i inne gałęzie informatyki.

1960 1960

lata 70.

lata 80

1990

Poddyscypliny i dziedziny pokrewne

Istnieje kilka dziedzin nauki, które albo leżą w teorii języka programowania, albo mają na nią głęboki wpływ; wiele z nich w znacznym stopniu się pokrywa. Ponadto, PLT korzysta z wielu innych dziedzin matematyki , w tym teoria obliczalności , teorii kategorii i teorii mnogości .

Semantyka formalna

Semantyka formalna to formalna specyfikacja zachowania programów komputerowych i języków programowania. Trzy wspólne podejścia do opisu semantyki lub „sens” programu komputerowego są denotational semantyki , semantyka operacyjne i aksjomatyczne semantyka .

Teoria typów

Teoria typów to nauka o systemach typów ; które są „praktyczną metodą składniową do udowadniania braku pewnych zachowań programu poprzez klasyfikację fraz według rodzajów wartości, które obliczają”. Wiele języków programowania wyróżnia się charakterystyką ich systemów typów.

Analiza i transformacja programu

Analiza programu to ogólny problem badania programu i określenia kluczowych cech (takich jak brak klas błędów programu ). Transformacja programu to proces przekształcania programu w jednej formie (języku) w inną formę.

Analiza porównawcza języka programowania

Analiza porównawcza języków programowania ma na celu klasyfikację języków programowania na różne typy na podstawie ich cech; szerokie kategorie języków programowania są często znane jako paradygmaty programowania .

Ogólne i metaprogramowanie

Metaprogramowanie to generowanie programów wyższego rzędu, które po uruchomieniu wytwarzają w rezultacie programy (prawdopodobnie w innym języku lub w podzbiorze języka oryginalnego).

Języki specyficzne dla domeny

Języki specyficzne dla domeny to języki skonstruowane w celu efektywnego rozwiązywania problemów określonej części domeny.

Budowa kompilatora

Teoria kompilatorów to teoria pisania kompilatorów (lub bardziej ogólnie tłumaczy ); programy, które tłumaczą program napisany w jednym języku na inną formę. Działania kompilatora są tradycyjnie podzielone na analizę składni ( skanowanie i parsowanie ), analizę semantyczną (określanie, co program powinien zrobić), optymalizację (poprawianie wydajności programu zgodnie z pewną metryką; zazwyczaj szybkość wykonywania) i generowanie kodu (generowanie i wyjście równoważnego programu w jakimś języku docelowym; często zestaw instrukcji procesora).

Systemy uruchomieniowe

Systemy uruchomieniowe odnoszą się do rozwoju środowisk wykonawczych języka programowania i ich komponentów, w tym maszyn wirtualnych , garbage collection i interfejsów funkcji obcych .

Czasopisma, publikacje i konferencje

Konferencje są głównym miejscem prezentacji badań w językach programowania. Najbardziej znane konferencji obejmować Sympozjum na temat zasad programowania Języki (popl), język programowania projektowania i wdrażania (PLDI), na Międzynarodowej Konferencji na temat Programowanie funkcyjne (ICFP), Międzynarodowa Konferencja na temat programowania obiektowego, systemów, języków i programów komputerowych ( OOPSLA) i Międzynarodowa Konferencja na temat architektury, za Języki programowania i systemy operacyjne (ASPLOS) .

Znane czasopisma publikujące badania PLT obejmują ACM Transactions on Programming Languages ​​and Systems (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming oraz Higher-Order and Symbolic Computation .

Zobacz też

Bibliografia

Dalsza lektura

Linki zewnętrzne