Teorie programovacího jazyka - Programming language theory - Wikipedia
![]() | Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Říjen 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |

Teorie programovacího jazyka (PLT) je pobočkou počítačová věda která se zabývá návrhem, implementací, analýzou, charakterizací a klasifikací programovací jazyky a jejich jednotlivce funkce. Spadá do disciplíny počítačové vědy, a to jak v závislosti, tak v ovlivňování matematika, softwarové inženýrství, lingvistika a dokonce kognitivní věda. Stala se uznávaným odvětvím počítačové vědy a oblastí aktivního výzkumu s výsledky publikovanými v řadě deníky věnovaný PLT, stejně jako v obecných počítačových vědách a technických publikacích.
Dějiny
V některých ohledech historie teorie programovacího jazyka předchází i vývoji samotných programovacích jazyků. The lambda kalkul, vyvinutý společností Alonzo Church a Stephen Cole Kleene ve třicátých letech je některými považován za první programovací jazyk na světě, přestože to bylo zamýšleno Modelka spíše než být prostředkem pro programátory popsat algoritmy do počítačového systému. Mnoho moderních funkční programovací jazyky byly popsány jako poskytující „tenkou dýhu“ nad lambda kalkulem,[1] a mnohé z nich lze snadno popsat z hlediska toho.
První programovací jazyk, který byl vynalezen, byl Plankalkül, který navrhl Konrad Zuse ve čtyřicátých letech minulého století, ale veřejně známé až v roce 1972 (a neprovedené do roku 1998). První široce známý a úspěšný programovací jazyk na vysoké úrovni byl Fortran, vyvinutý v letech 1954 až 1957 týmem IBM vědci vedeni John Backus. Úspěch FORTRANu vedl k vytvoření výboru vědců pro vývoj „univerzálního“ počítačového jazyka; Výsledkem jejich úsilí bylo ALGOL 58. Odděleně, John McCarthy z MIT vyvinul Programovací jazyk Lisp (na základě lambda kalkulu), první jazyk, který má původ v akademické sféře, byl úspěšný. S úspěchem těchto počátečních snah se programovací jazyky staly aktivním tématem výzkumu v šedesátých letech a později.
Některé další klíčové události v historii teorie programovacího jazyka od té doby:
1950
- Noam Chomsky vyvinul Chomského hierarchie v oblasti lingvistika; objev, který přímo ovlivnil teorii programovacího jazyka a další odvětví počítačové vědy.
1960
- The Simula jazyk byl vyvinut Ole-Johan Dahl a Kristen Nygaard; to je široce považováno za první příklad objektově orientovaný programovací jazyk; Simula také představila koncept coutiny.
- V roce 1964 Peter Landin je první, kdo si to uvědomil Kostel je lambda kalkul lze použít k modelování programovacích jazyků. Představuje SECD stroj který "interpretuje" výrazy lambda.
- V roce 1965 Landin představuje Operátor J., v podstatě forma pokračování.
- V roce 1966 uvádí Landin JÁ PLAVU, abstraktní počítač programovací jazyk ve svém článku Dalších 700 programovacích jazyků. Má vliv na design jazyků vedoucích k Haskell programovací jazyk.
- V roce 1966 Corrado Böhm představil programovací jazyk CUCH (Curry-Church).[2]
- V roce 1967 Christopher Strachey vydává svůj vlivný soubor poznámek Základní pojmy v programovacích jazycích, představující terminologii Hodnoty R., Hodnoty L., parametrický polymorfismus, a ad hoc polymorfismus.
- V roce 1969 J. Roger Hindley publikuje Hlavní typové schéma objektu v kombinatorické logice, později zobecněn na Hindley – Milner odvození typu algoritmus.
- V roce 1969 Tony Hoare zavádí Logika hoare, forma axiomatická sémantika.
- V roce 1969 William Alvin Howard konstatoval, že „vysoká úroveň“ kontrolní systém, označované jako přirozený odpočet, lze přímo interpretovat v jeho intuitivní verze jako typová varianta model výpočtu známý jako lambda kalkul. Toto začalo být známé jako Curry – Howardova korespondence.
Sedmdesátá léta
- V roce 1970 Dana Scott nejprve publikuje svou práci na denotační sémantika.
- V roce 1972 logické programování a Prolog byly vyvinuty, což umožnilo vyjádřit počítačové programy jako matematickou logiku.
- Tým vědců v Xerox PARC vedené Alan Kay rozvíjet Pokec, objektově orientovaný jazyk široce známý pro své inovativní vývojové prostředí.
- V roce 1974 John C. Reynolds objevuje Systém F. Už v roce 1971 ji objevil matematický logik Jean-Yves Girard.
- Od roku 1975, Gerald Jay Sussman a Guy Steele rozvíjet Programovací jazyk schématu, Lisp dialekt začlenění lexikální obor, jednotný jmenný prostor a prvky z herec model včetně prvotřídní pokračování.
- Backus, v roce 1977 ACM Turing Award přednáška, popřela současný stav průmyslových jazyků a navrhla novou třídu programovacích jazyků nyní známou jako programování na funkční úrovni jazyky.
- V roce 1977 Gordon Plotkin zavádí Programování vypočítatelných funkcí, abstraktní typizovaný funkční jazyk.
- V roce 1978 Robin Milner zavádí Algoritmus odvození Hindley – Milnerova typu pro ML programovací jazyk. Teorie typů stal se použit jako disciplína v programovacích jazycích, tato aplikace vedla v průběhu let k obrovskému pokroku v teorii typů.
1980
- V roce 1981 Gordon Plotkin publikuje svoji práci na strukturovaná operační sémantika.
- V roce 1988 Gilles Kahn zveřejnil svůj příspěvek na přírodní sémantika.
- Objevilo se tam zpracovat kalkul, tak jako Počet komunikačních systémů z Robin Milner a Komunikace postupných procesů model C. A. R. Hoare, stejně jako podobné modely souběžnosti, jako je herec model z Carl Hewitt.
- V roce 1985, vydání Mirando vyvolává akademický zájem o líně hodnocené čisté funkční programovací jazyky. Byl vytvořen výbor, který definoval otevřený standard, jehož výsledkem bylo vydání standardu Haskell 1.0 v roce 1990.
- Bertrand Meyer vytvořil metodiku Návrh na základě smlouvy a začlenil ji do Eiffelovský programovací jazyk.
90. léta
- Gregor Kiczales, Jim Des Rivieres a Daniel G. Bobrow knihu vydal Umění protokolu Metaobject.
- Eugenio Moggi a Philip Wadler představil použití monády pro strukturování programů napsaných v funkční programovací jazyky.
Existuje několik studijních oborů, které leží buď v teorii programovacího jazyka, nebo které na ni mají zásadní vliv; mnohé z nich se značně překrývají. Kromě toho PLT využívá mnoho dalších oborů matematika, počítaje v to teorie vypočítatelnosti, teorie kategorií, a teorie množin.
Formální sémantika
Formální sémantika je formální specifikace chování počítačových programů a programovacích jazyků. Tři běžné přístupy k popisu sémantiky nebo „významu“ počítačového programu jsou denotační sémantika, operační sémantika a axiomatická sémantika.
Teorie typů
Teorie typů je studium systémy typu; které jsou „přitažlivou syntaktickou metodou pro prokázání absence určitého chování programu klasifikací frází podle druhů hodnot, které vypočítávají“.[3] Mnoho programovacích jazyků se vyznačuje vlastnostmi jejich typových systémů.
Analýza a transformace programu
Analýza programu je obecným problémem zkoumání programu a určování klíčových charakteristik (například absence tříd jazyka chyby programu ). Transformace programu je proces transformace programu v jedné formě (jazyce) do jiné formy.
Srovnávací analýza programovacího jazyka
Srovnávací analýza programovacího jazyka usiluje o klasifikaci programovacích jazyků do různých typů na základě jejich charakteristik; široké kategorie programovacích jazyků jsou často známé jako paradigmata programování.
Obecné a metaprogramování
Metaprogramování je generování programů vyššího řádu, které po spuštění produkují programy (případně v jiném jazyce nebo v podmnožině původního jazyka).
Jazyky specifické pro doménu
Jazyky specifické pro doménu jsou jazyky konstruované tak, aby efektivně řešily problémy konkrétní části domény.
Konstrukce překladače
Překladač theory is the theory of writing překladače (nebo obecněji překladatelé); programy, které překládají program napsaný v jednom jazyce do jiné formy. Akce kompilátoru jsou tradičně rozděleny do syntaktická analýza (snímání a analýza ), sémantická analýza (určení, co má program dělat), optimalizace (zlepšení výkonu programu, jak naznačuje určitá metrika; obvykle rychlost provádění) a generování kódu (generování a výstup ekvivalentního programu v nějakém cílovém jazyce; často instrukční sada CPU).
Systémy za běhu
Runtime systémy odkazuje na vývoj programovacího jazyka běhová prostředí a jejich součásti, včetně virtuální stroje, odvoz odpadu, a rozhraní cizích funkcí.
Časopisy, publikace a konference
Konference jsou primárním místem pro prezentaci výzkumu v programovacích jazycích. Mezi nejznámější konference patří Sympózium o principech programovacích jazyků (POPL), Návrh a implementace programovacího jazyka (PLDI) Mezinárodní konference o funkčním programování (ICFP), the Mezinárodní konference o objektově orientovaném programování, systémech, jazycích a aplikacích (OOPSLA) a the Mezinárodní konference o architektonické podpoře programovacích jazyků a operačních systémů (ASPLOS).
Pozoruhodné časopisy, které publikují výzkum PLT, zahrnují Transakce ACM v programovacích jazycích a systémech (TOPLAS), Journal of Functional Programming (JFP), Journal of Functional and Logic Programming, a Vyšší řád a symbolický výpočet.
Viz také
Reference
- ^ http://www.c2.com/cgi/wiki?ModelsOfComputation
- ^ C. Böhm a W. Gross (1996). Úvod do CUCH. V E. R. Caianiello (ed.), Teorie automatů, str. 35-64 /
- ^ Benjamin C. Pierce. 2002. Typy a programovací jazyky. MIT Press, Cambridge, Massachusetts, USA.
Další čtení
- Abadi, Martín a Cardelli, Luca. Teorie objektů. Springer-Verlag.
- Michael J. C. Gordon. Teorie programovacího jazyka a její implementace. Prentice Hall.
- Gunter, Carl a Mitchell, John C. (eds.). Teoretické aspekty objektově orientovaných programovacích jazyků: typy, sémantika a návrh jazyka. MIT Stiskněte.
- Harper, Robert. Praktické základy programovacích jazyků. Konceptová verze.
- Knuth, Donald E. (2003). Vybrané příspěvky v počítačových jazycích. Stanford, Kalifornie: Centrum pro studium jazyka a informací.
- Mitchell, John C.. Základy programovacích jazyků.
- Mitchell, John C.. Úvod do teorie programovacího jazyka.
- O'Hearn, Petere. W. a Tennent, Robert. D. (1997). Algolské jazyky. Pokrok v teoretické informatice. Birkhauser, Boston.
- Pierce, Benjamin C. (2002). Typy a programovací jazyky. MIT Stiskněte.
- Pierce, Benjamin C. Pokročilá témata v typech a programovacích jazycích.
- Pierce, Benjamin C. et al. (2010). Softwarové základy.
externí odkazy
- Lambda the Ultimate, komunitní weblog pro odbornou diskusi a úložiště dokumentů o teorii programovacího jazyka.
- Skvělá práce v programovacích jazycích. Sbíral Benjamin C. Pierce (University of Pennsylvania ).
- Klasické články o programovacích jazycích a logice. Sbíral Karl Crary (Univerzita Carnegie Mellon ).
- Výzkum programovacího jazyka. Adresář od Mark Leone.
- Teorie programovacích jazyků online. Na Utrechtská univerzita.
- λ-Calculus: Then & Now podle Dana S. Scott na oslavu ACM Turing Centenary
- Velké výzvy v programovacích jazycích. Zasedání panelu v POPL 2009.