<XML><RECORDS><RECORD><REFERENCE_TYPE>1</REFERENCE_TYPE><REFNUM>7349</REFNUM><AUTHORS><AUTHOR>Watt,D.A.</AUTHOR></AUTHORS><YEAR>2004</YEAR><TITLE>Programming Language Design Concepts</TITLE><PLACE_PUBLISHED> </PLACE_PUBLISHED><PUBLISHER>Wiley</PUBLISHER><PAGES>1-480</PAGES><ISBN>0-470-85320-4</ISBN><LABEL>Watt:2004:7349</LABEL><KEYWORDS><KEYWORD>imperative programming</KEYWORD></KEYWORDS<ABSTRACT>This book consists of five parts. Part I introduces the book with an overview of programming linguistics and a brief history of programming and scripting languages. Part II explains the basic concepts that underlie almost all programming languages: values and types, variables and storage, bindings and scope, procedures and parameters. Part III examines some more advanced concepts: data abstraction (packages, abstract types, and classes), generic abstraction (or templates), type systems (inclusion polymorphism, parametric polymorphism, overloading, and type conversions), sequencers (including exceptions), and concurrency (primitives, conditional critical regions, monitors, and rendezvous). Part IV surveys the most important programming paradigms, comparing and contrasting the long-established paradigm of imperative programming with the increasingly important paradigms of object-oriented and concurrent programming, the more specialized paradigms of functional and logic programming, and the paradigm of scripting. Each chapter in Part IV identifies the key concepts of the subject paradigm, and presents an overview of one or more major languages, showing how concepts were selected and combined when the language was designed. Several designs and implementations of a simple spellchecker are presented to illustrate the pragmatics of programming in all of the major languages. Part V concludes the book by looking at two issues: how to select a suitable language for a software development project, and how to design a new language. </ABSTRACT></RECORD></RECORDS></XML>