My favorite compliment is when people comment on how simple my work is. I hear it occasionally about SRX, and back in the day people noticed the simplicity and unity of the PIX NAT Firewall too. I find simplicity to be such high praise because it is the same quality that inspired me most in the work of others: Dennis Ritchie, Ken Thompson, Niklaus Wirth, Hanspeter Mossenbock, to name just a few.
Why do people notice simplicity? It’s not just because the PIX or SRX never crash. It’s not that the software is easy to use and its concepts are easy to learn. I think it is because developing simplicity in software is an art form, and the results are art.
The definition of art is a tricky business, and I’m not even going to try. As Justice Stewart said of obscene material, "I know it when I see it."
RPG and COBOL were good attempts in the very early days of software, but are hardly art. When I discovered Pascal (Wirth) and then C (Ritchie), however, I knew right away—this is art. The simplicity and elegance of Pascal and C are unmistakable.
It’s not just simplicity, though. I learned BASIC before Pascal, and it is incredibly simple. It was both useful and popular in its time, and in the early microcomputing days it was much preferable to programming in machine language, yet it was small enough implement in 4KB of memory (the size of the original Microsoft BASIC for the Altair).
But Pascal and C are something else. They have an elegance of design, a unity of thought, a delicate balance of ideas, and power of expression.
During the 70s and 80s, almost all computer science research used Pascal. We learned a great deal about how to design and write compilers by trying experiments in compiling it.
In the early 80s, when microprocessors became as fast as minicomputers, the Unix operating system gained enormous popularity, and with it the use of the language C.
Ritchie, in his History of Programming Language paper on C, says that C and Pascal feel as if they could have resulted from a collaboration between the designers. But, he is quick to point out, they didn’t. The two languages were the result of separate minds that just happened to have similar parsimonious views of what made a good language.
There is a common element to Wirth and Ritchie, at least tenuously. It comes through Ken Thompson, who received his Masters at the same institution Wirth got his PhD: the University of California at Berkeley. At Berkeley, there was a faculty member known for the elegance of his designs, Harry Huskey.
Professor Huskey worked on the original ENIAC and alongside Alan Turing. He designed and supervised the building of the Standards Western Automatic Computer at the Bureau of Standards in LA in the early 50s, and shortly after, he designed the first personal computer. It was the size of a refrigerator, but his was the first intended for a single person to sit in front of and program. He had one at his house, in what was previously the maid’s room.
One of Huskey's students was Wirth. Another was Butler Lampson, who helped design the XERO Alto, the first computer to use Ethernet, bitmapped graphics, and a mouse. It was the machine that inspired Steve Jobs and Bill Gates to change personal computers forever.
Just as in the visual arts, there are schools of thought that we can trace through people, their ideas, and their work. I've always found "big" software, the massed produced stuff created by large teams, inferior to what can be built by small groups of artists. Both Pascal and C were the vision of a single person. Unix, the Alto, and now the Google language, Go, are the vision of only a few people, usually about three.
After getting his PhD, Wirth taught at Stanford for a while, then returned to Switzerland and taught for many years at ETH in Zurich. His replacement at Stanford was Donald Knuth, who wrote a set of books that all serious programmers have on their shelves. It’s the title of those books, The Art of Computer Programming, on which I rest my case. Software is an artform.