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