PROGRAMMER'S BOOKSHELF

Portrait of an Artist as a Programmer

Al Stevens

The book Aaron's Code: Meta-Art, Artificial Intelligence, and the Work of Harold Cohen is about an artist and his computer program. The artist who wrote the program is Harold Cohen; the program, which creates art, is named Aaron. The cover is lavishly decorated with a many-colored picture that suggests two human figures in a lush field of vegetation. You learn from the inside cover that the picture is "Meeting on Gauguin's Beach," and that it was drawn by Aaron, the program and hand-colored by Cohen, the human. That description would compel any computer programmer to start reading. Once you start, you will not want to stop. Besides reading about the wonder that is Aaron and the remarkable man who created it, you'll find you self engrossed in a finely crafted work, thoughtful and thought-provoking, beautifully written, and going straight to the heart of its reader as well as its subject.

Subthemes run throughout the book: art itself; its social significance; philosophy; artificial intelligence. But to me the book is mostly about Cohen, a programmer; Aaron, a computer program that creates drawings; and the consequence of Aaron's existence. I say, "to me" because Aaron's Code exhibits the characteristics of the art that it discusses. The reader finds--discovers, actually--its meaning, which may not coincide with what the author means to convey. Cohen holds that art is a meaning generator rather than a meaning communicator, and this book stands as testimony to that idea. Given that readers are interested in the notion that a computer can produce an original work of art, each reader will find in Aaron's Code what he or she is inclined to find, and not everyone will draw the same conclusions. I'm interested in computer programs and programming; this book is, therefore, about them. I'm interested in programmers, and the book is about one. I'm interested in the social consequences of technology; the book is about that, too.

It is important to identify right away what Aaron is not. Aaron is not a typical image generator of what has come to be known as "computer art." Aaron does not generate geometric forms, certainly interesting, but infinitely repeatable. Aaron does not produce fractals, beautiful and random, but not representative of the items that comprise the world. Aaron is not a tool for painters, designers, draftsmen, or animators to be used as a medium to express the creative ideas of the human user. Instead, Aaron is a computer program with a software interface to a hardware drawing device that creates original pictures, each picture different from the others and each one indistinguishable by the uninformed observer from the work of a human artist. As such, Aaron is significant to the computer scientist as well as to the artist, because it uses artificial intelligence to encapsulate and replicate much of the behavior that the artist unconsciously employs to create art, an understanding of which has eluded people ever since they first tried to understand themselves.

The programmer Howard Cohen was a successful artist, first in his native England and then in the United States. At age 39, unsatisfied or unfulfilled by his work, he took a one-year leave from the art world of London, a sabbatical that he extended until it became permanent. Cohen relocated to California. In 1968 he met Jef Raskin, a computer programmer and former Dr. Dobb's editor. Raskin is known now for his later role in the development of the Macintosh. Then a programmer associated with a university computer center, Raskin exposed Cohen to a CDC computer and to Fortran and taught him the fundamentals of programming. As happens with so many, Cohen was taken with the power and potential of programming, and he pursued it, apparently as a hobby, although he started several years before computer hobbyists were commonplace. There were no personal computers then, and computer time on mainframe and minicomputers was generally inaccessible.

Cohen's interest in computer programming complemented his quest to understand the process by which the artist uses what he knows in order to paint. He assumed that if he could use a computer to model that behavior, he could then come to understand it. The first version of Aaron was the result, and it simulated the artist's creative behavior by storing and applying certain rules of construction and representation as specified by Cohen. Aaron was the artist and Cohen the meta-artist, and Aaron's development progressed from the first stage, which could draw simple shapes without apparent meaning, perspective, or spatial relationships, to the current version, which creates figurative, three-dimensional drawings of things that the observer recognizes, such as people, rocks, and plants. The book traces this progression and intersperses many relevant discussions of the underlying philosophies and consequences of such a project.

The programming reader will find much with which to relate in Aaron's Code. We will ask questions, too, about issues that McCorduck does not address--or, at least, not adequately for us. Cohen wrote the first version of Aaron in Fortran on the CDC 3200. It is amusing to read of his discovery that batch debugging by passing card decks through the window to an unseen computer was less than productive. He solved the problem by getting hands-on access to a Data General Nova. Subsequent machines included the PDP-11 and VAX, with the current implementation a Micro-VAX. Sometime during those ports he switched from Fortran to the C language, which McCorduck calls a "trifle obsolescent." Today, all new development is proceeding in LISP on a donated LISP machine, reflecting the program's roots in artificial intelligence. All these ports suggest a revealing but unrevealed study in portability. We can assume that Cohen ran into obstacles moving the program among languages and computers. We would like to hear about some of them, but this book does not go in that direction, being more concerned about Aaron the result than the problems of its creation.

It is not clear how extensively Cohen studied programming as a discipline beyond what he needed to learn to develop Aaron. He seems to have independently discovered certain established tenets of artificial intelligence, learning later that disciplines already exist that have covered those bases comprehensively. Nonetheless, a passage in the chapter titled, "Art and Science" implies that someone, either McCorduck or Cohen, understands the basis of object-oriented technology at a conceptual level at least. Here is what McCorduck says about the search in artificial intelligence for the principles of behavior:

Among the first such principles proposed is that intelligence lies in the ability to process symbols. For science, definitions must be precise; a symbol is an entity capable of carrying denotation and connotation; a symbol system is a collection of patterns and processes, the processes capable of producing, destroying, and modifying the symbols. The most important property of patterns is that they are able to designate objects, processes, or other patterns. When patterns designate processes, they can be interpreted. Interpretation implies carrying out the designated processes--in short, action. All this is made manifest in programming a computer.

Subsequent discussions on the hierarchical nature of Aaron's code reveal a programming model that resembles structured code. It might not really be structured--we don't get to see any of the code to verify it--but the hierarchy that Cohen describes suggests structure, whether he knew about and conscientiously applied the discipline, or simply "discovered" again the programming model that best fit his requirements.

Aaron never draws the same picture twice. The book tells us that one of the variables that influences Aaron's decisions about what to draw is its starting position on the page, which, I assume, the operator specifies. Surely that can't be all. There are a finite number of starting points. We are left to wonder about the other seeds that influence the random picture generator. We can guess, or at least speculate on how we'd do it, but I'd prefer to know what Cohen chose and how he chose it.

Cohen's drawing hardware holds some fascination for the technical reader--as much for what it is as for what the author leaves out in discussing it. The first device was a mechanical turtle that wheeled around the floor on a mural-sized sheet of paper, raising and lowering a pen. The book suggests that Cohen built the turtle himself. He abandoned it for what appears to be a flat-bed plotter because the turtle, being cute, drew attention during exhibitions from the artwork it was drawing. Some pictures are said to be produced on a laser printer. The book says that the plotter, which it does not identify as such, is a "homebrew" device, suggesting that Cohen built it specifically for Aaron, although why he did not use a commercial plotter is unclear.

Aaron's Code contains more than just that which attracts the programming reader. The author explores the significance of a program that has the potential to be in many places simultaneously generating unique works of art. Does its ability to mass produce lessen the value of its creations? What is the test of quality? Aaron cannot critique or reject its own output. The program has no archival storage of past works. Its performance does not change due to experience, criticism, or acceptance. It does not repeat qualities that sell well and reject those that do not. It is the perfect producer of art in the sense that it performs without regard to ego or sensitivity to the reaction of its peers (of which there are none) or its patrons (of which there are many). What are the consequences of works of art that the artist--Aaron--creates after the meta-artist--Cohen--dies? Who owns the creative rights to the work? If a pirated copy of Aaron creates a picture, is the picture a part of the pirate's contraband? By the way, the author misunderstands digital technology when she suggests that pirated copies of Aaron would lack nuances that are lost in the pirate's disk copier--as if computer programs were analog recordings subject to signal-to-noise ratio loss in the copying process.

There is always the temptation to compare Cohen's paintings with Aaron's drawings, and several observers are reported to have done so. Their conclusions are naturally suspect because they were familiar with Aaron's origins. One story, however, which may be apocryphal, describes how a person of some stature in the art world sees an Aaron drawing, does not know its story, and remarks that the picture reminds him of Cohen's work. The observer then proceeds to wonder what has become of Cohen.

There's much to learn from Aaron's Code. But, better still, the book, by allowing us to find its meaning from within ourselves, pushes us to think about the issues involved in a project like Aaron. As programmers we are uniquely equipped to do that. The book discusses art and its history and philosophy and how art is essential to a thinking civilization. It makes us think about the cognitive process and thought, how they work, what their results are, how feedback modifies subsequent thought. It contrasts human spontaneity with a computer's random processes, suggesting that the two cannot always be distinguished. Finally, the book tells us how the artist gave his own rules and knowledge to a computer program, how the programmer saw to it that the program learned and executed them properly, and how the man, in so doing, learned for himself what they were.


Copyright © 1993, Dr. Dobb's Journal