Taligent’s Guide to Designing Programs
David Goldsmith (1994, PDF, via Hacker News):
If you browse the computer section of any technical bookstore, you’ll find many good books offering advice on how to do object-oriented design—books dealing both with general design principles and with design principles specific to C++. Why then does the industry need another book, one targeted not only to a specific language (C++), but to a specific system?
My experience has been that object-oriented design is best learned from using it to actually build systems. The style guidelines and design rules in Taligent’s Guide to Designing Programs come from years of that kind of experience, building large object-oriented C++ systems in the Taligent@ environment. If you plan to develop for Taligent environments, this book will provide you with an understanding of the philosophy underlying Taligent’s designs, and the way in which to fit your own work into Taligent’s environments. If your interest is simply in object-oriented design and C++, then my hope is that this book will benefit you by showing the experiences of one company.
This book grew from an internal style guide I wrote, which Taligent uses to develop its products, to train engineers, and to orient Taligent early developers to the Taligent system. These guidelines, like most, are based partly on empirical heuristics, and partly on principles. Although the focus has always been specifically on the writing of Taligent software, much of what we have learned is applicable riot only to Taligent, but to any C++ system.
Goldsmith worked at Taligent after leading the MacApp framework. Taligent the operating system was a failure, and Erich Ringewald left Pink to design BeOS, but many of the pieces of Taligent live on:
Fairly quickly, the management of IBM and Taligent came to a realization: Java was missing international support. But Taligent had great international technology, talented engineers--including Dr. Mark Davis, president of the Unicode Consortium--and a location about 100 meters from Sun’s JavaSoft division in Cupertino, California. Thus, a partnership was born: IBM arranged for Taligent’s Text and International group to contribute international classes to Sun’s Java Development Kit, making Java powerful enough for real-world business applications.
For JDK 1.1, Taligent provided the new java.text package, plus a number of new classes in java.util. This included Format and all its subclasses for formatting dates, times, numbers and messages; Collator, for language-sensitive string sorting; and BreakIterator, for determining line, word, and sentence boundaries in Unicode text. In java.util, Taligent contributed parts of ResourceBundle, as well as the Calendar and TimeZone classes (which provide flexible, international-friendly date and time support). In addition, IBM contributed a large collection of locale data from their National Language Technical Center in Toronto.
This was then ported to C++ and became the ICU project.