Future Programming—Art or Engineering?
The emergence of multicore computer systems—ranging from portable and desktop computers to petascale supercomputers—is placing new demands on computer software, and is catalyzing a reexamination of the fundamental methods of computer programming.
When computer architects focused on increasing the speed of single processors, software performance improvements accrued automatically. But to take advantage of multiple cores, programmers must explicitly divide the code into multiple (and possibly conflicting) threads of execution that all run in parallel.
This is a non-trivial programming task. And the problem of creating languages and tools to make parallel programming easy and reliable is one that David Patterson, University of California computer science professor, feels will require a new Manhattan Project to solve.
One of the fundamental questions that this reexamination of programming techniques is raising is the perennial one of whether computer programming is or should be a form of art or a type of engineering.
Gordon Morrison’s Proposal
This article was prompted by a news item I read in EETimes (“Inventor forges fresh approach to writing software”) about Gordon Morrison’s announcement of his Coherent Object Software Architecture (COSA) approach to writing parallel computer programs.
Morrison is a long-time, independent computer architect who funds his work using royalties derived from computer architecture patents that are licensed to several large electronics firms (including IBM, Motorola, and Intel).
His COSA system is a highly systematic, parallel programming approach based upon state machines, tree data structures, and mathematical formulas. Its purpose is to simplify and bring more rigor to parallel software development, thereby reducing development costs and even eliminating the use of languages such as Java or C++ (which he considers too low-level). In Morrison’s own words: “Ten programmers could not produce the same program to solve a problem because programming is an artful approach. I want to eliminate the art and make it an engineering approach.” Regarding contemporary software project management, he has also stated that “coding standards are left to the artistic nature of the developer, hence the term herding cats.”
In other words, Morrison feels that computer programming is currently an art form (meaning unsystematic and unpredictable), but should be converted to engineering (meaning systematic and predictable).
The big questions this statement raises, however, are whether computer programming should be fully “engineerized,” whether the ten programmers in his example should produce the same program to solve a given problem, or whether a systematic, engineering approach might produce predictable, adequate programs yet stifle the independent creativity required to produce truly great programs.
Without attempting to answer this fundamental question, I would simply like to juxtapose the interesting story of Kazushige Goto, plus a few words from two renowned computing experts.
The Goto Story
Kazushige Goto works at the Texas Advanced Computing Center at the University of Texas, Austin. He has no formal training in computer programming and, mainly for fun, taught himself high-performance programming during his free time. His business card reads simply “high performance computing.”
Goto has developed a set of linear algebra subroutines called the Goto Basic Linear Algebra Subroutines, or BLAS, which in 2003 were used on 7 of the fastest 10 supercomputers as they competed for ranking on the TOP500 list. He hand optimizes his code for each system, meticulously reordering the instructions using his native skill, well-honed intuition, and—in his own words—trial and error. His hand-crafted code is consistently faster than that generated using either automated approaches or teams of developers. It has become legendary.
Goto’s story certainly sounds like the triumph of art over engineering, rare genius over standardized, automated development tools.
(See “Writing the Fastest Code, by Hand, for Fun: A Human Computer Keeps Speeding Up Chips.”)
A Few Words from the Masters
I also came across an article by Jim Sexton, IBM lead scientist for Blue Gene Applications (“Petascale Era Will Force Software Rethink”). His viewpoint is the exact opposite of Morrison’s. He feels that the challenges of parallel architectures actually demand a more artful approach to computer programming. In his own words, “On parallel systems, programming has changed from being a routine technical effort to being a creative art form.”
And finally, I discovered an article from Stanford Magazine (“Love at First Byte”) about Donald Knuth, professor emeritus of computer science at Stanford and one of the founders of academic computer science. Although Knuth was originally educated as a mathematician, a quote from this article reveals a very artful approach to programming. He says, “Like a poet has to write poetry, I wake up in the morning and I have to write a computer program.” It is no wonder that he named his multi-volume masterwork The Art of Computer Programming.