REVIEW - Tom Swan's GNU C++ for Linux

Title:

Tom Swan's GNU C++ for Linux

Author:

Tom Swan

ISBN:

0789721538

Publisher:

Que Pub (1999)

Pages:

831pp

Reviewer:

Francis Glassborow

Reviewed:

June 2000

Rating:

1 out of 5

I am going to start this review by being rather picky about certain early details in this book. I think chapter 2 (on installing Linux) should be scrapped. If the reader does not already have a version of Linux running then this is not the place to help them install it, and if they do need help they will need much more than can be covered in 19 pages. The first part of chapter 3 on installing GNU C++ is appropriate particularly as the book comes with a full version of the compiler on a CD. However the last three pages (comparing C and C++) suffer in several ways. First it is dated because it refers to K&R C and ISO C 90 (ANSI C89). Second, and much more seriously to my mind, the author makes no clear distinction between Standard C++ and the multitude of extensions that GNU C++ has added. These include extra keywords such as signature as well as extra operators such as>? (evaluate to the greater of the two operands). He also fails to distinguish between these new (non-C++) operators and new meanings for existing operators. For example he writes about>> as if it was a new operator rather than C++ overloading it for some library types. These failures are important because the reader is unlikely to know that some things in this book are specific to GNU C++.

Following on that I regret that I have to say that the author uses the old, pre-standard, .h C++ header files. When I look closer I find that the author is pre-occupied with old mechanisms. The newcomer really has no need to be confronted with #defines almost as soon as she starts. I accept that she will eventually need to know about them but there is a time and place for everything. The author's timing seems to be anchored firmly in the late eighties.

Browsing through the book (well, You know that I do not read everything in a book targeted at novices unless I am doing a technical review) my eyes alighted on the chapter on friend. This starts by introducing friend classes and only tackles friend functions in the second half of a nine-page chapter. This chapter is a good example of what I think is the biggest weakness of this book; the author tells you how to use friend but (apart from warning you that it is dangerous) does nothing to explain why you might want to use it. The program examples are nothing more than syntax, there is no flesh to them and no sense of motive.

I am left with the feeling that the author does not have a clear image in his mind of who he is writing for and what he is trying to teach them. Given that most people learn by example and will struggle with trying to understand why something is being done I think this is a fatal weakness.

To a large extent the facts are somewhere in this book but I do not think it will help you to become a reasonable C++ programmer. If you can already program and just want to learn C++ there are several other much better books, albeit not specifically for GNU C++ and Linux. If you cannot programme you need something that is much better structured that will help you to learn to program alongside learning C++.

The problem with this book is that the author seems to have made little real progress since the eighties when he made his reputation as a writer. If anyone feels like taking a second look at this book, just let me know.


Book cover image courtesy of Open Library.