From My Collection
Computers
The Genesis of C
by Ian Cargill (with apologies to the original authors)
(First appeared in Vol 7 Issue 4 of C Vu, the journal of the Assn of C and C++ Users)
- In the beginning Dennis created the compiler and the preprocessor.
- And the program was without form, and void; and assembler was upon the face of
the coding sheets. And the Spirit of Dennis moved upon the face of the programmers.
- And Dennis said, Let there be compilation: and there was compilation.
- And Dennis saw the compilation, that it was good: and Dennis divided the
keywords from the identifiers.
- And Dennis called the compiler C, and the darkness he called Assembler. And
the compiler and the preprocessor were the 0.1 beta release.
- And Dennis said, Let there be operators in the midst of the statements, and
let it divide the operands from the operands.
- And Dennis made the built-in types, and divided the integers which were under
the CPU from the floats which were under the floating point processor: and
it was so.
- And Dennis called the code modules functions. And the compiler and the
preprocessor were the 0.2 beta release.
- And Dennis said, Let the operands under the compiler be gathered together
unto one place, and let the precedence rules appear: and it was so.
- And Dennis called the precedence rules a good joke; and the gathering together
of the operands called he Memory-Test: and Dennis saw that it was a bit of a
hoot.
- And Dennis said, Let the comparison operators bring forth 1 or 0, the
pseudo-boolean, and the short-circuiting operators after his kind, whose
result is in itself, a sort-of boolean: and it was so.
- And the relational operators brought forth logical operators, and logical
expressions yielding pseudo-booleans after his kind, and the comparison
operators yielding 0 or 1, whose value was in itself, after his kind: and
Dennis saw that it was still a bit of a hoot.
- And the compiler and the preprocessor were the 0.3 beta release.
- And Dennis said, Let there be loops in the statements of the compiler to divide
the code into blocks; and let them be for creating off-by-one errors:
- And let them be loops in the code of the compiler to give loops around the code: and it was so.
- And Dennis made two great statements; the greater, if, to rule the day, and
the lesser, switch, to rule the night: he made the else also.
- And Dennis set them in the code of the compiler to give selection upon the data values,
- And to decide between this and that, and to divide the EOF from the valid
characters: and Dennis saw that it was good.
- And the compiler and the preprocessor were the 0.4 beta release.
- And Dennis said, Let the operands bring forth abundantly the subtle bugs that
hath life, and memory leaks that keep the programmer guessing.
- And Dennis created great structures, and every array, which the pointers were
confused with, after their kind, and every indirection operator after his
kind: and Dennis saw that it was good.
- And Dennis blessed them, saying, Be fruitful, and multiply, and fill the code
in the compilers, and let implicit casts multiply in the code.
- And the compiler and the preprocessor were the 0.5 beta release.
- And Dennis said, Let the compiler bring forth the obfuscated programs after
his kind, utilities, and operating systems, and beasts of compilers after
his kind: and it was so.
- And Dennis made the compilers of the C language after his kind, and programs
after their kind, and every thing that creepeth upon the Unix file system
after his kind: and Dennis saw that it was good.
- And Dennis said, Let us make programmers in our image, after our likeness:
and let them have dominion over the compilers of the C language, and over
the operating system calls, and over the file system, and over all the heap
memory, and over every little utility that creepeth upon the system.
- So Dennis created programmers in his own image, in the image of Dennis created
he him; male and female created he them, though inexplicably more of one than
the other.
- And Dennis blessed them, and Dennis said unto them, Be fruitful, and multiply,
and replenish the compiler, and subdue it: and make it an ANSI standard, and
then an ISO standard.
- And Dennis said, Behold, I have given you every operator which is
necessary,
and every statement, in which is the form of a few keywords; to you it
shall be easy.
- And Dennis saw every thing that he had made, and, behold, it was very good.
And the compiler and the preprocessor were the 0.6 beta release.
- Thus the compiler and the pre-processor were finished, and all the host of them.
- And on the seventh day Dennis issued the 1.0 release of the compiler; and he
rested on the seventh day from all his work which he had made.
- And Dennis blessed the seventh day, and sanctified it: because that in it he
had rested from all his work which Dennis created and made.
- These are the generations of the compiler and the pre-processor when they were
created, in the day that Dennis made the pre-processor and the compiler.