Is Software an Art?

Elegance of design. Unity of thought. Power of expression.

Posted on by

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’s 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’s 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’s 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 mass 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 art form.

About the Author

Brantley CoileInventor, coder, and entrepreneur, Brantley Coile invented Stateful packet inspection, network address translation, and Web load balancing used in the Cisco LocalDirector. He went on to create the Coraid line of storage appliances, a product he continues to improve today.

Sign up to have interesting musings delivered direct to your inbox.