Vous voulez voir cette page en français ? Cliquez ici.


or
Sign in to turn on 1-Click ordering.
More Buying Choices
Have one to sell? Sell yours here
Generative Programming: Methods, Tools, and Applications
 
See larger image
 

Generative Programming: Methods, Tools, and Applications [Paperback]

Krysztof Czarnecki , Ulrich Eisenecker
3.8 out of 5 stars  See all reviews (16 customer reviews)
List Price: CDN$ 67.99
Price: CDN$ 42.83 & this item ships for FREE with Super Saver Shipping. Details
You Save: CDN$ 25.16 (37%)
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.ca. Gift-wrap available.
Only 1 left in stock--order soon (more on the way).
Want it delivered Monday, May 28? Choose One-Day Shipping at checkout.

Product Details


Product Description

Book Description

Generative programming- Breakthrough techniques for automating the creation of software systems.
Building generative models- overcoming the limitations of traditional object-oriented modeling.
Aspect-Oriented Programming, metaprogramming, next-generation code generators, and more.
Includes illustrative sample code in C, C++, and Java, and three detailed, start-to-finish case studies. Generative Programming (GP) offers the promise of moving from "one-of-a-kind" software systems to the semi-automated manufacture of wide varieties of software -- essentially, an assembly line for software systems. GPs goal is to model software system families and build software modules such that, given particular requirements specs, highly customized and optimized intermediate or end products can be constructed on demand. This is the first book to cover Generative Programming in depth. The authors, leaders in their field, introduce the two-stage GP development cycle- one stage for designing and implementing a generative domain model, and another for using the model to build concrete systems. They review key differences between generative modeling and processes used for "one-of-a-kind" systems. Next, they introduce key GP concepts such as feature models, and demonstrate "generic programming" techniques for creating components which lend themselves to easy combination and reuse. The book also introduces Aspect Oriented Programming, which allows developers to solve key recurring problems in traditional O-O development; and presents metaprogramming techniques for building powerful program generators. Three detailed case studies demonstrate the entire generative development cycle, from analysis to implementation.
Krzysztof Czarnecki is a Ph.D. candidate at the University of Ilmenau, Department of Software Engineering and Media Technology, and a researcher at the DaimlerChrysler AG Research Center in Ulm, Germany. Ulrich Eisenecker, a faculty member in Computer Science and Microsystem Engineering at the University of Applied Sciences Kaiserslautern. He was formerly a researcher at Daimler-Benz Research Center in Ulm, Germany.

From the Inside Flap

The advent of most any new programming book evokes the question: What is, or will be, the place of this book in history? That a book even evokes that question itself says something exciting, something about paradigm shifts or about new ideas or about breaking with old ways. And it is a curiously pertinent question for this book in these times.

Over the past ten years the object-oriented literature has seen a peppering of apparently unrelated ideas ranging from subject-oriented programming to components. What they all had in common is that there was something decidedly unobject-oriented about each of them, though each of them spent time in the object-oriented limelight. But in the past one or two years many of these fragments have found common ground and have rallied together around common themes: metaobject protocols, reflection, intentionality, an insightful interpretation of components, the cutting of features across structure and, in general, the breakdown of classic models of simple modularity. For me, one of the highlights of 1999 was the First International Symposium on Generative and Component-Based Software Engineering (GCSE '99) in Erfurt, Germany, where many researchers had already linked many of these ideas together and shared a consciousness about their significance. But it is just one forum where these ideas came together; one sees the same things at many conference workshops and in some of the emerging literature.

It's always difficult to assess history from within the events that contribute to it, but it is perhaps no less responsible nor dangerous to do so than to try to interpret it after the fact, distanced from the firsthand events. In that spirit, look around and consider that we might, right now, be at a crucial turning point in computer science, particularly in the area of programming and design technique. The industry has been struggling with how to move beyond the limiting confines of the object paradigm. Patterns were one noble attempt and, though they have done much good to draw attention to the value of experience and of the human element in programming, it is unlikely that computer science will ever achieve anything remotely approaching Alexander's vision or level of systems thinking. It is rare that software achieves a true paradigm shift in the Kuhnian sense. Perhaps we're a conservative bunch. And our fascination with novelty sometimes keeps us even from the simplest learnings; many of the tenets of the vernacular components movement hark back to early principles of object-oriented design that experience suggests should have been dropped after only a few years of experience.

But there are new signs of seeds of change. Perhaps the industry can't easily suffer a revolution, but it can tolerate a move to new techniques that build on the status quo. There is a strong and recurring move to find programming and design expression that go beyond objects and things to concepts and features. That is the essence of intentional programming, for example and, to a large degree, of techniques such as domain engineering. This vein of thought is blossoming in a wide range of forums across the industry. We see it in the vulgar (non-Alexanderian) pattern movement; we see it in aspect-oriented programming; we see it in the resurgence of generic programming and in techniques such as multi-paradigm design. And as conferences like OOPSLA focus less and less on the foundations of those things called objects and more and more on conceptual extensions, we start thinking less about parts and more about systems and features. And as OOPSLA shrinks, conferences like GCSE are becoming more numerous and popular. There is a broad-based move in this direction today. And this book finds itself squarely in the middle of this shift. I believe that the reader should neither underestimate the significance of this shift nor of this book's role in both communicating and shaping that shift. We are at the threshold of an evolution, and this book is one of the early normative works of this new genre.

This book perhaps reflects a degree of maturation in computer science that, for the first time, attempts to legitimize an integrative view in its own right rather than extol a technique by differentiating it from its predecessors. As such, the book covers much ground and embraces many disciplines: components, objects, aspects, reflection, intentional programming and generic programming for the technology-focussed, and domain engineering for the systems thinkers. It is a great introduction to both emerging and established techniques for those who are encountering them for the first time. An uninformed glance at this book might take it to be a compendium of existing practice, certainly in the area of domain engineering, but in the broader arena of things beyond objects as well.

Yet this book is more than a collection of techniques. The book develops strong themes around unifying principles that tie the pieces together, most notably domain engineering and metaprogramming. The authors treat the reader to a broad survey of domain engineering and guide the reader to appreciate its essence. Perhaps more than any single idea, domain engineering provides a common thread or theme that one could use to "explain" generative programming. But more than that, the authors draw on other schools of programming as building blocks that can be used to delineate gestalten that amplify each other in a broad, cogent vision called generative programming. The result is certainly more than the sum of the parts; most of the parts have been around for years, but an understanding of how to bring them together is just now emerging and receiving broad exposure.

It's crucial to understand that this book is not just some refreshing diversion nor just an exposition of some noteworthy niche techniques. It is a harbinger of a broader enlightenment that opens the door to a new age. It is the coming of age of techniques, such as reflection, metaprogramming, and aspects that could augment and even displace objects as the foundations of mainstream programming practice in the years to come.

And even if the historical analysis is wrong, it doesn't diminish the book's value. The ideas are sound and timeless. Though the book builds most heavily on the C++ legacy, the ideas should provoke thought in any partisan linguistic community and indeed in the communities for most programming ideologies.

This book is just a beginning. This book invites others to follow: those who will bring methods and processes to help the designer and programmer better master and apply generative programming, and those who will bring formalisms and unifying models that will carry this work into the next generation of research. To those researchers and practitioners who are willing to go behind the confines of objects, this book raises the bar and challenges them to carry its own ideas further. I am sure nothing would please the authors more than if you took up the challenge. The first joy of publishing a book comes for an author when holding the first copy between one's hands, almost in wonder. But the greater joy comes much later, and only vicariously, as the book visibly leaves its mark on emerging practice. Few books offer this return on the authors' investment. I am both hopeful and confident that this will be one of these books, and that is because I believe the power of these ideas will draw you in as a reader and excite you to adopt these new expressive programming and design constructs. I wish you great pleasure in learning from this book, as I did, and exhort you to seek your own place in history as a pioneer who helps take these ideas forward into our discipline through the artisanship of your own programs.

James Coplien
Naperville, Illinois
February 2000



0201309777P02212002

Tag this product

 (What's this?)
Think of a tag as a keyword or label you consider is strongly related to this product.
Tags will help all customers organize and find favorite items.
Your tags: Add your first tag
 

 

Customer Reviews

16 Reviews
5 star:
 (6)
4 star:
 (5)
3 star:
 (2)
2 star:
 (1)
1 star:
 (2)
 
 
 
 
 
Average Customer Review
3.8 out of 5 stars (16 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most helpful customer reviews

3.0 out of 5 stars Strangely boring, Jun 23 2004
By 
B. Hutchison (Australia) - See all my reviews
(REAL NAME)   
This review is from: Generative Programming: Methods, Tools, and Applications (Paperback)
I bought this book because I was looking for a language-agnostic guide to generic and aspect-oriented programming. Its scope includes these subjects in the broader topic of building software that builds software; a search for yet higher level tools and methods.

While this is undoubtedly an important area, there is something strangely boring about this books presentation of the topic. I have found it sits unread on my desk. I think it's because the book is often rather vaugue and conceptual in its discussion of the issues, and Im unable to relate the material to the practical challenges and solutions I have encountered in my day to day work in Java enterprise systems development.

The authors can be tediously verbose. Each chapter starts with a section "Why you should read this chapter" which describes the contents, then goes on to an Introduction that describes the contents again. The very need to individually justify each chapter suggests Im not the only one who has found it a lottle bit dull.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4.0 out of 5 stars An advanced work on Code Generation, Dec 13 2003
By 
Jack D. Herrington "engineer and author" (Silicon Valley, CA) - See all my reviews
(REAL NAME)   
This review is from: Generative Programming: Methods, Tools, and Applications (Paperback)
This is a solid book of the theory behind code generation. Definitely worth the look if you are interested in extending your build process with code generation or are looking at template drive programming.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4.0 out of 5 stars good book, Jan 2 2003
By A Customer
This review is from: Generative Programming: Methods, Tools, and Applications (Paperback)
This is a good book. It can be an even better one if the chapter on 'Intentional Programming' can be cut in half or more. I don't mind reading about the ideas of intentional programming, but the first half of the chapter reads like a manual for a particular software. "Click this button to compile, that button to do some other stuff..." For a theory flavored book I was surprised it included this kind of stuff.

The rest of the book is fine. It's a good survey of programming methodologies with an extensive list of literature. The discussion on generative programming and templates are inspiring. One thing to keep in mind is in a lot of places the book talks about the ideals of how programming should be, which is why it may sound silver-bulletish. But it didn't claim to have reached all those ideals. So you need to think for yourself what can be solved by using the techniques introduced in this book. Unlike some other reviewers, the academic style is ok with me. I'd rather a technical book to be a little too serious than too comical.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

Share your thoughts with other customers: Create your own review
Want to see more reviews on this item?
 Go to Amazon.com to see all 22 reviews  4.0 out of 5 stars 
 
 
Most recent customer reviews











Only search this product's reviews



Listmania!

Create a Listmania! list

Look for similar items by category


Look for similar items by subject


Feedback


Amazon.ca Privacy Statement Amazon.ca Shipping Information Amazon.ca Returns & Exchanges