Table of Contents


About the Authors

Ken Arnold

Ken Arnold is a leading expert in object-oriented design and implementation, and has written extensively on C and C++ topics for UNIX Review. He is the co-author of A C User’s Guide to ANSI C. He is also the co-author, with James Gosling, of The Java Programming Language, part of the official Sun series of books on the Java language, packages, and environment. Ken is a senior staff engineer with Sun Microsystems, previously in Sun Labs, and now in JavaSoft. His is currently part of the team using the JavaSoft Remote Messaging Interface (RMI) to write distributed Java applications. Before coming to Sun, Ken’s experience includes being part of the original Hewlett-Packard architectural team designing CORBA, several user interface and UNIX projects at Apollo Computers, and molecular graphics at UC-San Francisco. In the olden days, he was part of the 4BSD team at UC-Berkeley, where he created the curses library package for terminal-independent screen-oriented programs, and was co-author, with Mike Toy and Glen Wichman, of the computer game Rogue. He received his A.B. in computer science from UC-Berkeley in 1985.

Timothy A. Budd

Timothy A. Budd is an associate professor of computer science at Oregon State University. His major areas of interest include programming language design and implementation and the combination of multiple language paradigms. He is the author of several books on programming languages, including A Little Smalltalk, Introduction to Object-Oriented Programming, APL Compiler, and Multi-Paradigm Programming in Leda.

Michael B. Feldman

Michael B. Feldman received a B.S.E. in electrical engineering in 1966 from Princeton University, and M.S. and Ph.D. degrees in computer and information sciences from University of Pennsylvania in 1970 and 1973, respectively.

Dr. Feldman’s interest in computer software was kindled by a junior-level course in which Fortran was used for solving numerical engineering problems. Dr. Feldman was back in Princeton from 1970 to 1974, employed as a computer scientist by Educational Testing Service. He then spent a year in Europe, as staff consultant to the managing director of Samsom Automatisering, a data-processing company in the Netherlands.

In 1975, Dr. Feldman joined the Department of Electrical Engineering and Computer Science at The George Washington University, where he now holds the rank of full professor. He is responsible for the CS majors-oriented introductory programming course, the undergraduate data structures and file structures courses, and a graduate course in concurrent programming. He received the Eta Kappa Nu Teacher of the Year Award in 1985.

He is the author of a number of popular textbooks. The most recent, Ada 95 Problem Solving and Program Design (Addison-Wesley, 1996) and Software Construction and Data Structures (Addison-Wesley, 1996) are best-sellers in their respective markets in the United States and abroad.

He and his students have developed educational software development environments with special features for studying Ada tasking. These systems, known as GW-Ada/Ed-DOS and GW-Ada/Ed-Mac, are available free on the Internet and are currently in use in hundreds of academic, government, and industrial sites around the world. More recently, the group has been responsible for a packaged version of the GNU Ada 95 (GNAT) compiler. Commonly referred to as ez2load, this distribution has been copied thousands of times from a number of Internet servers.

David Flanagan

David Flanagan is a consulting computer programmer, user interface designer, and trainer. He has a degree in computer science and engineering from Massachusetts Institute of Technology. David has written many books, including Java in a Nutshell: A Desktop Quick Reference, JavaScript: The Definitive Guide, X Toolkit Intrinsics Reference Manual, and Motif Tools: Streamlined GUI Design and Programming with the Xmt Library.

Adele Goldberg

Adele Goldberg is a founder of Neometron, Inc., a Texas-based company working toward Intranet-based dynamic knowledge management. She is also leading the development of LearningWorks, a freely available system for creating and delivering curriculum about software construction. She was a founder of ParcPlace Systems, Inc. (which created application development environments based on object-oriented technology that were sold to corporate development teams) and served variously as the company’s CEO until 1991 and chairman of the board until April 1996. Dr. Goldberg received a Ph.D. in information science from the University of Chicago and spent 14 years as researcher and laboratory manager at the Xerox Palo Alto Research Center. From 1984 to 1986, Adele served as president of the ACM, having previously served as national secretary and editor-in-chief of Computing Surveys. Solely and with others, Dr. Goldberg wrote the definitive books on the Smalltalk-80 programming system and has authored numerous papers on project management and analysis methodology using object-oriented technology. She edited The History of Personal Workstations, published jointly by the ACM and Addison-Wesley in 1988 as part of the ACM Press Book Series on the History of Computing, which she organized; she also co-edited Visual Object-Oriented Programming with Margaret Burnett and Ted Lewis. Her latest book, with Kenneth S. Rubin, is on software engineering and is titled Succeeding with Objects: Decision Frameworks for Project Management.

Dr. Goldberg received the ACM Systems Software Award in 1987 along with Dan Ingalls and Alan Kay, as well as PC Magazine’s 1990 Lifetime Achievement Award for her significant contributions to the personal computer industry. She is a Fellow of the ACM, and was honored in 1995 with the Reed College Howard Vollum Award for contributions to science and technology. She is currently a member of the scientific advisory board of the German National Research Centers, is a director of The San Francisco Exploratorium, and is on the board of directors of two private technology companies.

James Gosling

James Gosling is a fellow and vice president at Sun Microsystems and the key architect of the Java programming language. Gosling received a Ph.D. from Carnegie Mellon University. After developing the initial versions of the Andrew toolkit at Carnegie Mellon, he joined Sun Microsystems in 1984, where he has worked on window systems, user interfaces, toolkits, and general system architecture. His research interests include both the intersection of computer science and graphics, and the design of user interfaces. He wrote an early version of Emacs and was the principal developer of NeWS, Sun’s network-extensible windowing system. He was the 1996 recipient of Software Development’s Programming Excellence Award.

Bill Joy

Bill Joy received his master’s degree in electrical engineering from the University of California at Berkeley, where he was the principal designer of Berkeley UNIX. He wrote both ex and vi. He was one of the founders of Sun Microsystems and is now Sun’s vice president of research and development. He designed Sun’s Network File System (NFS), and worked on Sun’s Scalable RISC Processor (SPARC). Joy received the ACM’s Grace Murray Hopper Award in 1986 and the USENIX Association’s Lifetime Achievement Award in 1993.

Andrew Koenig

Andrew Koenig is a member of the Large-Scale Programming Research Department at AT&T Research, which was once part of Bell Laboratories. He has been working mostly on C++ since 1986.

He joined Bell Labs in 1977 from Columbia University (New York). Aside from C++, his work has included programming language design and implementation, security, automatic software distribution, online transaction processing, and computer chess. He is the author of more than 100 articles and the book C Traps and Pitfalls, and coauthor of the book Ruminations on C++. He has taught courses at Columbia and Princeton Universities and Stevens Institute of Technology, given tutorials for USENIX Association, Stanford University, Boston University, Lund Institute of Technology, SIGS Conferences, the Federal Open Systems Conference Board, and the Federal Reserve Bank, and given invited talks for IBM, Syracuse University, ACM, IEEE, Miller-Freeman, and AT&T in Tokyo. He is the project editor of the ISO/ANSI C++ committee and a member of five airline frequent flyer clubs.

Bertrand Meyer

Bertrand Meyer is president of Interactive Software Engineering. He was the initial designer of the Eiffel method and language and has continued to participate in its evolution. He also directed the development of the ISE Eiffel environment, compiler, tools, and libraries through their successive versions. Some of his other activities include chairman of the TOOLS conference series, editor of Prentice Hall’s Object-Oriented series, co-editor of the magazine L’OBJET, consulting editor of Addison-Wesley’s Eiffel in Practice series, and associate member of the Applications Council of the French Academy of Sciences (CADAS). He is also active as a consultant (object-oriented system design, architectural reviews, technology assessment), trainer in object technology and other software topics, and conference speaker.

Farshad Nayeri

Farshad Nayeri is the director of product development at Critical Mass, Inc. (http://www.cmass.com ), where he leads the development of systems programming language products for Modula-3 and Java. Before Critical Mass, he was a senior member of the technical staff at GTE Laboratories, where he conducted research in distributed object technology. Farshad has been a happy Modula-3 user since 1989.

Jonathan and Victoria Pletzke

Jonathan and Victoria Pletzke have been consulting on Smalltalk projects for a number of years and met on one such project. Jonathan wrote Advanced Smalltalk (with lots of help, of course) for people learning Smalltalk who wanted to learn more than just the basics. The Pletzkes’ interests include graphical user interfaces (GUIs), objects, hardware interfaces, product creation, and peaceful coexistence. They live and work in Morristown, New Jersey, and can be reached at The Technical Expertise Corporation or via email at jpletzke@sprynet.com or 72603.563@compuserve.com.

Douglas C. Schmidt

Douglas C. Schmidt is an assistant professor in the Department of Computer Science and in the Department of Radiology at Washington University in St. Louis. His research focuses on design patterns, implementation, and experimental analysis of object-oriented techniques that facilitate the development of high-performance, real-time distributed object computing systems on parallel processing platforms running over high-speed ATM networks. Dr. Schmidt is an internationally recognized expert on distributed object computing and has published widely in top IEEE, ACM, IFIP, and USENIX technical conferences and journals.

Dr. Schmidt has served as guest editor for feature topic issues on distributed object computing for the IEEE Communications Magazine and the USENIX Computing Systems Journal, and served as co-guest editor for the Communications of the ACM special issue on design patterns and the special issue on object-oriented frameworks. In addition, he has co-edited the book Pattern Languages of Program Design with James O. Coplien of Lucent Bell Labs and is co-editing another book on object-oriented application frameworks with Ralph E. Johnson and Mohamed Fayad. Dr. Schmidt has also served as the editor-in-chief of the C++ Report magazine. He is currently editing the Patterns++ section of C++ Report, where he co-authors a column on distributed object computing with Steve Vinoski, senior architect for U.S. product development of IONA Technologies’ Orbix object request broker. Dr. Schmidt is writing a book for Addison-Wesley on the topic of distributed object programming for a series edited by Brian Kernighan.

Dr. Schmidt served as the program chair for the 1996 USENIX Conference on Object-Oriented Technologies and Systems (COOTS) and the 1996 Pattern Languages of Programming conference. He has presented keynote addresses and tutorials on reusable design patterns, concurrent object-oriented network programming, and distributed object systems at many conferences including OOPSLA, the USENIX general technical conference, USENIX COOTS, ECOOP, IEEE Local Computer Networks, ACM PODC, IEEE ICNP, IEEE GLOBECOM, Object Expo, Component Users Conference, and C++ World.

In addition to his academic research, Dr. Schmidt has over a decade of experience building object-oriented communication systems. He is the chief architect and developer of the ADAPTIVE Communication Environment (ACE). Dr. Schmidt has successfully used ACE on large-scale projects at Ericsson, Siemens, Motorola, Kodak, Lucent, Lockheed Martin, Boeing, and SAIC. He and the members of his distributed object computing research group are currently using ACE to develop a high-performance, real-time CORBA ORB endsystem called TAO (The ACE ORB). TAO is the first real-time ORB endsystem to support end-to-end quality of service guarantees over ATM networks.

Dr. Schmidt received B.S. and M.A. degrees in sociology from the College of William and Mary in Williamsburg, Virginia, and an M.S. and a Ph.D. in computer science from the University of California, Irvine in 1984, 1986, 1990, and 1994, respectively.

Guy L. Steele, Jr.

Guy L. Steele, Jr., was the co-author of Scheme and has co-authored works on C and Lisp. Steele received the ACM’s Grace Murray Hopper Award in 1988 and was named an ACM Fellow in 1994. He received his B.A. in applied mathematics from Harvard College in 1975 and his M.S. and Ph.D. in computer science and artificial intelligence in 1977 and 1980, respectively, from Massachusetts Institute of Technology. He currently is a senior scientist at Thinking Machines Corporation, where he is responsible for the design and implementation of parallel programming languages and other systems software for the Connection Machine computer system.

Bjarne Stroustrup

Bjarne Stroustrup was born in Aarhus, Denmark, in 1950. He received a Cand.Scient. (mathematics and computer science) in 1975 from University of Aarhus, Denmark, and a Ph.D. (computer science) in 1979 from Cambridge University, England.

Stroustrup is the designer and original implementor of C++ and the author of The C++ Programming Language and The Design and Evolution of C++. His research interests include distributed systems, operating systems, simulation, design, and programming.

Dr. Stroustrup is the head of AT&T Labs’s Large-Scale Programming Research Department, he is an AT&T Bell Laboratories fellow, and he is an AT&T fellow. He is actively involved in the ANSI/ISO standardization of C++. He was the recipient of the 1993 ACM Grace Murray Hopper award and is an ACM fellow.

His non-research interests include general history, light literature, photography, hiking and running, travel, and music. He lives in Watchung, New Jersey, with his wife, daughter, and son.

Allen Wirfs-Brock

Allen Wirfs-Brock has been a leader in the industrialization and commercialization of Smalltalk since 1980. He was the architect of the Tektronix 4404 Smalltalk system, the first widely used Smalltalk-80 implementation. He founded Instantiations Inc., he was vice president of technology for Digitalk Inc., and he was chief scientist at ParcPlace-Digitalk. He has been an active participant in the X3J20 Smalltalk standardization effort since its inception and chairs its language specification subcommittee.

About the Series Editor

Peter H. Salus

Peter H. Salus is the author of A Quarter Century of UNIX (1994) and Casting the Net: From ARPANET to Internet and Beyond (1995). He is an internationally recognized expert and has been the keynote speaker at Uniforum Canada, the UKUUG, the NLUUG, and the OTA (Belgium) in the past few years. He has been executive director of the USENIX Association and of the Sun User Group and vice president of the Free Software Foundation. He was the managing editor of Computing Systems (MIT Press) from 1987 to 1996. He writes on a variety of computing topics in a number of magazines. His Ph.D. in linguistics (New York University, 1963) has led him from natural languages to computer languages.

Trademark Acknowledgments

All terms mentioned in this book that are known to be trademarks or service marks have been appropriately capitalized. Macmillan Technical Publishing cannot attest to the accuracy of this information. Use of a term in this book should not be regarded as affecting the validity of any trademark or service mark.

Dedication

This Handbook is dedicated to John Backus, James Gosling, Adele Goldberg, Ralph Griswold, Brian Kernighan, John McCarthy, Bertrand Meyer, Dennis Ritchie, Bjarne Stroustrup, and the memory of Joe Ossanna, without whose efforts most of these languages wouldn’t exist.

Acknowledgments

Many individuals deserve mention where this enormous Handbook is concerned. First of all, Tom Stone, who abetted my thinking and then effected a contract prior to deserting me for another publisher; next, Jim LeValley and Don Fowley at Macmillan, for being willing to take a chance on this project. I’d also like to thank Linda Engelman, Tracy Hughes, Amy Lewis, Jane Brownlow, Karen Wachs, and Kitty Jarrett at Macmillan.

In addition to the many authors, I’d like to thank Lou Katz, Stuart McRobert, Len Tower, and Brent Welch for their advice, patience, and friendship.

My gratitude to the ACM, to Addison-Wesley Longman, to MIT Press, to O’Reilly & Associates, and to the Waite Group for permissions to reprint various materials is enormous.

The errors and omissions are mine.


Table of Contents