FOREWORD
PREFACE
1 C++
Design Decisions
Using the Language
OOP and Concurrency
Future
Teaching
2 PYTHON
The Pythonic Way
The Good Programmer
Multiple Pythons
Expedients and Experience
3 APL
Paper and Pencil
Elementary Principles
Parallelism
Legacy
4 FORTH
The Forth Language and Language Design
Hardware
Application Design
5 BASIC
The Goals Behind BASIC
Compiler Design
Language and Programming Practice
Langua~'e Design
Work Goals
6 AWK
The Life of Algorithms
Language Design
Unix and Its Culture
The Role of Documentation
Computer Science
Breeding Little Languages
Designing a New Language
Legacy Culture
Transformative Technologies
Bits Ttiat Change the Universe
Theory and Practice
Waiting for a Breakthrough
Programming by Example
7 LUA
The Power of Scripting
Experience
Language Design
8 HASKELL
A Functional Team
Trajectory of Functional Programming
The Haskell Language
Spreading (Functional) Education
Formalism and Evolution
9 ML
The Soundness of Theorems
The Theory of Meaning
Beyond Informatics
10 SQL
A Seminal Paper
The Language
Feedback and Evolution
XQuery and XML
11 OBJECTIVE-C
Eng'ineering Objective-C
Growing a Language
Education and Training
Project Management and Legacy Software
Objective-C and Other Languages
Components, Sand, and Bricks
Quality As an Economic Phenomenon
Education
12 JAVA
Power or Simplicity
A Matter of Taste
Concurrency
Designing a Languae
Feedback Loop
13 C#
Language and Design
Growing a Language
C#
The Future of Computer Science
14 UML
Learning and Teaching
The Role of the People
UML
Knowledge
Be Ready for Change
UsingUML
Layers and Languages
A Bit of Reusability
Symmetric Relationships
UML
Language Design
Training Developers
Creativity, Refinement, and Patterns
15 PERL
The Language of Revolutions
Language
Community
Evolution and Revolution
16 POSTSCRIPT
Designed to Last
Research and Education
Interfaces to Longevity
Standard Wishes
17 EIFFEL
An Inspired Afternoon
Reusability and Genericity
Proofreading Languages
Managing Growth and Evolution
AFTERWORD
CONTRIBUTORS
INDEX