Join Amazon Prime and ship Two-Day for free and Overnight for $3.99. Already a member? Sign in.

 

or
Sign in to turn on 1-Click ordering.
 
 
More Buying Choices
44 used & new from $23.61

Have one to sell? Sell yours here
 
   
Generative Programming: Methods, Tools, and Applications
 
 
Tell the Publisher!
I’d like to read this book on Kindle

Don’t have a Kindle? Get yours here.
 
  

Generative Programming: Methods, Tools, and Applications (Paperback)

by Krysztof Czarnecki (Author), Ulrich Eisenecker (Author)
3.9 out of 5 stars See all reviews (21 customer reviews)

List Price: $64.99
Price: $53.60 & this item ships for FREE with Super Saver Shipping. Details
You Save: $11.39 (18%)
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.

Want it delivered Tuesday, July 14? Choose One-Day Shipping at checkout. Details
18 new from $41.84 26 used from $23.61

Frequently Bought Together

Customers buy this book with Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools by Jack Greenfield

Generative Programming: Methods, Tools, and Applications + Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools

Customers Who Bought This Item Also Bought

Multi-Paradigm Design for C++

Multi-Paradigm Design for C++

by James O. Coplien
3.5 out of 5 stars (13)  $35.99
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)

C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)

by David Abrahams
3.7 out of 5 stars (11)  $45.46
Model-Driven Software Development: Technology, Engineering, Management

Model-Driven Software Development: Technology, Engineering, Management

by Thomas Stahl
5.0 out of 5 stars (1)  $72.00
Domain-Specific Modeling: Enabling Full Code Generation

Domain-Specific Modeling: Enabling Full Code Generation

by Steven Kelly
5.0 out of 5 stars (1)  $81.45
Software Product Lines in Action: The Best Industrial Practice in Product Line Engineering

Software Product Lines in Action: The Best Industrial Practice in Product Line Engineering

by Frank J. van der Linden
$59.96
Explore similar items

Editorial Reviews

Product Description
The authors present a grand tour of Generative Programming that is bound to become a classic. They . . . focus on the generally unappreciated connection between Domain Specific Languages and Generative Programming as a motivation for future development. Their wide-ranging and practical methods for Domain Analysis and Domain Engineering describe the first steps that developers can take right now . . . and are valuable both when existing systems are used or in preparation for emerging new generative technologies." --Charles Simonyi, Chief Architect at Microsoft Research and the inventor of Intentional Programming "The book develops strong themes around unifying principles that tie the pieces together, most notably domain engineering and metaprogramming. It is 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." --From the Foreword by James Coplien, a Distinguished Member of Technical Staff at Lucent Technologies, Bell Laboratories

Generative Programming (GP) offers great promise to application developers. It makes the idea of moving from one-of-a-kind software systems to the semi-automated manufacture of wide varieties of software quite real. In short, GP is about recognizing the benefits of automation in software development. Generative Programming covers methods and tools that will help you design and implement the right components for a system family and automate component assembly. The methods presented here are applicable for all commercial development--from "programming in the small," at the level of classes and procedures--to "programming in the large," or developing families of large systems.

Generative Programming is your complete guide and reference to this emerging discipline. It provides in-depth treatment of critical technologies and topics including: Domain Engineering Feature Modeling Generic Programming Aspect-Oriented Programming Template Metaprogramming in C++ Generators Microsoft's Intentional Programming Using this book you will learn how these techniques fit together and, more importantly, how to apply them in practice. The text contains three comprehensive case studies in three different domains: programming domain (container data structures), business domain (banking), and scientific computing (matrix computations).

From the Back Cover
"The authors present a grand tour of Generative Programming that is bound to become a classic. They . . . focus on the generally unappreciated connection between Domain Specific Languages and Generative Programming as a motivation for future development. Their wide-ranging and practical methods for Domain Analysis and Domain Engineering describe the first steps that developers can take right now . . . and are valuable both when existing systems are used or in preparation for emerging new generative technologies."
--Charles Simonyi, Chief Architect at Microsoft Research and the inventor of Intentional Programming

"The book develops strong themes around unifying principles that tie the pieces together, most notably domain engineering and metaprogramming. ItIs 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."
--From the Foreword by James Coplien, a Distinguished Member of Technical Staff at Lucent TechnologiesI Bell Laboratories

Generative Programming (GP) offers great promise to application developers. It makes the idea of moving from Ione of a kindO software systems to the semi-automated manufacture of wide varieties of software quite real. In short, GP is about recognizing the benefits of automation in software development. Generative Programming covers methods and tools that will help you design and implement the IrightO components for a system family and automate component assembly. The methods presented here are applicable for all commercial development--from "programming in the small," at the level of classes and procedures--to "programming in the large," or developing families of large systems.

Generative Programming is your complete guide and reference to this emerging discipline. It provides in-depth treatment of critical technologies and topics including:
  • Domain Engineering
  • Feature Modeling
  • Generic Programming
  • Aspect-Oriented Programming
  • Template Metaprogramming in C++
  • Generators
  • Microsoft's Intentional Programming

Using this book you will learn how these techniques fit together and, more importantly, how to apply them in practice. The text contains three comprehensive case studies in three different domains: programming domain (container data structures), business domain (banking), and scientific computing (matrix computations).



0201309777B04062001

See all Editorial Reviews

Product Details

  • Paperback: 864 pages
  • Publisher: Addison-Wesley Professional (June 16, 2000)
  • Language: English
  • ISBN-10: 0201309777
  • ISBN-13: 978-0201309775
  • Product Dimensions: 9.3 x 7.5 x 1.8 inches
  • Shipping Weight: 3.2 pounds (View shipping rates and policies)
  • Average Customer Review: 3.9 out of 5 stars See all reviews (21 customer reviews)
  • Amazon.com Sales Rank: #676,818 in Books (See Bestsellers in Books)

Look Inside This Book


What Do Customers Ultimately Buy After Viewing This Item?

Generative Programming: Methods, Tools, and Applications
56% buy the item featured on this page:
Generative Programming: Methods, Tools, and Applications 3.9 out of 5 stars (21)
$53.60
Code Generation in Action
25% buy
Code Generation in Action 4.1 out of 5 stars (21)
$34.16
Head First Design Patterns
8% buy
Head First Design Patterns 4.6 out of 5 stars (275)
$29.67
Software Language Engineering: Creating Domain-Specific Languages Using Metamodels
6% buy
Software Language Engineering: Creating Domain-Specific Languages Using Metamodels 3.0 out of 5 stars (2)
$31.19

Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
Check the boxes next to the tags you consider relevant or enter your own tags in the field below.
(1)

Your tags: Add your first tag
 
Help others find this product — tag it for Amazon search
No one has tagged this product for Amazon search yet. Why not be the first to suggest a search for which it should appear?

Sell a Digital Version of This Book in the Kindle Store

If you are a publisher or author and hold the digital rights to a book, you can sell a digital version of it in our Kindle Store. Learn more

 

Customer Reviews

21 Reviews
5 star:
 (7)
4 star:
 (8)
3 star:
 (4)
2 star:
 (1)
1 star:
 (1)
 
 
 
 
 
Average Customer Review
3.9 out of 5 stars (21 customer reviews)
 
 
 
 
Share your thoughts with other customers:
Most Helpful Customer Reviews

 
94 of 95 people found the following review helpful:
5.0 out of 5 stars 5 Stars with caveats......., October 10, 2000
Its hard to tell from the title of this book who will benefit from reading it but from a practical standpoint, C++ library designers and those with an interest in the "bleeding edge" of software engineering should find it very enlightening. The primary focus of this book is speeding up the lifecycle of program design by utilizing "Generative Programming". GP is a fancy name for programming using domain specific notations and generating highly optimized code without burdening the application programmer with low level details of domain libraries.

Chapter 1 "What is this book about?" - The authors describe GP. Short and sweet.....

Chapter 2 "Domain Engineering" - A rather dry, pedantic review of current Domain Engineering methods. This chapter reads like a PHD lit review. Boring....

Chapter 3 "Domain Engineering and OO Analysis and Design" - Why OO Analysis isn't appropriate for designing reusable libraries and analysis methods that are more suitable for the task. Quick and painless....

Chapter 4 "Feature Modeling" - One of the high points of the book. For those of you who have been stymied by the inflexibility of UML, the authors introduce the technique of "feature diagrams" which allow library designers to defer decisions like inheritance vs. aggregation until later in the design. Potentially very useful.

Chapter 5 "The Process of GP" - Describes how GP should work in an ideal world (which unfortunately doesn't exist yet). A bit too abstract.....

Chapter 6 "Generic Programming" - Describes type based programming (i.e. C++ templates) and various languages support for Generic Programming. Java programmers won't like this one!

Chapter 7 "Component-Oriented Template-Based C++ Programming Techniques" - The title pretty much says it all. Good introduction to C++ templates.

Chapter 8 "Aspect-Oriented Programming" - Aspects are portions of code that have little to do with the actual intent of the code. Examples are synchronization and error handling. This chapter describes how messy aspects can make code and how to separate aspects from core functionality. Good stuff....

Chapter 9 "Generators" - Describes how ideal code Generators should work. Good introduction to the topic.

Chapter 10 "Static Metaprogramming in C++" - For me this is the high point of the book. Compile time control structures such as IF<>, SWITCH<>, DO<> and WHILE<> are introduced. These can be used to generate configurable types as shown in later chapters. These structures are difficult to debug but if used conservatively are very powerful!

Chapter 11 "Intentional Programming" - A description of Microsoft's Intentional Programming environment. IP is the ideal GP development environment that allows library designers to enhance the main IDE with domain specific libraries. Developers interact directly with the source parse trees that are rendered to the IDE in a domain specific manner. The description is interesting but the IP Software is potential Vaporware and I'm kinda sick of reading about MS development tools that will change the world (C# anyone????)

Chapter 12-14 - The final chapters describe how to build template class generators that allow the application programming to specify functionality as a template parameter and the generator will build the type. It's as close to GP as we can get today. A list container class, bank account class and a highly optimized matrix library are designed using the GP methodology. It's nice to see the authors actually practicing what they preach.

Aside from the overly academic feel to the book and touting Microsoft fantasy-ware (which may become available... who knows?) this book offers much food for thought for system designers and C++ library implementers. The template tricks described are difficult to debug but with a little luck future compilers will provide better support for this style of compile time design. I look forward to the 2nd or 3rd edition of this book when this stuff matures.

Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
33 of 38 people found the following review helpful:
4.0 out of 5 stars Interesting for C++ template programmers, August 31, 2000
By G. Powell (Seattle, WA USA) - See all my reviews
(TOP 1000 REVIEWER)    (REAL NAME)   
Czarnecki & Eisenecker are the authors of the the famed IF<> template used in many template libraries (Blitz++, GGCL, FAST, VTL and Lambda) They also discuss creation of a linked list, binary tree, SWITCH, FOR, WHILE templates. These are compile time constructs for generating code, not the resulting executable code. All cool stuff. There have been some advances in this realm of coding since this book has been published, but for the most part this is a good reference text. (Its an area of programming that is moving fast.)

The complaint about this book for JAVA programmers is legit, JAVA without templates or some other meta language is an inappropriate tool to do Generative Programming. That's not a slam on JAVA its just the way it is. Screws and nails, the right tool for the job at hand.

The discussions on design methodologies is pretty dry. If I'm having trouble sleeping, reading a chapter on it will do the trick. However there is a great chapter on "Feature Diagrams". These are a great addition to any design document as it can show what things are missing. After applying one to the VTL library we realized that we are missing a shared reference base.

The best part of this book is that each chapter starts out with a paragraph of why you should read that chapter. Would all technical books do this, I would be forever grateful. There is also a summary of the important points in the margin. Feels like I'm reading an annotated text, again a great writing style.

C++ code design is hard, mostly because the problems we are trying to solve are difficult. The real world is messy. (Witness the Zebra, looks like a horse but isn't.) The formalism this book brings to the table will help create better designs.

Recommended for Advanced C++ program designers, and anyone writing generic libraries.

Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)



 
14 of 16 people found the following review helpful:
5.0 out of 5 stars A peek at the next level of abstraction., January 23, 2001
If we think of OOP as a level of abstraction beyond procedural programming, we can ask the question "what's the next level of abstraction beyond OOP?" Application of OOP allows us to design and create programs of far greater complexity than traditional procedural approaches. Similarly, another level of abstraction should lead to a quantum leap in our abilities, both conceptually and practically.
The question addressed by this book is how can we go about designing programs that generate programs? How might we specify families of programs to cover whole domains of problems, in the same sense that a modern auto design specifies a near infinity of specific autos with varying sets of options? How might we implement such designs - and what tools are currently available, or under construction, for doing so? How do we go about thinking about such questions?
This book doesn't have all the answers, but certainly the ideas of feature modelling and domain-specific languages must be parts of the answer. If we stuck to those sections of the book (chapters 1-5), it would be important enough, but unsatisfying without any means of implementing something - and probably too short for a PhD thesis!
The majority of the book looks at a variety of implementation approaches - a few briefly, one (intentional programming) in somewhat more depth, and focuses on C++ template metaprogramming as the one most of us can do something concrete with today. Even there - as the MS Visual C++ compiler doesn't support partial template specialization - it's difficult to experiment. Too, the quote at the beginning of chapter 10 says it all: "I always knew C++ templates were the work of the Devil, and now I'm sure." (Cliff Click).
But that's not the point. More effective tools will come, but only after we think hard about what kind of tools we need - just as C++ was the culmination of a lot of people thinking hard about object oriented programming. This book opens the door - and our eyes - to what might someday be. At that level, it's breathtaking.
If you agree with the quote opening chapter 9: "I would rather write programs to help me write programs than write programs" (Dick Sites), then this book is for you. If you think that's nonsense, you'll get little or nothing out of it.
Comment Comment | Permalink | Was this review helpful to you? Yes No (Report this)


Share your thoughts with other customers: Create your own review
 
 
 
Most Recent Customer Reviews

4.0 out of 5 stars Generative programming
Out of the three programming books (the other two are: "Modern C++ design" by Alexandrescu and "C++ templates" by Vandevoorde and Josuttis) that I have read about C++ template or... Read more
Published 4 months ago by Yuanchyuan Sheu

3.0 out of 5 stars This book has some cool stuff
This book has some cool stuff and I was quite impressed by the part on functional programming using C++ template. Read more
Published 22 months ago by Zhuang Guo

4.0 out of 5 stars wide-ranging in scope, but heavy on C++ templates
This book does cover lots of techniques that fall under the rubric of generative programming, but be warned that there is a strong emphasis on C++ template metaprogramming. Read more
Published on March 1, 2007 by Thing with a hook

4.0 out of 5 stars A useful addition
One very important lesson in problem solving is that there is no one method that always works. No matter how good you are at one technique, there will be problems for which it is... Read more
Published on November 14, 2006 by John Phillips

3.0 out of 5 stars A+ in content, C- in execution
As it is said in another review, this is a solid (and rather academic) book on the theory behind code generation. Read more
Published on February 8, 2006 by Fernando Berzal Galiano

5.0 out of 5 stars No Better Book on Software Engineering C++ that I Know Of
The more experience you have designing and implementing complex software with C++, the harder it is to find well-written and thought-provoking books on the subject, especially... Read more
Published on August 20, 2005 by G. Kiyooka

3.0 out of 5 stars Strangely boring
I bought this book because I was looking for a language-agnostic guide to generic and aspect-oriented programming. Read more
Published on June 23, 2004 by B. Hutchison

4.0 out of 5 stars An advanced work on Code Generation
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... Read more
Published on December 13, 2003 by Jack D. Herrington

4.0 out of 5 stars good book
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. Read more
Published on January 2, 2003

1.0 out of 5 stars Too much fluff
I bought the book with much hope... yet I was unhappy with it. I am looking for new, improved ways to design and implement programs using C++, and sadly this book doesn't offer... Read more
Published on May 28, 2001 by Kevin Graham

Only search this product's reviews



Customer Discussions

 Beta (What's this?)
New! See all customer communities, and bookmark your communities to keep track of them.
This product's forum (0 discussions)
  Discussion Replies Latest Post
  No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
  [Cancel]


Active discussions in related forums
  Discussion Replies Latest Post
C# or Java? 32 5 days ago
   


Product Information from the Amapedia Community

Beta (What's this?)



Look for Similar Items by Category


Shop in a Box with Power-Tool Combo Packs

Shop for combo packs
Expand your tool collection with a versatile combo pack. Our extensive line of combo packs includes air tools and convenient cordless power tools.

Shop combo packs

 

Big Savings in Books

Bargain Books
Find great titles at fantastic prices in our Bargain Books Store.
 

Buy Three Books, Get a Fourth Free

4-for-3 Books
Order any four eligible books under $10 and get the lowest-price book free in our 4-for-3 Books Store. See more details.
 

Comfortable and Cozy

Shop for Furnace Accessories
Maintain the efficiency and heating power of your furnace during the cooler months with filters and accessories. Don't be left in the cold.

Shop all heating and cooling products

 

 

Feedback

If you need help or have a question for Customer Service, contact us.
 Would you like to update product info or give feedback on images?
Is there any other feedback you would like to provide?

Your comments can help make our site better for everyone.


Where's My Stuff?

Shipping & Returns

Need Help?

Your Recent History

  (What's this?)
You have no recently viewed items or searches.

After viewing product detail pages or search results, look here to find an easy way to navigate back to pages you are interested in.

Look to the right column to find helpful suggestions for your shopping session.

Continue shopping: Top Sellers

Conditions of Use | Privacy Notice © 1996-2009, Amazon.com, Inc. or its affiliates