April 21, 2019

Classic UNIX Programming Text Updated - page 2

Interview with Steve Rago, Co-author of Advanced Programming in the UNIX Environment

  • July 5, 2005
  • By Ibrahim Haddad

The book is so big. Why is this so and how long did it take you to update it?

The first edition of APUE weighed in at 744 pages. (My first book was 784 pages long, but appeared much shorter because we used thinner stock.) The second edition is almost 200 pages longer than the first because of the new material added. Besides the new chapters, existing chapters cover new interfaces from the Single UNIX Specification, which has merged with POSIX.1 since the first edition was printed.

Initially, I spent six months learning to write with Rich's style and developing a couple sample chapters so that the Addison-Wesley reviewers could decide if I was the right candidate for the job. After I received the go-ahead, it took about two and a half years to complete the project.

Was it a fun process to update the book? What did you learn through the process?

The work was fun because the UNIX System provides an enjoyable, elegant programming paradigm, but it was also frustrating at times. There was a lot of material to cover, and every time I looked up from the computer, one of the four platforms I was using was releasing a newer version with added functionality. Most of my experience had been with System V, so I learned a lot about FreeBSD, Linux, and Mac OS X. I had to read a lot of BSD and Linux source code to understand how many of the system calls and libraries were implemented.

From your perspective, what's so special about the UNIX environment?

The UNIX environment is unequivocally the best operating system environment I've ever used. The abstractions are simple and elegant. Tools (commands designed to do one thing well) can be combined in new ways to solve various problems. Treating files as simple byte streams allow us to process files using common tools. For example, you don't need to build a search engine into every new program when you can run grep. In most cases where the file format isn't ASCII, you can run strings and pipe the output to grep to get what you need. Although some people find the command syntax too cryptic, I appreciate anything that reduces the amount of typing I have to do. Years ago I used one operating system where the commands were very long, like "remove-this-file-from-the-directory" instead of "rm." That level of verbosity resulted in a poorly designed interface.

The UNIX programming environment is especially elegant. Interfaces are well-thought out, and functionality is decomposed into the basic building blocks needed to accomplish a wide variety of tasks. One true test of how well something is designed is to see how easy it is to modify and extend without having it collapse under its own weight. The UNIX System has always been easy to enhance and extend to solve new problems without becoming unusable.

Most Popular LinuxPlanet Stories