I started learning C, then C++ back in 1997 so you'd think I would be pretty expert by now wouldn't you? Wrong! There were problems. I was doing it on my own with only books and C Vu magazine to turn to for help. At first it was like floundering about in a deep quagmire - with approaching nightfall. My first compiler was the Zorland C Compiler Ver 2, but I quickly decided that C++ was a better language. My day job is cabinetmaking and restoration (www.relderton.co.uk) and I was doing this as a mind-stretching exercise. I wanted a pure, powerful and versatile language that would endure, having played with Sinclair Basic and Z80 assembly language. Of course assembly language is the purest approach to computer programming, but one has to compromise if one wants to produce powerful programs before doomsday. C++ fits the other criteria but it also carries the weight of history (the need of new developments to build on previous work rather than start afresh). The next IDE (integrated development environment)/compilers were Borland Turbo C++ 3.0 for DOS, then Borland C++ Builder 5 for Windows, then a rapid retreat back to Borland Turbo C++. I was reading avidly all the time but had to content myself with the poetic qualities of computer speak if I failed to comprehend its deeper meaning. The trouble was that the various books, compilers, articles etc. in the late 1990s were deeply incompatible, but I was quite innocent of this.
Then came FGW's You Can Do It! This was like manna from heaven. The book came with an easy to use Windows IDE/C++ compiler (Al Stevens' Quincy), all the programs could be made to work with very little trouble and the author's instructions were easy to follow. At last I was making real progress. The book is an introduction to programming using C++ only as a vehicle. All elements of this publication are compatible including the book's website and the network of mentors who give support to readers via email. My mentor was Roger Orr, whose genius never ceased to amaze me. (To my family Roger is known as 'the archangel Gabriel', whilst FGW is known simply as God.)
You Can Program in C++ is FGW's second book in what will become a series and it is a tour de force. It progresses from introductory work through to a level of proficiency that will allow the student to develop quite powerful yet easily constructed programs. It is designed for those who have some prior programming experience (in any other language). The author takes pains to explain how those proficient in specific other programming languages can easily make wrong assumptions regarding many aspects of C++. I found those sections particularly interesting because they helped to show C++ in a wider context.
FGW's writing style is what I would call direct. He holds one's attention because it seems that he is talking directly to one. The delivery does not consist solely in facts but it contains elements of programming history and personal experiences. This helps to bring the subject alive and give it depth and colour, making the details easier to remember. It goes without saying that an author has to know his subject, but for an author to succeed in making a complex subject digestible to the novice, wide experience and authority are required. FGW has these in spadefuls.
The book is a manageable size (19 x 23.5 cm) and has something less than 400 pages. As such it does not cover every aspect of C++ and the novice should be grateful for this - it makes it all do-able. One nark is that the index does not work, one has to add either 8 or 10 to the numbers in the index to arrive at the correct pages. Once one has got over the irritation of this, one should treat it as an exercise in pointer arithmetic and not complain. The slightly garish cover design looks as though the publishers are aiming at the secondary school market. If so, the kids will need considerable self-discipline to stay the course, or very persuasive supervision. The book demands a lot of commitment on the part of the reader and many hours at the computer doing practical programming and problem solving. Here I have to make a teeny confession. I stopped doing practical work after Chapter 4. It was hard to find the necessary spare time to do a really thorough job of working through this book (the same was true of YCDI), but having paid close attention to the text I felt that I could visualise the results of most of the program listings. I intend to use the book only as a tool for fixing problems with other programs (God forgive me) but I would not advise any real novice to follow this example.
Two large sections of the book concern the development of playing card entities and chess board entities. The former exercise could be accomplished by students with very little domain knowledge but I think the latter would be quite difficult and even plain tedious for anyone who is not a chess player. Some study of the game would be a great help. However, both these props served excellently well for introducing the required programming functions. Presumably, professional programmers too have to submit to the tedium of dealing with domain knowledge in which they have absolutely no personal interest.
When you buy YCPCPP you also get a CD which includes an IDE called MinGW Developer Studio along with a C++ compiler from The Free Software Foundation (the same package is available on the internet). There is also an IDE called JGrasp which can be used with a variety of compilers. Each package is present in both Unix and Windows flavours. In addition, you get a large selection of supporting text from YCDI - an excellent idea. I'm glad of the opportunity to use MinGW Developer Studio because it serves as a stepping stone to Microsoft Visual C++ 2005 Express Edition (also free from the internet). I have that installed too but am taking it very cautiously at the moment because its fearfully complex (Microsoft describe it as 'fun' and 'lightweight', however).
All in all You Can Program in C++ is very student friendly. Highly recommended.