Tuesday, March 17, 2020
Location visible to members
# A Software Tool in Many Languages - Jez Higgins
One of my very favourite books about software is Kernighan and Plauger’s *Software Tools in Pascal*.
> This book teaches how to write good programs that make good tools, by presenting a comprehensive set, each of which provides lessons in design and implementation.
First published in 1981 the book remains in print because it does exactly that, and beautifully so. Starting with a tiny task – copy everything on the console input to the console output – and the correspondingly tiny program, they take us step by step, program by program, through filtering, file archiving, sorting, and regular expressions, into an ex-like line editor, a troff-style print formatter, and a pretty respectable macro processor.
Software Tools in Pascal is itself a revised edition of an earlier book, called simply *Software Tools*. While Software Tools in Pascal presents the same tools, the implementations are new Pascal programs, not straight translations of the existing code.
> The programs here are not just transliterations into Pascal, however. Almost every program has been improved in some way. Pascal lets us do some things much better than is possible in Fortran. Recursion in particular is a boon. Quicksort and regular expression closure are much simpler when done recursively instead of with a stack or linked list; expression evaluation has been added to the macro processor.
Modern languages allow us to do some things much better even than that! Languages now provide much larger and more capable standard libraries that came with early-80s Pascal. Much richer data types, either built in or via libraries, are available, and so on.
## One Tool. Many Times.
In this session, we'll examine just one of Kernighan and Plauger's tools. Having brushed up our Pascal, we'll reimplement it in another language. And then in another. And then again. And, finally, once more for luck.
I'm aiming to give everyone a taste of a language or two they haven't really seen before, perhaps of an approach they hadn't considered before, and, I hope, a glimpse of the joy contained in this wonderful book.
Jez Higgins is a freelance software grandad. He mucks in with programming, lends a hand with build & deployment processes, provides a leg up with TDD practices, and keeps an eye on the young 'uns so they don’t fall down the old mine shaft.
As usual drinks and pizza will be provided by our kind hosts and sponsors BlackCat Technology Solutions.