Sign in to turn on 1-Click ordering.
More Buying Choices
Have one to sell? Sell yours here
Sorry, this item is not available in
Image not available for
Image not available

Tell the Publisher!
Id like to read this book on Kindle

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Multiparadigm Design for C++ [Paperback]

James O. Coplien
4.5 out of 5 stars  See all reviews (4 customer reviews)
RRP: 25.99
Price: 21.94 & FREE Delivery in the UK. Details
You Save: 4.05 (16%)
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
Only 1 left in stock (more on the way).
Dispatched from and sold by Amazon. Gift-wrap available.
Want it tomorrow, 1 Aug.? Choose Express delivery at checkout. Details

Book Description

13 Oct 1998 0201824671 978-0201824674 1

Coplien offers insight into an analysis and design process that takes advantage of C++'s multiple paradigm capability, including classes, overloaded functions, templates, modules, procedural programming, and more. The book uses understandable notation and readable explanations to help all C++ programmers—not just system architects and designers—combine multiple paradigms in their application development for more effective, efficient, portable, robust, and reusable software. Multi-paradigm design digs deeper than any single technology or technique to address fundamental questions of software abstraction and design.

Frequently Bought Together

Multiparadigm Design for C++ + The C++ Programming Language: Third Edition
Buy the selected items together

Product details

  • Paperback: 304 pages
  • Publisher: Addison Wesley; 1 edition (13 Oct 1998)
  • Language: English
  • ISBN-10: 0201824671
  • ISBN-13: 978-0201824674
  • Product Dimensions: 1.5 x 18.3 x 23 cm
  • Average Customer Review: 4.5 out of 5 stars  See all reviews (4 customer reviews)
  • Amazon Bestsellers Rank: 792,534 in Books (See Top 100 in Books)
  • See Complete Table of Contents

More About the Author

Jim ("Cope") Coplien is a speaker and author whose works range from programming and architecture to ethnography and organizational design. He is a founder of the Software Pattern discipline and of organizational patterns, which in turn were one of the foundations of Scrum. Though he writes for a technical audience, his works focus on the human element of product development. His latest work, "Lean Architecture" is as much about how architecture helps make software usable, as it is about software maintainability on the technical side. While his first book, "Advanced C++" took a little more than two years to write, "Multiparadigm Design" took five years and "Organizational Patterns" took ten.

Cope lives near Helsingør, Denmark, with his wife and son.

Product Description

From the Back Cover

C++ is a programming language that supports multiple paradigms: classes, overloaded functions, templates, modules, procedural programming, and more. Despite the language's flexibility and richness, however, there has previously been little effort to create a design method that supports the use of multiple paradigms within a single application.

This book presents a coherent framework for approaching multi-paradigm design, offering an advanced set of design practices that form the foundation for a formal multi-paradigm design method.

Multi-Paradigm Design for C++ offers insight into an analysis and design process that takes advantage of C++'s multiple paradigm capability. It uses understandable notation and readable explanations to help all C++ programmers--not just system architects and designers--combine multiple paradigms in their application development for more effective, efficient, portable, robust, and reusable software.

Readers will gain an understanding of domain engineering methods that support multi-paradigm design. This book reveals how to analyze the application domain, using principles of commonality and variation, to define subdomains according to the most appropriate paradigm for each. Multi-paradigm design digs deeper than any single technology or technique to address fundamental questions of software abstraction and design.

All of the concepts and techniques that form the groundwork for domain engineering are presented. These concepts include an in-depth look at commonality and variability analysis, how domain engineering interacts with commonly used design patterns, how to find abstractions in the application domain, and how the principles of domain engineering can be used as a basis for the abstraction techniques of the object paradigm. Most important, this book discusses how to apply analysis techniques that are the most appropriate paradigm to be implemented during the design phase.


About the Author

James O. Coplien is a premier expert and writer on the object paradigm and C++, having worked with the language since its inception at AT&T. Currently a member of Bell Laboratories Research at Lucent Technologies, his work focuses on multi-paradigm development methods and organizational anthropology for software development processes. His previous books include Pattern Languages of Program Design (with Douglas C. Schmidt), Pattern Languages of Program Design, Volume 2 (with John M. Vlissides and Norman L. Kerth), and Advanced C++ Programming Styles and Idioms.


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

What Other Items Do Customers Buy After Viewing This Item?

Customer Reviews

4 star
2 star
1 star
4.5 out of 5 stars
4.5 out of 5 stars
Most Helpful Customer Reviews
6 of 6 people found the following review helpful
By A Customer
This book is worth a read if you are heavily into C++, if only to remind yourself that, when using C++, "objects" are but one paradigm to use. The general theme of the book is that you need to be aware of all the tools the language supports, and not just "objects" or "patterns."
Comment | 
Was this review helpful to you?
2 of 2 people found the following review helpful
3.0 out of 5 stars Disappointing 24 Feb 2007
Arguably ahead of its time, given the strong functional borrowings of ostensibly object oriented languages such as Ruby and Python, this book presents an approach to domain analysis and program design using C++, although it's applicable to several programming languages. Readers may also find echos of Eric Evans' Domain Driven Design, particularly in the idea of a domain dictionary to record a vocabulary for use in naming the parts of the finished model.

The main message is that OO is only one of several choices when building software in C++. The author presents the following alternatives: generics, classes without virtual functions, overloaded functions and using the preprocessor. Clearly, some of these suggestions are more niche than others. Some extended examples are provided, involving a text editor/buffer, a function differentiator and a finite state machine.

The other big idea is the concept of commonality and variability analysis. The process goes along the following lines:

1. Create a domain dictionary defining all terms used in the domain.

2. Analyse the domain using experience or intuition to group the domain into subdomains of commonality.

3. For each subdomain, analyse the variabilities with respect to their common core.

4. Decide which paradigm to use, depending upon whether the variability needs to be specified at run time, compile time, etc.

I worked hard to like this book, really I did. One of the biggest problems for me is that I just can't get along with James Coplien's writing style, which reads like a stuffy academic research paper. I find it extremely ponderous and obfuscated, whole sentences flow by without imparting any meaning.
Read more ›
Comment | 
Was this review helpful to you?
3 of 5 people found the following review helpful
By A Customer
This book explores the foundations of software design paradigms. It explaines an approach that enables designers and programmers to grasp the modern design paradigms in their naked form. Don't let the name of the book fool you: The book is not only for C++ programmers... many software designer and programmer will benefit from it.
Comment | 
Was this review helpful to you?
1 of 2 people found the following review helpful
5.0 out of 5 stars An excellent read 14 May 2005
Written by one of the giants of the software industry, this is a superb book that ought to be read by anyone working in software engineering. The techniques presented are easily applicable to a variety of languages, and above all else remind us that object-orientation might be the cool thing right now, but that it's just one tool in the tool-kit, and every tool has a purpose. Know those purposes; know those tools; get this book.
Comment | 
Was this review helpful to you?
Most Helpful Customer Reviews on Amazon.com (beta)
Amazon.com: 3.6 out of 5 stars  14 reviews
23 of 31 people found the following review helpful
4.0 out of 5 stars Transition legacy systems with multi-paradigm design 8 May 2000
By Charles Ashbacher - Published on Amazon.com
In the programming world, the word paradigm is simultaneously over and under used. It is under used in the sense that in this field, the conventional wisdom changes with the announcement of each new next big thing. Fortunes are made and lost in a matter of hours, based on a cycle of "revolutionary" new ideas. However, it is sometimes over used when referring to a specific programming language. I must confess that while it is clear that C++ is a very flexible language that allows for many different approaches, I was skeptical when I read the title of this book. I tend to define the term paradigm to mean more significant differences than others do. However, only a short while into the book, I realized the sense of the approach the author has taken.
The majority of software projects are not constructed anew, but are legacy systems that need to be updated. In almost all of those cases, this would involve multi-paradigm development, as it is a rare occasion indeed when legacy technology would be used to manage the updates. In fact, the tools and expertise may no longer exist. Even in those cases where there is a complete rewrite it is necessary to understand the old paradigm, so there is no fundamental difference from the update.
In reading this book, I was struck with many thoughts about how practical the authors approach is. He argues for C++ by emphasizing that it is a language capable of supporting many different approaches, sometimes even simultaneously. I regularly teach experienced programmers the basic concepts of object-oriented programming , and this gives me firsthand experience in seeing the difficulties in making the paradigm shift. I gleaned a few new approaches from this book that I believe will help make the transition easier.
The problem with learning new tricks is often because we know so many old ones. If we can intersperse the old and the new, transitions are easier, and this book will help you successfully perform the mixing.
11 of 15 people found the following review helpful
5.0 out of 5 stars An outstanding contribution to software design philosophy! 15 Sep 1999
By Christophe Pierret (cpierret@businessobjects.com) - Published on Amazon.com
The author tries to bring back together different ways of thinking (aka paradigms) and succeeds. You will never see analysis and design the same way after reading this book. He showed me what generic programming (C++ templates) and OO have in common. Even if you don't use C++ in your day to day tasks, you can benefit from reading this book. Thanks Mr Coplien.
35 of 51 people found the following review helpful
1.0 out of 5 stars a sure cure for insomnia... 9 Oct 2000
By just-a-programmer - Published on Amazon.com
I was so excited when I found this book. Large scale application design is HARD! Although I hadn't read any of Mr. Coplien's previous books, his name is prominent in the C++ community.
This book has some interesting ideas but most engineers won't get to them because of the author's fascination with the language. Time and again I found myself re-reading a passage only to discover that he was making a simple point.
Please Mr. Coplien, consult a writer before you write any more. Your text is obtuse, dense, when stating the obvious. S/he would certainly warn you of the dangers of passive voice, a trap in which you're completely mired!
I hope this doesn't violate any copyrights but here are the last two sentences in section 1.8.
[after a discussion of late binding] "Multi-paradigm design doesn't aspire to such reflective solutions; this is largely an issue of practicality and scope. The pattern tie-ins in Chapter 9 are limited to structural commonalities and variabilites that are simple extensions to C++ constructs."
I'm sorry but I, and most of the engineers I've worked with, just don't talk that way. I'd be tempted write something like that if I wanted to be sure that no one would read my paper.
IMHO, Mr. Coplien, if you want a model of how to write something which is readable to those outside of the C++ design community, pattern your prose after any of the following books (which I've found very readable):
- The C++ Programming Language - Stroustrup (Part IV)
- Design Patterns - Gamma, et.al.
- Advanced CORBA programming - Henning, Vinoski
8 of 11 people found the following review helpful
5.0 out of 5 stars Cure for Crank Suffrage 11 Nov 2006
By R. Williams - Published on Amazon.com
Format:Paperback|Verified Purchase
Jesus, Amazon reviews are one of the best things about the internet. They have to start changing rating formulations here to discount the rise of corn pone crankery. Giving this one star and saying it is soporific (hint: that's a joke see, as the guy is complaining about use of language and the old mozartean syllable count), is LUDICROUS.

First off, where has this book been hiding? When I first read Coplien's Advanced C++ in 1992, it blew me away. I read and reread it like it was epic poetry (oh wait, that's because, well, it IS). Coplien is everything you want in an author: first, he is literate. Unlike junior who can only hold the book w/one hand (since they took away his pacifier, he has to use his thumb), he has clearly read and digested a LOT of stuff. Science people, too often have zero literary sensibility at all. Funny that the great scientists seemed to. Oppenheimer read in several languages and quoted the Baghavad Gita, Greek scholars, and was into poetry. Anyway, Coplien can also claim to have been, to borrow the Dean Acheson phrase 'Present at the Creation' (though, lucky for Cope, he was there and took part in the birthing of the most important software dev movement in the last 25 years, while Acheson helped cement the modern police state). Finally (on this front), this book is not only readable, it reads like the wind. And believe me, friends, I was almost suckered into believing the whiney tail of my hero's demise.

Now, here are a few more things I'd like to say about this book:

1. I have been reading a lot about PLE lately, and this book plugs into this so well, it's bizarre. For instance, this book takes some serious time to talk about how to do variability analysis, but also discusses things like the mapping of domain variability requirements to language features, the various codifying tools that enable substitution, but also substitution w/variation (e.g. parameterization, virtualization, etc.), but then, in a bonus turn on this vector, he talks about how this meshes with patterns, showing for instance how cases of negative variability (where the deriver wants to erase part of the base) can be refactored to Bridge, etc.

2. Don't get too thrown by the multi-paradigm angle the title implies: this book is not just a screed espousing the use of functional sideshoots, or procedural deviations.

In summary, this is a great book and I can't believe I did not know it existed until recently. If you are doing product oriented development especially, and variation at more than just the simplest level is a daily demand, this is one of the best wells to visit.
16 of 23 people found the following review helpful
1.0 out of 5 stars Very hard, unrewarding read 31 May 2001
By Kevin Graham - Published on Amazon.com
I am experienced with C++, however I found this book extremely difficult to read. The author seems to enjoy digressing and building elaborate sentences, but unfortunately this (at least to me) seriously hindered the understanding of the material.
Here and there I would see a great insight, but such insights are very hard to find among all the precious language used. There are no code samples and very little concrete stuff at all. I don't even know to this day what the book has to do with C++. I usually had to read many paragraphs a second time before I figured out their meaning. And, unfortunately, it was more often a trivial fact dressed in oh so nice words, rather than an illuminatory insight.
I just didn't gain anything from reading this book. Sorry.
Were these reviews helpful?   Let us know
Search Customer Reviews
Only search this product's reviews

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

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

Search Customer Discussions
Search all Amazon discussions

Look for similar items by category