I didn't call this a "review" because I haven't actually gone through the whole book just yet, but from what I've seen so far, it's got some interesting things that are worth jotting down. So here's a "preview" of the book.
First, the book is hefty - and not with the BIG type and pages of code listings either - it's really jammed packed with a lot of information about programming in C++ for Symbian. Everything from Hello World to Bluetooth is covered. The book focuses on Symbian OS 7.0 and the UIQ APIs that are in the SonyEricsson P800, but I'm sure most of the book can easily be applied to Series 60 development as well since they share much of the same OS underpinnings.
The GREAT thing about this book as opposed to some of the other books I have on the subject is that it focuses on development with Metrowerks CodeWarrior DevStudio. Woohoo! No more MS dev tools! The book also comes with a 30 day trial of CodeWarrior which is particularly cool because you can't download this from their website. I mixed this up a week or so ago, but you can download the additional libraries for Series 60 development. This is great if you want to start playing and you have a Nokia phone like myself instead of a P800.
I will say, that this is not a tutorial on C++. I didn't expect it to be, but wanted to make sure it was clear. I have some good books that go over the subject that I bought a back in November after Jim recommended them to me. (Jim spends his day as a server-side C++ programmer, a job that bewilders me to the core.)
Doing development for Symbian, however isn't normal C++ in many respects because they've provided APIs to help with memory management. An example is String handling. Chapter 5 goes over the differences between vanilla C and C++ string handling and the way that the Symbian API handles them. It refers to a hell of a lot of things that I Just Don't Get (like heaps and stacks) and is a pretty amazing example of the complexity that is C programming. To me at least.
In Java appending one String to another is as simple as this:
String helloWorld = "hello" + " world!";
This is because Java has overloaded the + operator to do a bunch of magic for you. This is probably the #1 reason I've never been able to get into C programming because I can never seem to get past HelloWorld due to this type of complexity:
static char hellorom = "Hello"; static char worldrom = " world!"; char helloworldstack[sizeof(hellorom) + sizeof(worldrom) - 1]; strcopy(helloworldstack, hellorom); strcat(helloworldstack, worldrom);
And this of course is nothing like messing with the heap using the Symbian APIs:
HBufC* hellowWorldHeap = HBufC::NewLC(KHelloRom().Length() + KWorldRom().Length()); TPtr helloWorldAppend(helloWorldHeap->Des()); helloWorldAppend = KHelloRom; helloWorldAppend.Append(KWorldRom);
Obviously since all this is completely Greek to me I need to dive into those books I bought 6 months ago (now I know how my wife feels when she picks up some of my Java books and gives me one of those weird looks). God, where did those months go? I should just sell all these C++ books and use the money towards a P800 and just program in Personal Java instead... Hmmm. Any takers?
Anyways, I can judge a decent programming book even if I don't understand the contents very well (which is why I bought it in the first place, otherwise I wouldn't need it, so I guess that makes sense) and this seems like a good one. If you're interested in Symbian C++ programming, this would be a good place to start.