The Linux programmer's toolbox
Hope for those developers not raised on the Linux command line
Book review Linux, like the other *nix platforms, has a reputation of being a good environment for developers. In fact, Linux and hacking – in the original sense of the word – seem to go hand in hand, so much so that some commentators still find it hard to conceive of it as anything but a server and/or development platform.
Whether the hacker roots of Linux have held it back from becoming a popular end-user platform is a topic for religious dispute. For those developers who've not been raised on the Linux command line, and for whom grep, awk and sed are strange and mysterious things, a book like John Fusco's The Linux Programmer's Toolbox might be regarded as pretty good place to get some guidance.
The first thing to note is that the title might be a tad misleading. On the face of it this sounds like a book about all of the different tools and utilities that are available to the Linux programmer – compilers, editors, build tools, and so on.
That's partially right, of course, there's a lot of coverage of these types of tools. But there are also plenty of tools that aren't covered (more on this later). And, more importantly, this is a book that provides the reader with coverage of how Linux itself works – the kernel, processes, inter-process communication, shell commands, and so on. In other words, it's not just about tools in isolation, but the tools in the context of the operating system and the services that it provides.
The book has a focus on system programming in C and, to some extent, C++, and this is reflected in the tools and examples provided. Perl, Python, Java, and the like hardly get a look in, and the same goes for tools targeted at those platforms in particular.
For example, in the section on editors there's coverage aplenty of EMACS and vi, some coverage of graphical editors (Kwrite, Gedit, NEdit, SciTE etc), but no mention of NetBeans, Eclipse, or even more general purpose Java-based editors such as the versatile and excellent JEdit. More difficult to understand is the absence of any detail on awk, sed and some of the other tools available to Linux developers.
Similarly, when it comes to other tools the emphasis is on C tools for system programming. Build tools covers make and the structure of make files, illustrated with examples to do with building the Linux kernel. Debugging, and there's a whole chapter devoted to the topic, is geared to the gdb debugger, which is another part of the GNU toolset that includes the GNU Compiler Collection (gcc), that is covered in some detail throughout the book.
But it's not just the big tools like gcc, gdb and the like that are covered. As with all of the other *nix platforms, there are dozens of small utilities around that make the most of the philosophy "do one thing and do it well". These include process mapping tools, strace for analysing system call behaviour, code optimisers, performance tuning utilities and so on. For developers looking to master the art of Linux system programming, these are essential low-level tools.
However, it's not just the emphasis on the tools that makes the book useful. There's coverage of a lot of "softer" topics – where and how to find help (everything from man files to product documentation), how to find and download software, and so on. For the developer fresh to Linux this sort of information is as useful as being able to set the warning levels on gcc.
The Linux Programmer's Toolbox
Verdict: Ideal for the developer wanting to delve into Linux system programming for the first time.
Author: John Fusco.
Publisher: Prentice Hall.
List Price: £28.99
Current Reg price: £19.13 inc. VAT (discount 34 per cent)
Buy this book at Register Books at Reg Developer's special discounted price (subject to change). ®
Sponsored: Magic Quadrant for Client Management Tools