ABSTRACT
The true language of computers is a stream of 1s and 0s-bits. Everything in the computer, be it numbers or
text or program, spreadsheet or database or 3-D rendering, is nothing but an array of bits. The meaning of the
bits is in the ‘‘eye of the beholder’’; it is determined entirely by context. Bits are not a useful medium for
human consumption. Instead, we insist that what we read be formatted spatially and presented in a modest
range of visually distinguishable characters. 0 and 1 arranged in a dense, page-filling array do not fulfill these
requirements in any way. The several languages that are presented in this handbook are all intended to make
something readable to two quite different readers. On the one hand, they serve the human reader with his/her
requirements on symbols and layout; on the other, they provide a grammatically regular language for inter-
pretation by a compiler. A compiler, of course, is normally a program running on a computer, but human
beings can and sometimes do play both sides of this game. They want to play with both the input and output.
Such accessibility requires that not only the input but the output of the compilation process be comfortably
readable by humans. The language of the input is called a high-level language (HLL). Examples are C, Pascal,
Ada and Modula II. They are designed to express both regularly and concisely the kinds of operations and the
kinds of constructs that programmers manipulate. The output end of the compiler generates object code —a
generally unreadable, binary representation of machine language, lacking only the services of a linker to turn
it into true machine language. The language that has been constructed to represent object code for human
consumption is assembly language. That is the subject of this section.