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

Have one to sell? Sell yours here
Tell the Publisher!
I'd like to read this book on Kindle

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

C++ In Action: Industrial-Strength Programming Techniques [Paperback]

Bartosz Milewski
4.4 out of 5 stars  See all reviews (14 customer reviews)

Available from these sellers.



Book Description

Jun 1 2001 0201699486 978-0201699487 1
C++- Proven techniques for building -- and maintaining -- industrial-strength Windows software.
Extensive coverage of resource management -- a crucial technique for building robust, maintainable systems.
Detailed coverage of large-scale software projects- strategies, techniques, management, planning, and project dynamics.
CD-ROM includes extensive C++ source code library. C++ in Action introduces state-of-the-art C++ programming and problem-solving techniques for developing efficient, powerful, scalable software systems. Renowned software architect Bartosz Milewski starts from two key premises. First, programs arent written for computers- theyre written for other programmers who will have to integrate and maintain them. Second, software development languages arent ends in themselves- theyre tools to solve problems. Starting from these principles, Milewski presents a comprehensive guide to C++ software engineering for maximum performance, reliability, and maintainability. He shows how to use resource management and exception management together to build more reliable code. Next, he introduces new techniques that simplify Windows development despite the complexity of the Windows API and libraries. The book also includes detailed coverage of large-scale software and scalability, encompassing development strategies and tactics as well as management, planning, and project dynamics. An accompanying CD-ROM and a companion web site contain an extensive source code library.
Bartosz Milewski has been programming since 1986, and teaching C++ since 1994. He is President of Reliable Software, a firm specializing in creating high-quality productivity tools for programmers. Previously, he was architect and programming lead for Microsoft Index Server, a successful commercial application now integrated in Windows 2000. Milewski holds a Ph.D in theoretical physics.

Customers Who Bought This Item Also Bought


Product Details


Product Description

From the Inside Flap

Why This BookWhy This Book?

Indeed, why YABOC11 (Yet Another Book on C11)? There are already many excellent books describing all imaginable aspects of C11. As far as learning the language and all kinds of programming tricks, the market is pretty much saturated. This book is not a language reference or a collection of clever tricks and patterns. This book is about programming.

Teaching programming is very different from teaching a language. A programmer is usually faced with a problem that he or she has to solve by writing a program—not with a language feature whose use he or she wants to illustrate. In this book I try to show, as much as possible, how to use the language as a tool to solve programming problems.

I center the presentation around various software projects. In each project I first describe a problem to be solved. Then I discuss what the program should do, what it should look like, and how it should react to user input. Based on that I build a scaffolding that captures the structure of the program without implementing its functionality. Finally, I implement the functionality, component by component.

But programming doesn’t stop there. What follows in this book is a long series of code reviews each followed by a rewrite. "How can this be done better?" is a question a programmer asks himself or herself constantly. And then another question becomes more and more relevant, "How do I write code that can be easily revised?"

In programming, as in life, there is never a single way to do something. That’s why being able to argue about various solutions is extremely important. Programmers who don’t know how to argue end up bitter and frustrated. I remember my own frustrations when faced with an argument like, "Because it’s always been done like this." In this book I argue a lot. I try to find the pros and cons of every solution, and in many cases I manage to settle on something I consider "elegant." However, I never use elegance as an objective criterion. I believe that one can always uncover some very practical arguments that are hidden behind the subjective impression of "elegance." An elegant solution in many cases catches a very good abstraction or generalization. It results in code that is easy to understand, modify, and debug.

Finally, in this book I emphasize the human factor in programming. My credo is "programs are written for programmers, not computers." Programmers want to write better programs not in order to make them more understandable to computers, but to make them more readable to humans. Program maintenance is impossible without program understanding. This may seem like an obvious thing to say, but many programmers overlook this self-evident truth.Why You?

Who are you, the reader of this book? You might be a relative beginner who has picked up some programming but wants to learn C11. You might be a student who wants to supplement his or her college education. You might be a well-trained programmer who is trying to make a transition from the academic to the industrial environment. Or you might be a seasoned programmer in search of new ideas. I hope this book will satisfy you no matter which category you are in.Why Me?

Why should I, of all people, write a book about programming in C11? You, the potential reader of this book, have the right to ask about my credentials, especially because I’m not a computer scientist by education.

I have a Ph.D. in theoretical physics—my thesis was about supersymmetric nonlinear sigma models. I used to be pretty good at calculating supersymmetric Feynman diagrams. Then, around 1986 I fell in love with computers, quit my postdoc position, and began programming.

A physicist is somebody who’s in between a mathematician and an engineer. A physicist is used to constantly moving between theory and practice. He or she is not expected to believe in a theory unless it has proven itself in practice, and will always try to generalize every aspect of experience in order to find an underlying principle. And, most of all, a physicist is not supposed to take anything for granted.

Unlike a mathematician, a physicist has to be more realistic and care more about the process than the formal theory. The process in physics is performing calculations. In programming, it’s software maintenance. So, since I’m a physicist, it should come as no surprise that this book focuses more on rewriting programs than on creating them.

I started teaching C11 and writing this book in 1994, while still working at Microsoft. I took a sabbatical to visit my alma mater, the University of Wroclaw in Poland. It turned out that I would visit that institution several more times, and each visit would prompt me to write a few more chapters. At some point I started converting the book to HTML and posting it on the web. Since C11 was still evolving, I had to rewrite many chapters over and over again. For example, when STL became part of the C11 standard library, I had to go back and rethink the implementation of most code examples in the book.

A lot of techniques described in this book were developed while I was working at Microsoft, designing and leading the development of the Index Server. After that, my new company, Reliable Software, turned out to be a great lab for testing new programming methodologies. All the techniques described in this book have been incorporated into our own products. In fact, we keep rewriting our code every time a new, better idea comes along.

Being a physicist makes me both a good programmer and a bad programmer. Good, because I constantly revise my techniques, search for new generalizations, and discuss every aspect of programming to death. Bad, because when I find a better solution I want to rewrite everything (I will try to convince you that it’s actually not such a bad idea). Managers on my previous jobs always had problems with me, because I questioned every decision, convention, and custom. I hope the same qualities will make me a good writer.

If you, the reader, find a better way of doing something described in this book, please let me know, so I can start rewriting this book for the nth time. My e-mail address is bartosz@relisoft.Acknowledgments

I am most grateful to my students from the University of Wroclaw and from the Digipen Institute of Technology, because the best way to learn something is to teach it. Thanks go to Professor Jerzy Lukierski, who invited me back to the university to teach computer science. I am also indebted to my coworkers at Microsoft and Reliable Software, who were the first to try and improve many techniques described in this book. My wife, Pam, besides supporting me in all my endeavors, helped me edit the first chapter of this book, making it so much easier to understand. Many thanks to editors from Addison-Wesley, especially Debbie Lafferty. 0201699486P05242001

From the Back Cover

charset=iso-8859-1"> C++ In Action: Industrial-Strength Programming Techniques picks up where the standard tutorial leaves off, providing a fresh pe

C++ In Action: Industrial-Strength Programming Techniques picks up where the standard tutorial leaves off, providing a fresh perspective on the language for both the novice and seasoned C++ programmer. Focusing on programming technique, this book captures the essence of expression in C++, promoting a methodology that delivers robust, reliable, and elegant code.

This project-based tutorial begins with an overview of the language, stressing "conversational C++." Focusing on technique, C++ In Action describes how to avoid pitfalls and how to understand, modify, and debug C++. This book teaches the programmer how to write small, fast, reliable, and scalable programs within a sensible timeframe. In addition, it provides extensive coverage of Windows programming in C++ and the development of large-scale projects with the language.

Throughout this unique and comprehensive guide, the author offers tried and tested techniques for working with C++, including:

How to make efficient use of the Standard Template Library in C++ Implementation strategies in C++, including top-down object-oriented implementation Plusses and pitfalls of C++ for programmers with C or Java programming backgrounds Resource management and the use of exception handling in C++ Windows programming in C++, including encapsulating the Windows API into C++ classes, namespaces, and templates How to refactor your program so that it can be ported from Windows to other platforms such as Linux The dynamics of large software project management–from conception to shipment How to coordinate the development of a team programming environment in C++

The accompanying CD-ROM contains all of the source code referenced in the book along with the Code Co-op™ serverless version control system (VCS), which will run all of the projects in this book.



0201699486B04172001

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

4.4 out of 5 stars
4.4 out of 5 stars
Most helpful customer reviews
4.0 out of 5 stars Not Big Enough, Not Deep Enough Jan 5 2003
Format:Paperback
For any developer that have had the displeasure of working with Win32 API and/or MFC in C++, this book strikes a very sensitive cord. For the uninitiated, Win32 is an OO programmer's nightmare, and trying to build a decent OO framework on top of it is a Herculean effort that few has dared to attempt. MFC is better, but marginally so, as it ascends Win32 from a nightmare to a very bad dream. The lack of proper standard libraries for other facilities such as threading, sockets, etc. only adds to the hurdles that a C++ developer needs to overcome in order to implement the most trivial functionality in his or her program.

And along comes this book with the attempt to build an OO layer that encapsulates the horrendous details of the Windows API. Of course, only a limited subset of this monolithic API is addressed in the book, which is understandable. One might consider the whole subject of the book a case study rather than a shrink-rapped solution, which is well-worth the time and money spent on it. If you have programmed with either Win32 or MFC before, and have being stung by their awkward design, or lack thereof, then consider this book a mandatory reading assignment.

However, the main problem with this book is that it attempts to be a one-size-fits-all material. The first chapters vainly try to introduce the reader to the C++ programming language. And the remaining chapters are bloated with subsections covering the finer details of the language as they are needed. The whole assumption that a total C++ novice can understand the Win32 API (the problem), the OO layer (the solution), AND the C++ programming language along the way is a very ludicrous one. A novice will struggle endlessly with it, and will ultimately find him or herself given up and reverting to more classical texts on C++ and OOP before being able to stomach reading this book again. Alas, the wasted space on introducing C++ could have been put to better use by adding more depth to the material.

So, you might ask why the four stars. The subject matter is unique and direly needed. And the coverage is adequate if you realistically set your expectations. By all means, buy it and read it. You might find it useful or at least enlightening. I know I did. But don't come unprepared.

Was this review helpful to you?
5.0 out of 5 stars this is the one Jun 1 2002
Format:Paperback
This is the ONLY book I could get hold of that actually attacked head-on the problem of using C++ and Windows without abandoning object-oriented design and sanity in coding. Maybe Jeffrey Richter has done something as good - I don't know - but I bet he takes three times as many pages to do it. You can work through this book or just read it but either way, your C++ & Win32 skills will be greatly consolidated.

The associated ReliSoft website is well worth a look, with some lovely sarcasm about MFC that didn't make it into the book (plus extra stuff on threads, etc.)

Was this review helpful to you?
By C.S.
Format:Paperback
The first part of this book might just as well be skipped through, basics of C++ are given there in such a convoluted (iconoclastic as Bartosz puts it) way that those don't know the basics, wont get anything there. Only those who already know C++ will be able to understand this part, but they actually dont need these basics.

The rest of the book is extremely valuable: explanation of Windows programming, thoughts about writing maintainable and reliable code and organizing software projects. For intermediate level C++ programmers like myself it's a real treasure trove.

I still cant believe that English is Bartosz's second language, it's impeccable. Nevertheless, the style is a little bit too sophisticated and assumes a very bright reader. For example Bartosz often gives you a lot of new material and saves all the explanations for later, so you have to go back and forth trying to piece it together. I would give explanations first, and also slow down a little, offering new concepts one at a time.
Overall - good job.

Was this review helpful to you?
Want to see more reviews on this item?
Most recent customer reviews
4.0 out of 5 stars A Good Book for Beginners
If you want to quickly get your hands dirty this is another book introducing you to C++. If you are easily bored this is a good book. Read more
Published on Jan 21 2002 by Dimitris Anastasiou
5.0 out of 5 stars Superb!
A book of strategy and tactics for creating dependable and elegant code. The Windows API techniques are reason alone to make this book a favorite. Read more
Published on Sep 30 2001
5.0 out of 5 stars A must-read for any programmer ....Get it now.
if you are a C++ developer,if you ever wanted to do serious Windows development, and create rock solid application for your users to enjoy and have been looking for the right... Read more
Published on Sep 24 2001 by TRANQUILLE TABARD
5.0 out of 5 stars What is C11?
First of all, there is no C11. ...
So since we are at it, let me try to explain once more what my book isn't. It's not a book that teaches C++ syntax or programming tricks. Read more
Published on Sep 7 2001 by Bartosz Milewski
3.0 out of 5 stars I was very disappointed with this book
I had very high hopes for this book. Moreso than I've had for another book in quite a while. I guess the fact that my hopes were so high is what ultimately led to me being so... Read more
Published on Aug 26 2001 by Zachary Turner
5.0 out of 5 stars Get this book, Get this book NOW..!!!! AWESOME
Simplified introduction to C++ and the concept of object oriented programming. I recommend this book to students and instructors of C++. Read more
Published on Aug 24 2001 by NeoDepth
5.0 out of 5 stars Get this book, Get this book NOW..!!!! AWESOME
Simplified introduction to C++ and the concept of object oriented programming. I recommend this book to students and instructors of C++. Read more
Published on Aug 24 2001 by NeoDepth
3.0 out of 5 stars Dissatisfied after getting to the 4th chapter
My initial reaction was to praise the approach taken by the author after reading the first chapter, however, I became gradually disappointed with the simplistic way the author... Read more
Published on Aug 24 2001 by NeoDepth
5.0 out of 5 stars Excellent bridge to intermediate or advance C++ status.
Last May, I learned of this book from a reference to theauthors web-site,... made in a post to one of the comp.lang.c++ news groups. Read more
Published on July 24 2001 by James Jennings
5.0 out of 5 stars How to use C++ wisely
C++ is rich enough to make it easy to write buggy, hard to maintain code. But when used well, you can write robust, high performance programs. Read more
Published on July 11 2001 by "alexgt"
Search Customer Reviews
Only search this product's reviews

Listmania!

Create a Listmania! list

Look for similar items by category


Feedback