Overall, Professional Linux Programming achieves what it sets out to do - to develop the skills of a 'home hobbyist' programmer to the point where they could usefully contribute to the GNU world of Open Source development.
This is a big book and it attempts to cover a lot of ground. Fifteen Linux programmers have contributed to bring together in one place a whole wealth of information normally only found in specialist books. Whilst the depth of coverage has obviously had to be reduced there is no way a 28 page chapter on CVS can cover everything a 200 page book would cover there is still an awful lot of very useful information in a very readable form and with an excellent index and table of contents to make it useful as a reference work too.
The 28 chapters fall into two broad categories; those covering 'general' programming topics and those that progress the example application. The general chapters (called 'take-a-break' chapters by the authors) cover basic topics (version control, debugging techniques, distribution formats and internationalisation) as well as advanced topics such as implementing diskless workstations, programming Beowolf clusters or writing device drivers. The example application, a DVD-store, is used to introduce topics such as GUI programming (using both Qt/KDE and GTk+/Gnome), CORBA and RPC.
The bulk of the code presented is in C, although many other languages are also used, including C++, Python, Perl, PHP, XML, Flex and Bison. Detailed chapters on PostgreSQL, MySQL and LDAP complement a chapter on the use of databases. The only assumptions made are that the reader is familiar with Linux, is comfortable with C programming and has some knowledge of OO techniques.
Although a lot of work has gone into making the work of all fifteen authors fit into the same style, there are a few places where idiosyncrasies have managed to slip through. For example in the chapter on XML there is a piece of code that mixes pointer and array styles in a way which makes the meaning of the code quite obscure (in fact it's simply trying to print out all the strings in an argv-like NULL-terminated array of char* s). Fortunately, examples like this are very much the exception rather than the rule and given the target readership they should not cause more than a brief 'what's going on here?' moment.
Overall, Professional Linux Programming achieves what it sets out to do - to develop the skills of a 'home hobbyist' programmer to the point where they could usefully contribute to the GNU world of Open Source development.
The authors' website is at:http://www.docbox.co.uk/