ACCU Menu

Advertisement

Advertisement

Membership

Login

ACCU Buttons

Add them to your site:

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 1918 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.

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'.

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)