ebook img

Masterminds of Programming: Conversations with the Creators of Major Programming Languages PDF

496 Pages·2009·5.52 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Masterminds of Programming: Conversations with the Creators of Major Programming Languages

Masterminds of Programming Edited by Federico Biancuzzi and Shane Warden Beijing • Cambridge • Farnham • Köln • Sebastopol • Taipei • Tokyo Masterminds of Programming Edited by Federico Biancuzzi and Shane Warden Copyright © 2009 Federico Biancuzzi and Shane Warden. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc. 1005 Gravenstein Highway North, Sebastopol, CA 95472 O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (safari.oreilly.com). For more information, contact our corporate/institutional sales department: (800)998-9938 or [email protected]. Editor: Andy Oram Proofreader: Nancy Kotary Production Editor: Rachel Monaghan Cover Designer: Monica Kamsvaag Indexer: Angela Howard Interior Designer: Marcia Friedman Printing History: March 2009: First Edition. The O’Reilly logo is a registered trademark of O’ReillyMedia, Inc.Masterminds of Programming and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 978-0-596-51517-1 [V] CO NTENTS FOREWORD vii PREFACE ix 1 C++ 1 Bjarne Stroustrup Design Decisions 2 Using the Language 6 OOP and Concurrency 9 Future 13 Teaching 16 2 PYTHON 19 Guido von Rossum The Pythonic Way 20 The Good Programmer 27 Multiple Pythons 32 Expedients and Experience 37 3 APL 43 Adin D. Falkoff Paper and Pencil 44 Elementary Principles 47 Parallelism 53 Legacy 56 4 FORTH 59 Charles D. Moore The Forth Language and Language Design 60 Hardware 67 Application Design 71 5 BASIC 79 Thomas E. Kurtz The Goals Behind BASIC 80 Compiler Design 86 Language and Programming Practice 90 Language Design 91 Work Goals 97 iii 6 AWK 101 Alfred Aho, Peter Weinberger, and Brian Kernighan The Life of Algorithms 102 Language Design 104 Unix and Its Culture 106 The Role of Documentation 111 Computer Science 114 Breeding Little Languages 116 Designing a New Language 121 Legacy Culture 129 Transformative Technologies 132 Bits That Change the Universe 137 Theory and Practice 142 Waiting for a Breakthrough 149 Programming by Example 154 7 LUA 161 Luiz Henrique de Figueiredo and Roberto Ierusalimschy The Power of Scripting 162 Experience 165 Language Design 169 8 HASKELL 177 Simon Peyton Jones, Paul Hudak, Philip Wadler, and John Hughes A Functional Team 178 Trajectory of Functional Programming 180 The Haskell Language 187 Spreading (Functional) Education 194 Formalism and Evolution 196 9 ML 203 Robin Milner The Soundness of Theorems 204 The Theory of Meaning 212 Beyond Informatics 218 10 SQL 225 Don Chamberlin A Seminal Paper 226 The Language 229 Feedback and Evolution 233 XQuery and XML 238 iv CONTENTS 11 OBJECTIVE-C 241 Brad Cox and Tom Love Engineering Objective-C 242 Growing a Language 244 Education and Training 249 Project Management and Legacy Software 251 Objective-C and Other Languages 258 Components, Sand, and Bricks 263 Quality As an Economic Phenomenon 269 Education 272 12 JAVA 277 James Gosling Power or Simplicity 278 A Matter of Taste 281 Concurrency 285 Designing a Language 287 Feedback Loop 291 13 C# 295 Anders Hejlsberg Language and Design 296 Growing a Language 302 C# 306 The Future of Computer Science 311 14 UML 317 Ivar Jacobson, James Rumbaugh, and Grady Booch Learning and Teaching 318 The Role of the People 323 UML 328 Knowledge 331 Be Ready for Change 334 Using UML 339 Layers and Languages 343 A Bit of Reusability 348 Symmetric Relationships 352 UML 356 Language Design 358 Training Developers 364 Creativity, Refinement, and Patterns 366 CONTENTS v 15 PERL 375 Larry Wall The Language of Revolutions 376 Language 380 Community 386 Evolution and Revolution 389 16 POSTSCRIPT 395 Charles Geschke and John Warnock Designed to Last 396 Research and Education 406 Interfaces to Longevity 410 Standard Wishes 414 17 EIFFEL 417 Bertrand Meyer An Inspired Afternoon 418 Reusability and Genericity 425 Proofreading Languages 429 Managing Growth and Evolution 436 AFTERWORD 441 CONTRIBUTORS 443 INDEX 459 vi CONTENTS Chapter Foreword PROGRAMMINGLANGUAGEDESIGNISAFASCINATINGTOPIC. There are so many programmers who think they can design a programming language better than one they are currently using;andtherearesomanyresearcherswhobelievetheycandesignaprogramminglan- guage better than any that are in current use. Their beliefs are often justified, but few of theirdesignseverleavethedesigner’sbottomdrawer.Youwillnotfindthemrepresented in this book. Programming language design is a serious business. Small errors in a language design can beconducivetolargeerrorsinanactualprogramwritteninthelanguage,andevensmall errors in programs can have large and extremely costly consequences. The vulnerabilities of widely used software have repeatedly allowed attack by malware to cause billions of dollars of damage to the world economy. The safety and security of programming lan- guages is a recurrent theme of this book. vii Programminglanguagedesignisanunpredictableadventure.Languagesdesignedforuni- versal application, even when supported and sponsored by vast organisations, end up sometimes in just a niche market. In contrast, languages designed for limited or local use can win a broad clientele, sometimes in environments and for applications that their designers never dreamed of. This book concentrates on languages of the latter kind. Thesesuccessfullanguagesshareasignificantcharacteristic:eachofthemisthebrainchild of a single person or a small team of like-minded enthusiasts. Their designers are master- minds of programming; they have the experience, the vision, the energy, the persistence, andthesheergeniustodrivethelanguagethroughitsinitialimplementation,throughits evolution in the light of experience, and through its standardisation by usage (de facto) and by committee (de jure). In this book the reader will meet this collection of masterminds in person. Each of them hasgrantedanextendedinterview,tellingthestoryofhislanguageandthefactorsthatlie behind its success. The combined role of good decisions and good luck is frankly acknowl- edged. And finally, the publication of the actual words spoken in the interview gives an insight into the personality and motivations of the designer, which is as fascinating as the language design itself. —Sir Tony Hoare SirTonyHoare,winnerofanACMTuringAwardandaKyotoAward,hasbeenaleaderinresearch into computing algorithms and programming languages for 50 years. His first academic paper, writ- tenin1969,exploredtheideaofprovingthecorrectnessofprograms,andsuggestedthatagoalofpro- gramming language design was to make it easier to write correct programs. He is delighted to see the idea spread gradually among programming language designers. viii FOREWORD

Description:
Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. In this unique collection, you'll learn about the processes that led to specific design decisions, including the goals they had in mind, the trade-offs they ha
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.