on April 20, 2008
To be honest this one of the few technical computer books I've read from cover to cover. I usually just use them for reference. On the subject of cross platform development this is currently the best and most up-to-date however there were a few areas I would have liked to seen covered better most notably the build environment and makes. Mr Logan does touch on these subjects but they are not given as much focus as I would have like to have seen which is why I'm taking one star away. With that said if I was asked to recommend a book on cross-platform development it would be Syd Logan's, hands down..
Logan tackles a lot of little complications that are the bane and reality of programmers writing multiplatform C++. This is not a book about learning C++ from scratch. Conceptually, it helps to think of this book as about 1 level above writing C++ code. For example, it discusses compiling, linking and running, where needed libraries might be missing.
The book describes 3 platforms. Microsoft Windows, Macintosh and unix/linux. Strictly, the Macintosh is nowadays using a unix variant. But it's done differently enough, and the Mac is popular enough, that Logan stands it separate from other unix/linux environments.
Perhaps the best recommendation of the book is to use a platform abstraction library. So that you can far more easily maintain a common code base. The suggested choice of library is NSPR. One simple way that it helps is in how it makes explicit the byte lengths of various C/C++ variables. This legacy C ambiguity is still with us, and causes much porting pain. It is no accident that newer languages like Java and C# make these definitions explicit. But many of us still have to write in C and C++.
on May 13, 2009
This was a good book to reference and augment your C++ portability skills. I have been porting code for years and found a few nuggets in this book I did not have to find out through trial by fire.
As a previous reviewer mentioned, it does not cover Java or C#/Mono, which by the name of the title makes sense. Java and C#/Mono are good tools, but if you need to be where the metal meets the meat and need the squeeze out all your MIPS you can, you'll have to move down the language hierarchy to C++ and assembly.
By setting up a nice abstract layer and firewalling you system calls and platform dependencies, you can usually build quite large sustainable C++ cross platform frameworks on many systems without the need for a VM level language.