Slashdot Mirror


Practical C++ Programming, Second Edition

adrienlamothe writes "Practical C++ Programming is dedicated to teaching the reader how to program in the C++ programming language. The book actually has four goals: 1) Teach the reader C++. 2) Instill good programming style and practice (indeed, the book's subtitle is 'Programming Style Guidelines.') 3) Teach the programmer basic software development concepts. 4) Introduce the reader to debuggers and the make utility. 4) The author encourages the reader to use a computer to enter, run and debug the book's programming examples. I concur with this advice, though it isn't absolutely necessary." To see how well the book meets its own goals, read on for the rest of Lamothe's review. Practical C++ Programming, Second Edition author Steve Oulline pages 549 publisher O'Reilly & Associates rating 7 reviewer Adrien Lamothe ISBN 0596004192 summary Guide to learning C++ and programming style.

Practical C++ Programming is a fairly large book: 549 pages organized into six parts containing 30 chapters and 5 appendixes. The parts are as follows:

  1. The Basics
  2. Simple Programming
  3. Advanced Types and Classes
  4. Advanced Programming Concepts
  5. Other Language Features
  6. Appendixes.
You will have to read most of the book in order to learn C++, although there are a number of chapters you can avoid if your goal is to learn only the language's mechanics.

I must start by saying that I like the book -- I think it has value. There are a number of things I really appreciate about the book. There are also some problems that adversely impact one segment of the book's intended audience (more about those later.)

The book discusses all the essential elements of C++. Areas covered include: Class definition, namespaces, scope definition and resolution, operator and function overloading, object memory allocation (i.e. new and delete,) type casting, exceptions, inheritance, templates (including an introduction to the Standard Template Library,) the Input/Output system (including the C I/O library), and pointers. All language operators are discussed (i.e. relational, assignment, etc.) Also covered are language elements that C++ has in common with C. The other areas of instruction (programming style, software development concepts, programming tools) are intertwined with the primary topic throughout the course of the book.

One of the book's strong points is the author's excellent conversational writing style. It's hard to find books that combine good technical information with clear expository writing (O'Reilly seems to publish most of them.) Practical C++ Programming definitely succeeds in this area. The author frequently references his own experience to reinforce concepts on programming style, design and debugging. I found his anecdotes useful and occasionally humorous. The book also contains small sections of text that serve to warn the reader of pitfalls (these are marked with a bear trap icon) and areas where caution should be exercised (marked with bear paw tracks). Also, some of the source code examples contain intentional bugs, which the author explains at the end of each chapter. Diagrams, tables and source code examples are found on almost every page of the book, and these are used to keep the reader engaged with the textual discourse. My favorite diagram is Figure 7-1. "Software life cycle," on page 88; I emphasize with the dinosaur.

The book contains some interesting programming examples. The chapters on operator overloading and floating-point math contain source code illustrating how to deal with the numeric precision problems that plague all computers and computer languages. The chapter on the Standard Template Library contains a program showing how to create and use objects that manage a simple roster for enrollment and grading of students. The book also contains several examples of linked-lists and trees, for the purpose of teaching the reader how to use pointers, and to also show the reader the power and usefulness of the Standard Template Library.

Now to speak about the book's shortcomings. First, although the book does a good job of covering the important C++ topics of classes, inheritance, and templates, I think it falls a bit short in these areas (especially the coverage of inheritance). Also, the terms instantiation, polymorphism and encapsulation are not used in the book. The book could have provided a bit more insight into object-oriented concepts. Also, these areas of the book are sparsely diagrammed. Second, source code errors and typos appear regularly enough to frustrate an inexperienced reader. I also found a couple of diagrams to be confusing. Third, there are occasional misleading statements that a beginner probably won't recognize as such. Because of these problems, I cannot recommend the book to people with no previous programming experience. I'm surprised that these problems made it into a second edition.

I think that despite these problems, the book has value to experienced programmers who want to learn C++. C programmers in particular will have an easier time dealing with the source code errors. Also, I think that the book can be used by beginning programmers in a classroom environment, providing the instructor understands the book's problems and is prepared to guide students around them. The book should be particularly useful when read in conjunction with a good C++ reference guide.

Practical C++ Programming is an ambitious work in its breadth and depth. It covers more areas of software development than other C++ books. It takes an interesting approach that some readers will appreciate and others may not.

I would like to have seen a more detailed and complete explanation of the object-oriented aspects of C++ (including more diagrams). A table showing all functions for Standard Template Library containers would have been nice (the book does make reference to two STL web sites). Some mention of third-party object libraries (such as Rogue Wave, Qt, etc.) and their uses would have been helpful.

The lack of a detailed explanation of inheritance may not be bad. I'm one of those who believe that heavy reliance on inheritance causes serious maintainability problems. However, I think the book should have covered this topic more fully, so the reader would understand this issue.

In summary, Practical C++ Programming is a good book that really shines in some aspects and falls short in others. With some improvement, it could be a great book.

You can purchase Practical C++ Programming, Second Edition from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

12 of 266 comments (clear)

  1. oh yeah by Mohammed+Al-Sahaf · · Score: -1, Offtopic

    first post!!!!!!!!!!

    --
    Former Iraqi Information Minister Mohammed Saeed al-Sahaf
    1. Re:oh yeah by Anonymous Coward · · Score: -1, Offtopic

      Oh c'mon, how hard is it to first post on the story immediately following an SCO story? Everyone's busy flaming SCO right now, of COURSE you get fp on the next one.

    2. Re:oh yeah by Anonymous Coward · · Score: -1, Offtopic
      You're just a jealous FAILURE! My iraqi forces will destroy you! They will cut you up like a snake!

      m a-s

  2. OVER/UNDER FOR SCO JOKES IN THESE POSTS: +/- 6 by Anonymous Coward · · Score: -1, Offtopic
  3. SCO Group RIP Party by linuxislandsucks · · Score: -1, Offtopic

    Remember Folks the SCO Group RIP party is coming ..

    Did u get your invite?

    Yes, free beer is includued along with free rum and free wine..

    --
    Don't Tread on OpenSource
  4. my bum smells like poo by Anonymous Coward · · Score: -1, Offtopic


    my bum has a poo smell and it has poo on it and has poo leaking from it because I have wet farts and they smell like poo too.

    Darl McBride
    SCO

  5. You forgot to mention: by Steeltoe · · Score: -1, Offtopic

    ... and just one click! (Patented tech.)

    Yeah, I know I'll rake in Karma now, but I'm at 50 so it doesn't do me any good..

    1. Re:You forgot to mention: by Anonymous Coward · · Score: -1, Offtopic

      True karma hoes don't need rakes.

  6. morons review progress in exterminating corepirate by Anonymous Coward · · Score: -1, Offtopic

    nazi execrable.

    no problems so far.

    that's right. all of the whoreabull payper liesense stock markup ?pr? ?firm? generated scriptdead bullshipping execrable will cease. that includes the terabytes of shilloneous stuff that doesn't matter at all, postdead buy va lairIE/robbIE et AL.

    at least until the planet/population rescue program (formerly unknown as the oil for babies initiative) is lowered from crisis mode. pretending everything is duckey/a chance to peddle phonIE payper liesense garbage, doesn't help.

    y'all can chortle/pretend more if you want to, but the dying/mutilated innocents aren't sharing your feigned ability to disregard unprecedented evile. any harm to the least of the innocents, is harm to all of you/us, & will require reparations by all of us.

    that's right, after the walking dead finish exterminating themselves, & sadly enough, some of us, it won't take long to clean this cesspool of greed/fear execrable up.

    the Godless wons are helping by continuing to show where their hearts lie.

    fortunately, mr stallman et AL, etcetera, is now offering comparable/superior software, to the payper liesense spy/bug wear feechurned models, in almost every circumstance. there'll be few, if any more softwar billyonerrors, as if there's a need for even won. tell 'em robbIE. you are won of the last wons whois soul DOWt, right? .asp for va lairIE's whoreabull pateNTdead PostBlock(tm) devise?, used against the truth/to protect robbIE's payper liesense stock markup bosses/corepirate nazi 'sponsors'. yuk.

    back on task.

    what might happen to US if unprecedented evile/the felonious georgewellian southern baptist freemason fuddite rain of error, fails to be intervened on?

    you already know that too. stop pretending. it doesn't help/makes things worse.

    they could burn up the the main processor. that would be the rapidly heating planet/population, in case you're still pretending not to notice.

    of course, having to badtoll va lairIE's whoreabully infactdead, pateNTdead PostBlock(tm) devise, robbIE's ego, the walking dead, etc..., doesn't slow us down a bit.

    that's right. those foulcurrs best get ready to see the light. the WANing daze of the phonIE greed/fear/ego based, thieving/murdering payper liesense hostage taking stock markup FraUD georgewellian fuddite execrable are #ed. talk about a wormIE cesspool of deception? eradicating yOUR domestic corepirate nazi terrorist/gangsters will be the new national pastime.

    communications will improve, using whatever power sources are available.

    you gnu/software folks are to be commended. we'd be nearly doomed by now (instead, we're opening yet another isp service) without y'all. the check's in the mail again.

    meanwhile... for those yet to see the light.

    don't come crying to us when there's only won channel/os left.

    nothing has changed since the last phonIE ?pr? ?firm? generated 'news' brIEf. lots of good folks/innocents are being killed/mutilated daily by the walking dead. if anything the situations are continuing to deteriorate. you already know that.

    the posterboys for grand larcenIE/deception would include any & all of the walking dead who peddle phonIE stock markup payper to millions of hardworking conservative folks, & then, after stealing/spending/disappearing the real dough, pretend that nothing ever happened. sound familiar robbIE? these fauxking corepirate nazi larcens, want us to pretend along with them, whilst they continue to squander yOUR "investmeNTs", on their soul DOWt craving for excess/ego gratification. yuk

    no matter their ceaseless efforts to block the truth from you, the tasks (planet/population rescue) will be completed.

    the lights are coming up now.

    you can pretend all you want. our advise is to be as far away from the walking dead contingent as possible, when the big flash occurs. you wouldn't want to get any of that evile on you.

    as to the free unlimited ene

  7. Who gives a shit? by Anonymous Coward · · Score: -1, Offtopic

    I mean really.

    Who's with me????

  8. Factor patent abuse into the cost of Amazon books by abe+ferlman · · Score: 0, Offtopic

    Reduce their margins and they'll eventually fold or be bought out by someone less prone to abuse the ip system.

    Don't give Amazon any of your money until they clean up their act. You can afford the difference, you can't afford to overturn bad patents later.

    --
    microsoftword.mp3 - it doesn't care that they're not words...
  9. Re:Paging system broken? by DrSkwid · · Score: 0, Offtopic

    when a thread overlaps a page it reprints that thread from the parent onwards

    If you really give a shit you could always RTFS

    --
    There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter