Software Tools
Brian W. Kernighan, P.J. Plauger
I read Software Tools, by Brian W. Kernighan and P. J. Plauger (henceforth K&P) around 1978. This was the first edition, which came out in 1976. I was a grad student in Biochemistry. Software Tools was one of three books that came out of Bell Labs in the seventies and eighties: Software Tools by K&P in 1976, The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie in 1978, and The UNIX Programming Environment by Kernighan and Pike in 1983. My graduate mentor, who was one of those remarkable people who knows everything but is somehow not a know-it-all, pointed me to them. (He was not a computer guy -- I think he may have had a brother who worked at Bell Labs.) I have little formal education in programming, and these remarkable books were invaluable.
I began programming seriously in 1973 when I started my freshman year at Cornell University -- the first time I had access to a computer. Software Tools was perhaps the first book I ever read that convincingly addressed the question of how one should design software. The answer presented is not one everyone agrees on. (Microsoft regularly flings to the ground and dances upon every principle here presented.) But I found it congenial.
K&P argue that one way to design good software is to build a toolkit. Each command in the toolkit should accomplish a single, easily stated purpose. When possible, they should be simple -- if you can build a useful and versatile tool with just a few lines of code, you should. And the tools should be designed to work well together.
But K&P are not sterile theorists! Software Tools describes just such a toolkit, with complete working code available for download. Indeed, most of these tools are still in use today, in the form of the basic (and, alas, opaquely named) commands in any Unix-like operating system. I'm including GNU/linux in that group, even though GNU stands for Gnu's Not Unix.
Simplicity and clarity of purpose are good things in engineering! I still use in 2023 tools of my own that I designed back in the 70's after reading Software Tools.
Comments
Post a Comment
Add a comment!