ACCU Home page ACCU Conference Page
Search Contact us ACCU at Flickr ACCU at GitHib ACCU at Facebook ACCU at Linked-in ACCU at Twitter Skip Navigation

Search in Book Reviews

The ACCU passes on review copies of computer books to its members for them to review. The result is a large, high quality collection of book reviews by programmers, for programmers. Currently there are 1949 reviews in the database and more every month.
Search is a simple string search in either book title or book author. The full text search is a search of the text of the review.
    View all alphabetically
Generative Programming
Krzysztof Czarnecki&Ulrich Eisenecker
0 201 30977 7
Francis Glassborow
engineering; object oriented; advanced c++
Appeared in:
Ulrich Eisenecker is well known to some ACCU members because he was our German representative for much of the 1990s. Indeed, it was the pressures of writing this book that largely led to his handing that job on. The other author is less well known though his experience and academic qualifications include study and work in the USA.

You might be concerned that neither author is a native English speaker, though I suspect that Czarnecki honed his English writing skills during his time in the USA. I can assure you that you need have no worries here. The book is written in clear and readable English, even if the word order is sometimes not that which a native English speaker would have used. There is very little if any influence from the German that both authors would use naturally.

I have no doubt that some readers will want to pick on flaws in this book (and this reviewer is sometimes accused of being overly influenced by the faults in a text). Doing so would be equivalent to picking on the quality of the C++ in the GoF'sDesign Patterns. It would entirely miss the point. This is not a book on the fine detail of expert C++ and should not be judged as such. The authors set out a far broader canvas, and in doing so have produced a book that should have a major influence on the future of software engineering. If you believe that you are a professional programmer (or, if you must, a software engineer) you should take the time to study (note that word) this book and grasp the grand design.

There is a Zen injunction 'by all means analyse but remember that the whole is greater than the sum of the parts.' In this case the whole is much greater than the sum.

In this book you will find chapters on a wide range of issues. It starts with a short chapter telling the reader what generative programming is (if you think it is just another form of generic programming, you would be completely mistaken). The rest of the book is in three main parts before it finishes with a substantial set of appendices.

The first part is titled 'Analysis and Design Methods and Techniques'. It starts with chapter 2 on Domain Engineering and concludes four chapters later with chapter 5 on the process of Generative Programming.

The second part, 'Implementation Technologies' ranges from chapter 6, 'Generic Programming' to chapter 8, 'Aspect-Oriented Programming' and eventually to chapter 11, 'Intentional Programming'.

Part 3, 'Application Examples' is composed of three chapters: 'List Container', 'Bank Account' and 'Generative Matrix Computations Library'.

Every chapter, after the first, starts with a section entitled 'Why Is This Chapter Worth Reading?' In a sense chapter 1 might have been titled 'Why Is This Book Worth Reading?' except that in all cases I would wish to replace 'Reading' with 'Studying'. This is not a book for those seeking instant gratification or enlightenment, it is a book for those that want to improve their software development skills and understanding.

James Coplien (one of the founders of the Pattern Movement, and author of such books asAdvanced C++ Programming Styles and IdiomsandMulti-Paradigm Design for C++) believes in the importance of Generative Programming and the significance of this book. I am certain that history will prove him right.

Before concluding this review let me quote a single sentence from the first page of chapter 1: Generative Programming is about manufacturing software products out of components in an automated way, that is, the way other industries have been producing mechanical, electronic and other goods for decades.

That claim may seem to have a familiar ring to it. You may have grave reservations on whether it can deliver on this promise. However, you owe it to yourself, to your employers and to your customers and clients, to read this book, to study it and to try to grasp the gestalt, the book as a whole. Despite the outstanding quality of the writing, this will be no easy task. None the less, if you have pride in your professionalism and your personal development as a software developer it is a challenge you should accept. You should then prepare to share your insights and understandings with others (perhaps through the pages of Overload)