BKINSATL.RVW 990923 "Inside ATL", George Shepherd/Brad King, 1999, 1-57231-858-9, U$49.99/C$74.99/UK#46.99 %A George Shepherd %A Brad King %C 1 Microsoft Way, Redmond, WA 98052-6399 %D 1999 %G 1-57231-858-9 %I Microsoft Press %O U$49.99/C$74.99/UK#46.99 800-MSPRESS www.microsoft.com/mspress %P 444 p. + CD-ROM %T "Inside ATL" Fred Brooks said that there was, and would be, no "silver bullet" for the programming task: the job is hard and that is all there is to it. This book seems to exemplify that idea, since it presents a programming aid, but demands that the reader be skilled enough not to need the assistance before full understanding of the tool can be conveyed. An introduction to ATL (Active Template Library) states that ATL is to the production of binary COM (Component Object Model) objects as MFC (Microsoft Foundation Class) is to the generation of object-oriented C++ source code. In chapter one, this explanation may mean relatively little to those who are not completely familiar with all of those technologies. The authors are, however, to be commended in their coverage and explanation of the Microsoft COM paradigm. They deal extensively with the advantages of using binary, rather than source code, objects, and the ability to use different programming languages for different parts of a project. (The initial exegesis of abstract base classes is not quite as clear.) There is not as much discussion of the disadvantages of the model, and the argument is somewhat weakened in that the book only uses C++. As the book starts to move into the details of the use of templates, it does become clear that the reader had best be well up on C++ programming. Actual programming and usage starts in chapter four, or, at least, it seems to. The material does seem to have internal contradictions, such as the insistence that it is best to avoid the AppWizards, to begin with, but then presenting an apparent reliance on the AppWizard in producing the first simple object. After this introduction, the book touches on client-side ATL, fundamentals of ATL COM objects and servers, advanced composition techniques, details of the ATL Wizards, ATL and ActiveX controls, persistence, connection points, ActiveX controls in different environments, window classes, enumerators and collections, ATL and applications, and the future directions of ATL. A good deal of humour is used in the book, and it does make a contribution to the readability. Unfortunately, the jokes included in the text do not contribute to understanding of the base material, since they relate only very peripherally to the concepts under discussion at any point, and so distract from, rather than enhancing, the learning process. ATL works with C++, so it is not unreasonable to expect some knowledge of the language for those wanting to use the templates. However, if the objective of the technology is to make programming easier, then this book makes very rigorous demands of precisely that audience who stand to benefit the most from ATL. For those who are solidly experienced in C++ and object programming, though, this book does provide a thorough explanation of the COM concept, and the use of ATL. copyright Robert M. Slade, 1999 BKINSATL.RVW 990923