Search Free eBooks

Advanced Programming Language Design

Advanced Programming Language Design

This ebook stems in part from courses taught at the University of Kentucky and at the University of Wisconsin–Madison on programming language de- sign. There are many good books that deal with the subject at an undergrad- uate level, but there are few that are suitable for a one-semester graduate- level course. This book is my attempt to fill that gap.

The goal of this course, and hence of this book, is to expose first-year grad- uate students to a wide range of programming language paradigms and is- sues, so that they can understand the literature on programming languages and even conduct research in this field. It should improve the students’ ap- preciation of the art of designing programming languages and, to a limited degree, their skill in programming.

This pdf book does not focus on any one language, or even on a few languages; it mentions, at least in passing, over seventy languages, including well- known ones (Algol, Pascal, C, C++, LISP, Ada, FORTRAN), important but less known ones (ML, SR, Modula-3, SNOBOL), significant research languages (CLU, Alphard, Linda), and little-known languages with important concepts .. (Io, Godel). Several languages are discussed in some depth, primarily to rein- force particular programming paradigms. ML and LISP demonstrate func- tional programming, Smalltalk and C++ demonstrate object-oriented programming, and Prolog demonstrates logic programming.

The purpose of this book is to study the principles and innovations found in modern programming languages. We will consider a wide variety of lan- guages. The goal is not to become proficient in any of these languages, but to learn what contributions each has made to the “state of the art” in language design.

I will discuss various programming paradigms in this book. Some lan- guages (such as Ada, Pascal, Modula-2) are imperative; they use variables, assignments, and iteration. For imperative languages, I will dwell on such is- sues as flow of control (Chapter 2) and data types (Chapter 3). Other lan- guages (for example, LISP and FP) are functional; they have no variables, assignments, or iteration, but model program execution as expression evalua- tion. I discuss functional languages in Chapter 4. Other languages (for ex- ample, Smalltalk and C++), represent the object-oriented paradigm, in which data types are generalized to collections of data and associated rou- tines (Chapter 5). Dataflow languages (Val, Sisal, and Post, Chapter 6) at- tempt to gain speed by simultaneous execution of independent computations; they require special computer architectures. A more common way to gain speed is by concurrent programming (typified by languages such as SR and Lynx, discussed in Chapter 7). Another major paradigm constitutes the .. declarative languages such as Prolog and Godel (Chapter 8); they view pro- gramming as stating what is wanted and not necessarily how to compute it. Aggregate languages (Chapter 9) form a a final loosely knit paradigm that includes languages with special-purpose data formats, such as strings (SNOBOL and Icon), arrays (APL), databases (dBASE and SQL), and mathe- matical formulas (Mathematica and Maple).

Read book online on Google Docs Advanced Programming Language Design

No comments:

Post a Comment