Intro duction to the Literature On Programming Language Design Gary T Leavens TR c Jan revised Jan Feb and July Keywords programming languages semantics typ e systems p olymorphism typ e theory data abstrac tion functional programming ob jectoriented programming logic programming declarative programming parallel and distributed programming languages CR Categories D Programming Techniques ApplicativeFunctional Programming D Programming Techniques Concurrent Programming D Programming Techniques Ob jectoriented Pro gramming D Programming Techniques Logic Programming D Software Engineering To ols and Techniques Mo dules and interfaces D Software Engineering Program Verication D Software Engineering Program Verication D Programming Languages Formal Denitions and Theory D Programming Languages Language Classications D Programming Languages Language Constructs and F eatures F Logics and Meaning of Programs Sp ecifying and verifying and reasoning ab out pro grams F Logics and Meaning of Programs Semantics of Programming Languages F Logics and Meaning of Programs Studies of Program Constructs H Database Management LanguagesDatabase p ersistent programming languages I Articial Intel ligence Programming Languages and Software c Gary T Leavens Permission is granted for you to make copies for educational and scholarly purp oses but not for direct commercial advantage provided this notice app ears on all copies All other rights reserved Department of Computer Science Atanaso Hall Iowa State University Ames Iowa USA Intro duction to the Literature On Programming Language Design Gary T Leavens Department of Computer Science Iowa State University Ames IA USA leavenscsiastateedu July Abstract This is an intro duction to the literature on programming language design and related topics It is intended to cite the most imp ortantwork and to provide a place for students to start a literature search This is a selective introduction to the literature on programming language design The intended audience is graduate students b eginning a study of programming languages Instead of trying to b e comprehensive references are given that are to works of lasting value uptodate surveys or that seem to b e imp ortant or interesting at the moment Besides references that haveintrinsic interest a few are included b ecause they are the original sources and are likely to b e referenced by others doing related work eg Chu To prob e an area more deeply start with the pap ers mentioned follow their references and also use the Science Citation Index to see what pap ers have referenced the ones mentioned As a general aid to nding pap ers many older references are reprinted in a collection called TUTORIAL Programming Language Design edited byAIWasserman and available from the IEEE Computer So ciety Was Readers with web browsers may also wanttolookatthefollowing web page titled Programming Language and Compiler Bibliographies nelanguagebibliographieshtml httpwwwcscmuedumleo However this tends to have b etter coverage of recenttechnical rep orts and its coverage of older journal pap ers and other published material is sp otty Generalities There are several excellent undergraduate texts on programming languages including PZSeb Set FWH Hen KamWatGJ MacTen Graduate texts include SK Sta Sch WinWat Mey Gor Volume B of the Handbook of Theoretical Computer Science contains many detailed surveys relevantto formal mo dels and semantics vL Journals include a substantial coverage of programming languages include ACM Transactions on Pro gramming Languages and Systems abbreviated TOPLAS ACM Letters on Programming Languages and Systems abbreviated LOPLAS ACM SIGPLAN Notices Computer Languages Pergamon Press Journal of Pro gramming Languages Chapman and Hall Information and Computation formerly Information and Control Academic Press and Acta Informatica SpringerVerlag Applied areas such as sp ecication and This work was supp orted in part by the National Science Foundation under Grants CCR CCR and CCR Naturally these judgements are p ersonal but it is hop ed that authors of that vast bulk of pap ers that are not cited here will not take oense verication have their own journals eg IEEE Transactions on Software Engineering Science of Computer Programming Formal Aspects of Computing Other journals can b e found by scanning the bibliography Conferences devoted to topics related to programming languages include the Annual ACM Symp osium on Principles of Programming Languages POPL the ACM SIGPLAN Conference on Programming Language Design and Implementation PLDI the ACM SIGPLAN International Conference on Functional Program ming formerly called the Symp osium on LISP and Functional Programming LFP and the ACM SIGPLAN Symp osium on Principles and Practice of Parallel Programming PPOPP Conferences with a more the oretical b ent include the IEEE Annual Symp osium on Logic in Computer Science LICS Mathematical Foundations of Programming Semantics MFPS the Europ ean Symp osium on Programming ESOP the International Collo quium on Automata Languages and Programming ICALP and the International Sym p osium on Mathematical Foundations of Computer Science Conferences not sp onsored by the ACM or IEEE are often available in the SpringerVerlag series of Lecture Notes in Computer Science LNCS The ab ove list do es not include conferences devoted to software engineering eg TAPSOFT or particular metho ds eg category theory where other imp ortantwork is found Both Hoare and Wirth have written guidelines for programming language designers Hoa Wir Floyds Turing Award lecture discusses his view of programming languages as capturing paradigms of pro gramming Flo Another viewp oint is that language design should pro ceed from semantic principles Ten Baca The truism that bad programs can b e written in any programming language is describ ed as Flons Axiom in a pap er written at the height of the structured programming controversy Flo Shaw and Wulf t out that language designers can provide reasonable defaults while still giving programmers the ability p oin to change them SW The idea of the expressiveness of a language is just starting to receive satisfactory formal treatments Fel Mit Semantics Some texts that cover many dierent approaches to semantics are NN Win SK Op erational Semantics Landins SECD machine is dened in his pap er The Mechanical Evaluation of Expressions Lan see also Hendersons b o ok Hen A more systematic style of op erational semantics based on rewrite rules is found in Plotkins structural op erational semantics Plo Hen Ast Several metacircular interpreters for variants of LISP are discussed in Steele and Sussmans pap er The Art of the Interpreter SSa An excellent and more readily accessible discussion is found in Ab elson and Sussmans b o ok ASS whichusesScheme A more detailed treatmentofinterpreters is found in Kam FWH See KdRB for an approach using the CLOS metaob ject proto col More recently structuring mechanisms for semantics based on monads MogWadWadhave lead to more mo dular structuring of denitional interpreters Ste LHJ Calculus A standard reference on Churchs calculus Chu is Barendregts b o ok Bar Informal intro ductions include Gor For the typ ed calculus see GLT or Mitb The use of calculus for describing programming languages and as the inspiration for programming language design has b een investigated by Landin Lan Lan Denotational Semantics A short summary of the denotational approach to programming language semantics Sco can b e found in Tennents article The Denotational Semantics of Programming Languages Ten A survey is found in Mos Intro ductory texts include Gor All WatSch An excellent text with mathematical depth is Gun Standard works on denotational semantics are the b o oks byStoy Sto and Schmidt Sch b oth of which oer a comprehensive and mathematical treatment Schmidts b o ok Sch can b e consulted for references to denotational descriptions of real languages To read some of the most technical works one will need some familiarity with category theory Lan Gol LS the following are go o d intro ductions that emphasize semantic applications Hoa BWa ALb PieWal Gun One can use a typ ed functional programming language such as Standard ML to implement a denotational semantics Two descriptions of this are WatMA Action semantics an osho ot of denotational semantics is describ ed in Wat and more fully in Mos Axiomatic Semantics An early presentation of axiomatic semantics is Hoares pap er An Axiomatic Basis for Computer Program ming Hoa An example of the use of axiomatic semantics to dene a programming language is Hoare and Wirths axiomatic denition of Pascal HW A b o ok on axiomatic semantics slanted towards programming lan guage theory as opp osed to verication is Hesselinks monograph Hes Foundational material that may help in reading this monograph is found in DS whichgoesover notational issues as well as the underlying mathematics Avery intro ductory tutorial on verication from the software engineering p ersp ective is LGchapter eloping a pro of of a program at the same time the program is b eing develop ed has b een The idea of dev elo quently advo cated by Dijkstra and Gries Dij Gri More recent treatments in this style advocate a calculational approach Mor Coh GS See Ala for an intro duction that discusses concurrent and distributed programs A survey of program verication for imp erative programs is Cou A language designed to supp ort program verication is Euclid LGH PHL Another such lan guage is Alphard SWL Sha Algebraic Semantics
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages34 Page
-
File Size-