I first saw this story in 1984 when it was sent to me through email while I was a at . At the time it was not attributed to any author in particular, and was sent to me by a friend as a great story about the of hackerdom. The story is told in the first person as the storyteller remembers an encounter with a True Hacker named Mel. This is, to my knowledge, the most widely circulated hacker legend on the Internet and is often pointed to as the best way to begin to understand the culture of the hacker. It is formated in free verse rather than justified prose and feels to my non-folklore-trained ears a bit like an epic poem in style.
I have since discovered that the story was first posted to a on May 21, 1983. The author, Ed Nather, originally wrote and posted the story in prose format. At some point during its travels through the net it was modified into free verse form. It is this free verse form that is by far the most common form of the story as it continues to circulate through the Internet today.
The introduction to the story gives the motivation for the reminiscence as a rebuttal to an article that makes light of current academic thought in computer programming by asserting that `` write in FORTRAN.'' The actual article to which The Story of Mel refers is one published in the computer magazine Datamation in 1983 entitled ``Real Programmers Don't Use Pascal'' by Ed Post . Pascal is a computer language designed by Nicklaus Wirth to promote so-called structured programming, which forces the programmer into a logical system structure the makes the program easier to understand and debug . FORTRAN is a computer programming language designed for engineering and scientific code, and is one of the, if not the, oldest computer language still in wide use today. As such it is a fairly primitive language when compared to Pascal, and extremely primitive compared to an even more modern language. Constructs that are easily expressed in a modern programming language (like Java, for examplegif) would require a hacker's skill to code in FORTRAN. The main point of The Story of Mel is that perhaps today's programmers think that programming in FORTRAN is hard, but if you look back just a little bit further you can find an example of a programmer who didn't even need FORTRAN to perform amazing feats. The first few stanzas set the stage for the story to follow:
A recent article devoted to the macho side of programming
made the bald and unvarnished statement:
Real Programmers write in FORTRAN.
Maybe they do now,
in this decadent era of
, hand calculators, and ``user-friendly'' software
but back in the Good Old Days,
when the term ``software'' sounded funny
and Real Computers were made out of drums and vacuum tubes,
Real Programmers wrote in machine code.
Not FORTRAN. Not RATFOR. Not, even, assembly language.
Raw, unadorned, inscrutable hexadecimal numbers.
Lest a whole new generation of programmers
grow up in ignorance of this glorious past,
I feel duty-bound to describe,
as best I can through the generation gap,
how a Real Programmer wrote code.
I'll call him Mel,
because that was his name.
Mel is most likely a fictional programmer, although the story is told as a true story and uses real machines and real languages as examples. This story is clearly written to be read by computer programmers and as such it is full of technical terms and jargon. The very feats that mark Mel as a Real Programmer described later in the story are amazing only to the person who knows something about programming. In a companion to this paper I have included the entire Story of Mel along with extensive annotations that should make it more accessible to non-programmers.
Mel comes rom the golden age of hackers when computers were simple enough to be programmed by writing directly in the binary language of the machine. Digital computers process all information in binary notation. The nature of the switches used to build computers is such that the most fundamental operation a computer can do is simply recognize the difference between the representation of a 1 and a 0. If 1's and 0's are all the machine can understand at the most basic level, then programming directly in the language of the machine involves writing down long strings of 1's and 0's. There is a slight simplification of this notation that allows these numbers to be written in base 16 instead of base 2 (the hexadecimal numbers referred to in the first stanza), but the result is largely the same: a sea of mysterious numbers that is all but indecipherable to the normal person.
In order to make these programs easier to write and understand, they can be abstracted into a symbolic form. The first abstraction is assembly language, where machine operations are described in words and those words are translated into binary numbers by a program called an assembler. A higher abstraction would be a like FORTRAN. Operations are described in a more abstract way in FORTRAN statements, the FORTRAN program is translated into assembly language by a compiler, and then the assembly language is translated into machine code by an assembler. With every abstraction, however, there is a loss of control. For complete control over the inner workings of the machine, direct expression in machine language may be required. Even in the days in which The Story of Mel is set there were assemblers available, but the amazing things that Mel was able to do required the absolute control that comes from rejecting the abstractions and programming directly in the machine's language.
The story describes how Mel used these numbers to control a cumbersome computer from the late 1950's to play blackjack, and how the teller of the story was assigned years later to understand and modify the program to change the odds in favor of the human player and let the customer win. In the end, the teller of the story discovers some of the amazing tricks used by Mel in writing his programs and decides to give up trying to modify the program: both because finding and changing the targeted part of the program would be very difficult, and also because of his awe and respect for the code of a Real Programmer and his feeling that as the work of a Real Programmer the code should not be altered.