Book

Software Tools

by Brian W. Kernighan, P.J. Plauger

📖 Overview

Software Tools is a foundational text from 1976 that presents a collection of fundamental programming utilities and explains their implementation. The book uses Ratfor (Rational Fortran) to demonstrate the creation of text editors, macro processors, sorting algorithms, and other core computing tools. The authors break down each tool's development step by step, showing how to build robust, portable software through careful design principles and coding practices. The implementations focus on modularity, simplicity, and generality - creating programs that can work together as a cohesive toolkit. Each chapter walks through increasingly sophisticated versions of key utilities, with complete source code and explanations of the underlying concepts and design decisions. The progression moves from basic input/output handling to more complex text processing and file manipulation tools. The book's lasting influence stems from its practical demonstration of how to craft reliable, maintainable software through systematic design and incremental refinement. Its approach to building tools that do one thing well and work together established patterns still relevant to modern software development.

👀 Reviews

Readers value the book's practical approach to teaching fundamental programming concepts through the creation of useful tools. Multiple reviewers noted how the techniques remain relevant decades later, despite the dated RATFOR language used. Liked: - Clear explanations of tool design principles - Focus on building modular, reusable code - Examples that solve real computing problems - Teaching good programming habits and style Disliked: - RATFOR language is obsolete - Some examples feel dated - Hard to find physical copies - Code listings can be hard to read in some editions Ratings: Goodreads: 4.24/5 (89 ratings) Amazon: 4.7/5 (13 ratings) Notable review quote: "The principles of good software design transcend the specifics of any particular language. This book teaches those principles through practical examples." - Goodreads reviewer The 1976 Pascal edition received slightly lower ratings than the original RATFOR version, with readers citing translation issues.

📚 Similar books

The Practice of Programming by Brian W. Kernighan Presents practical approaches to writing reliable code through principles, patterns, and programming tools.

The Unix Programming Environment by Brian W. Kernighan Explains Unix tools, shell programming, and the Unix philosophy of combining simple programs to solve complex tasks.

The Pragmatic Programmer by Dave Thomas Demonstrates techniques and tools for writing maintainable code and automating software development tasks.

Code Complete by Steve McConnell Covers programming fundamentals, variables, statements, developer testing, debugging, and tools for writing robust software.

Programming Pearls by Jon Bentley Presents programming problems and their solutions through practical algorithms, design techniques, and software tools.

🤔 Interesting facts

🔹 The book was published in 1976 as a response to the popularity of Software Tools in Pascal, yet it chose to use RATFOR (Rational FORTRAN) as its programming language to reach a wider audience during that era. 🔹 Brian Kernighan also co-authored "The C Programming Language" with Dennis Ritchie, which became so influential that it's known simply as "K&R" and is considered the definitive reference for C programming. 🔹 The tools presented in the book, including a text editor and macro processor, were designed to be portable across different systems—a revolutionary concept at the time when most software was machine-dependent. 🔹 Many of the principles taught in Software Tools remain relevant today, including the Unix philosophy of creating simple, modular programs that can be combined to solve complex problems. 🔹 The book spawned a movement called the Software Tools Project, which helped spread Unix-like tools and programming practices to non-Unix systems, influencing modern software development practices.