511 lines
23 KiB
Plaintext
511 lines
23 KiB
Plaintext
|
|
|||
|
Real Programmers... p. 1
|
|||
|
|
|||
|
"Real Programmers Don't Use PASCAL"
|
|||
|
|
|||
|
Back in the good old days -- the "Golden Era" of computers, it
|
|||
|
was easy to separate the men from the boys (sometimes called "Real
|
|||
|
Men" and "Quiche Eaters" in the literature). During this period, the
|
|||
|
Real Men were the ones that understood computer programming, and the
|
|||
|
Quiche Eaters were the ones that didn't. A real computer programmer
|
|||
|
said things like "DO 10 I=1,10" and "ABEND" (they actually talked in
|
|||
|
capital letters, you understand), and the rest of the world said
|
|||
|
things like "computers are too complicated for me" and "I can't relate
|
|||
|
to computers -- they're so impersonal". (A previous work [1] points
|
|||
|
out that Real Men don't "relate" to anything, and aren't afraid of
|
|||
|
being impersonal.)
|
|||
|
|
|||
|
But, as usual, times change. We are faced today with a world
|
|||
|
in which little old ladies can get computers in their microwave ovens,
|
|||
|
12-year-old kids can blow Real Men out of the water playing Asteroids
|
|||
|
and Pac-Man, and anyone can buy and even understand their very own
|
|||
|
Personal Computer. The Real Programmer is in danger of becoming
|
|||
|
extinct, of being replaced by high-school students with TRASH-80's.
|
|||
|
|
|||
|
There is a clear need to point out the differences between the
|
|||
|
typical high-school junior Pac-Man player and a Real Programmer. If
|
|||
|
this difference is made clear, it will give these kids something to
|
|||
|
aspire to -- a role model, a Father Figure. It will also help explain
|
|||
|
to the employers of Real Programmers why it would be a mistake to
|
|||
|
replace the Real Programmers on their staff with 12-year-old Pac-Man
|
|||
|
players (at a considerable salary savings).
|
|||
|
|
|||
|
|
|||
|
LANGUAGES
|
|||
|
---------
|
|||
|
|
|||
|
The easiest way to tell a Real Programmer from the crowd is by
|
|||
|
the programming language he (or she) uses. Real Programmers use
|
|||
|
FORTRAN. Quiche Eaters use PASCAL. Nicklaus Wirth, the designer of
|
|||
|
PASCAL, gave a talk once at which he was asked "How do you pronounce
|
|||
|
your name?". He replied, "You can either call me by name, pronouncing
|
|||
|
it 'Veert', or call me by value, 'Worth'." One can tell immediately
|
|||
|
from this comment that Nicklaus Wirth is a Quiche Eater. The only
|
|||
|
parameter passing mechanism endorsed by Real Programmers is
|
|||
|
call-by-value-return, as implemented in the IBM\370 FORTRAN-G and H
|
|||
|
compilers. Real programmers don't need all these abstract concepts to
|
|||
|
get their jobs done -- they are perfectly happy with a keypunch, a
|
|||
|
FORTRAN IV compiler, and a beer.
|
|||
|
|
|||
|
* Real Programmers do List Processing in FORTRAN.
|
|||
|
|
|||
|
* Real Programmers do String Manipulation in FORTRAN.
|
|||
|
|
|||
|
* Real Programmers do Accounting (if they do it at all) in FORTRAN.
|
|||
|
|
|||
|
* Real Programmers do Artificial Intelligence programs in FORTRAN.
|
|||
|
|
|||
|
If you can't do it in FORTRAN, do it in assembly language. If you
|
|||
|
can't do it in assembly language, it isn't worth doing.
|
|||
|
|
|||
|
Real Programmers... p. 2
|
|||
|
|
|||
|
|
|||
|
STRUCTURED PROGRAMMING
|
|||
|
----------------------
|
|||
|
|
|||
|
The academics in computer science have gotten into the
|
|||
|
"structured programming" rut over the past several years. They claim
|
|||
|
that programs are more easily understood if the programmer uses some
|
|||
|
special language constructs and techniques. They don't all agree on
|
|||
|
exactly which constructs, of course, and the examples they use to show
|
|||
|
their particular point of view invariably fit on a single page of some
|
|||
|
obscure journal or another -- clearly not enough of an example to
|
|||
|
convince anyone. When I got out of school, I thought I was the best
|
|||
|
programmer in the world. I could write an unbeatable tic-tac-toe
|
|||
|
program, use five different computer languages, and create 1000-line
|
|||
|
programs that WORKED. (Really!) Then I got out into the Real World.
|
|||
|
My first task in the Real World was to read and understand a
|
|||
|
200,000-line FORTRAN program, then speed it up by a factor of two. Any
|
|||
|
Real Programmer will tell you that all the Structured Coding in the
|
|||
|
world won't help you solve a problem like that -- it takes actual
|
|||
|
talent. Some quick observations on Real Programmers and Structured
|
|||
|
Programming:
|
|||
|
|
|||
|
* Real Programmers aren't afraid to use GOTO's.
|
|||
|
|
|||
|
* Real Programmers can write five-page-long DO loops without
|
|||
|
getting confused.
|
|||
|
|
|||
|
* Real Programmers like Arithmetic IF statements -- they make the
|
|||
|
code more interesting.
|
|||
|
|
|||
|
* Real Programmers write self-modifying code, especially if they
|
|||
|
can save 20 nanoseconds in the middle of a tight loop.
|
|||
|
|
|||
|
* Real Programmers don't need comments -- the code is obvious.
|
|||
|
|
|||
|
* Since FORTRAN doesn't have a structured IF, REPEAT ... UNTIL, or
|
|||
|
CASE statement, Real Programmers don't have to worry about not
|
|||
|
using them. Besides, they can be simulated when necessary using
|
|||
|
assigned GOTO's.
|
|||
|
|
|||
|
Data Structures have also gotten a lot of press lately.
|
|||
|
Abstract Data Types, Structures, Pointers, Lists, and Strings have
|
|||
|
become popular in certain circles. Wirth (the above-mentioned Quiche
|
|||
|
Eater) actually wrote an entire book [2] contending that you could
|
|||
|
write a program based on data structures, instead of the other way
|
|||
|
around. As all Real Programmers know, the only useful data structure
|
|||
|
is the Array. Strings, lists, structures, sets -- these are all
|
|||
|
special cases of arrays and can be treated that way just as easily
|
|||
|
without messing up your programing language with all sorts of
|
|||
|
complications. The worst thing about fancy data types is that you have
|
|||
|
to declare them, and Real Programming Languages, as we all know, have
|
|||
|
implicit typing based on the first letter of the (six character)
|
|||
|
variable name.
|
|||
|
|
|||
|
Real Programmers... p. 3
|
|||
|
|
|||
|
|
|||
|
OPERATING SYSTEMS
|
|||
|
-----------------
|
|||
|
|
|||
|
What kind of operating system is used by a Real Programmer?
|
|||
|
CP/M? God forbid -- CP/M, after all, is basically a toy operating
|
|||
|
system. Even little old ladies and grade school students can
|
|||
|
understand and use CP/M.
|
|||
|
|
|||
|
Unix is a lot more complicated of course -- the typical Unix
|
|||
|
hacker never can remember what the PRINT command is called this week
|
|||
|
-- but when it gets right down to it, Unix is a glorified video game.
|
|||
|
People don't do Serious Work on Unix systems: they send jokes around
|
|||
|
the world on UUCP-net and write adventure games and research papers.
|
|||
|
|
|||
|
No, your Real Programmer uses OS\370. A good programmer can
|
|||
|
find and understand the description of the IJK305I error he just got
|
|||
|
in his JCL manual. A great programmer can write JCL without referring
|
|||
|
to the manual at all. A truly outstanding programmer can find bugs
|
|||
|
buried in a 6 megabyte core dump without using a hex calculator. (I
|
|||
|
have actually seen this done.)
|
|||
|
|
|||
|
OS is a truly remarkable operating system. It's possible to
|
|||
|
destroy days of work with a single misplaced space, so alertness in
|
|||
|
the programming staff is encouraged. The best way to approach the
|
|||
|
system is through a keypunch. Some people claim there is a Time
|
|||
|
Sharing system that runs on OS\370, but after careful study I have
|
|||
|
come to the conclusion that they were mistaken.
|
|||
|
|
|||
|
|
|||
|
PROGRAMMING TOOLS
|
|||
|
----------------
|
|||
|
|
|||
|
What kind of tools does a Real Programmer use? In theory, a
|
|||
|
Real Programmer could run his programs by keying them into the front
|
|||
|
panel of the computer. Back in the days when computers had front
|
|||
|
panels, this was actually done occasionally. Your typical Real
|
|||
|
Programmer knew the entire bootstrap loader by memory in hex, and
|
|||
|
toggled it in whenever it got destroyed by his program. (Back then,
|
|||
|
memory was memory -- it didn't go away when the power went off.
|
|||
|
Today, memory either forgets things when you don't want it to, or
|
|||
|
remembers things long after they're better forgotten.) Legend has it
|
|||
|
that Seymore Cray, inventor of the Cray I supercomputer and most of
|
|||
|
Control Data's computers, actually toggled the first operating system
|
|||
|
for the CDC7600 in on the front panel from memory when it was first
|
|||
|
powered on. Seymore, needless to say, is a Real Programmer.
|
|||
|
|
|||
|
One of my favorite Real Programmers was a systems programmer
|
|||
|
for Texas Instruments. One day he got a long distance call from a
|
|||
|
user whose system had crashed in the middle of saving some important
|
|||
|
work. Jim was able to repair the damage over the phone, getting the
|
|||
|
user to toggle in disk I/O instructions at the front panel, repairing
|
|||
|
system tables in hex, reading register contents back over the phone.
|
|||
|
The moral of this story: while a Real Programmer usually includes a
|
|||
|
keypunch and lineprinter in his toolkit, he can get along with just a
|
|||
|
front panel and a telephone in emergencies.
|
|||
|
|
|||
|
Real Programmers... p. 4
|
|||
|
|
|||
|
In some companies, text editing no longer consists of ten
|
|||
|
engineers standing in line to use an 029 keypunch. In fact, the
|
|||
|
building I work in doesn't contain a single keypunch. The Real
|
|||
|
Programmer in this situation has to do his work with a "text editor"
|
|||
|
program. Most systems supply several text editors to select from, and
|
|||
|
the Real Programmer must be careful to pick one that reflects his
|
|||
|
personal style. Many people believe that the best text editors in the
|
|||
|
world were written at Xerox Palo Alto Research Center for use on their
|
|||
|
Alto and Dorado computers [3]. Unfortunately, no Real Programmer
|
|||
|
would ever use a computer whose operating system is called SmallTalk,
|
|||
|
and would certainly not talk to the computer with a mouse.
|
|||
|
|
|||
|
Some of the concepts in these Xerox editors have been
|
|||
|
incorporated into editors running on more reasonably named operating
|
|||
|
systems -- EMACS and VI being two. The problem with these editors is
|
|||
|
that Real Programmers consider "what you see is what you get" to be
|
|||
|
just as bad a concept in Text Editors as it is in women. No the Real
|
|||
|
Programmer wants a "you asked for it, you got it" text editor --
|
|||
|
complicated, cryptic, powerful, unforgiving, dangerous. TECO, to be
|
|||
|
precise.
|
|||
|
|
|||
|
It has been observed that a TECO command sequence more closely
|
|||
|
resembles transmission line noise than readable text [4]. One of the
|
|||
|
more entertaining games to play with TECO is to type your name in as a
|
|||
|
command line and try to guess what it does. Just about any possible
|
|||
|
typing error while talking with TECO will probably destroy your
|
|||
|
program, or even worse -- introduce subtle and mysterious bugs in a
|
|||
|
once working subroutine.
|
|||
|
|
|||
|
For this reason, Real Programmers are reluctant to actually
|
|||
|
edit a program that is close to working. They find it much easier to
|
|||
|
just patch the binary object code directly, using a wonderful program
|
|||
|
called SUPERZAP (or its equivalent on non-IBM machines). This works
|
|||
|
so well that many working programs on IBM systems bear no relation to
|
|||
|
the original FORTRAN code. In many cases, the original source code is
|
|||
|
no longer available. When it comes time to fix a program like this,
|
|||
|
no manager would even think of sending anything less than a Real
|
|||
|
Programmer to do the job -- no Quiche Eating structured programmer
|
|||
|
would even know where to start. This is called "job security".
|
|||
|
|
|||
|
Some programming tools NOT used by Real Programmers:
|
|||
|
|
|||
|
* FORTRAN preprocessors like MORTRAN and RATFOR. The Cuisinarts of
|
|||
|
programming -- great for making Quiche. See comments above on
|
|||
|
structured programming.
|
|||
|
|
|||
|
* Source language debuggers. Real Programmers can read core dumps.
|
|||
|
|
|||
|
* Compilers with array bounds checking. They stifle creativity,
|
|||
|
destroy most of the interesting uses for EQUIVALENCE, and make it
|
|||
|
impossible to modify the operating system code with negative
|
|||
|
subscripts. Worst of all, bounds checking is inefficient.
|
|||
|
|
|||
|
* Source code maintenance systems. A Real Programmer keeps his code
|
|||
|
locked up in a card file, because it implies that its owner
|
|||
|
cannot leave his important programs unguarded [5].
|
|||
|
|
|||
|
|
|||
|
Real Programmers... p. 5
|
|||
|
|
|||
|
|
|||
|
THE REAL PROGRAMMER AT WORK
|
|||
|
---------------------------
|
|||
|
|
|||
|
Where does the typical Real Programmer work? What kind of
|
|||
|
programs are worthy of the efforts of so talented an individual? You
|
|||
|
can be sure that no Real Programmer would be caught dead writing
|
|||
|
accounts-receivable programs in COBOL, or sorting mailing lists for
|
|||
|
People magazine. A Real Programmer wants tasks of earth-shaking
|
|||
|
importance (literally!).
|
|||
|
|
|||
|
* Real Programmers work for Los Alamos National Laboratory, writing
|
|||
|
atomic bomb simulations to run on Cray I supercomputers.
|
|||
|
|
|||
|
* Real Programmers work for the National Security Agency, decoding
|
|||
|
Russian transmissions.
|
|||
|
|
|||
|
* It was largely due to the efforts of thousands of Real
|
|||
|
Programmers working for NASA that our boys got to the moon and
|
|||
|
back before the Russkies.
|
|||
|
|
|||
|
* Real Programmers are at work for Boeing designing the operating
|
|||
|
systems for cruise missiles.
|
|||
|
|
|||
|
Some of the most awesome Real Programmers of all work at the
|
|||
|
Jet Propulsion Laboratory in California. Many of them know the entire
|
|||
|
operating system of the Pioneer and Voyager spacecraft by heart. With
|
|||
|
a combination of large ground-based FORTRAN programs and small
|
|||
|
spacecraft-based assembly language programs, they are able to do
|
|||
|
incredible feats of navigation and improvisation -- hitting
|
|||
|
ten-kilometer wide windows at Saturn after six years in space,
|
|||
|
repairing or bypassing damaged sensor platforms, radios, and
|
|||
|
batteries. Allegedly, one Real Programmer managed to tuck a
|
|||
|
pattern-matching program into a few hundred bytes of unused memory in
|
|||
|
a Voyager spacecraft that searched for, located, and photographed a
|
|||
|
new moon of Jupiter.
|
|||
|
|
|||
|
The current plan for the Galileo spacecraft is to use a
|
|||
|
gravity assist trajectory past Mars on the way to Jupiter. This
|
|||
|
trajectory passes within 80 +/-3 kilometers of the surface of Mars.
|
|||
|
Nobody is going to trust a PASCAL program (or a PASCAL programmer) for
|
|||
|
navigation to these tolerances.
|
|||
|
|
|||
|
As you can tell, many of the world's Real Programmers work for
|
|||
|
the U.S. Government -- mainly the Defense Department. This is as it
|
|||
|
should be. Recently, however, a black cloud has formed on the Real
|
|||
|
Programmer horizon. It seems that some highly placed Quiche Eaters at
|
|||
|
the Defense Department decided that all Defense programs should be
|
|||
|
written in some grand unified language called "ADA" ((C), DoD). For a
|
|||
|
while, it seemed that ADA was destined to become a language that went
|
|||
|
against all the precepts of Real Programming -- a language with
|
|||
|
structure, a language with data types, strong typing, and semicolons.
|
|||
|
In short, a language designed to cripple the creativity of the typical
|
|||
|
Real Programmer. Fortunately, the language adopted by DoD has enough
|
|||
|
interesting features to make it approachable -- it's incredibly
|
|||
|
complex, includes methods for messing with the operating system and
|
|||
|
rearranging memory, and Edsgar Dijkstra doesn't like it [6].
|
|||
|
(Dijkstra, as I'm sure you know, was the author of "GoTos Considered
|
|||
|
Harmful" -- a landmark work in programming methodology, applauded by
|
|||
|
PASCAL programmers and Quiche Eaters alike.) Besides, the determined
|
|||
|
Real Programmer can write FORTRAN programs in any language.
|
|||
|
|
|||
|
Real Programmers... p. 6
|
|||
|
|
|||
|
The Real Programmer might compromise his principles and work
|
|||
|
on something slightly more trivial than the destruction of life as we
|
|||
|
know it, providing there's enough money in it. There are several Real
|
|||
|
Programmers building video games at Atari, for example. (But not
|
|||
|
playing them -- a Real Programmer knows how to beat the machine every
|
|||
|
time: no challenge in that.) Everyone working at LucasFilm is a Real
|
|||
|
Programmer. (It would be crazy to turn down the money of fifty
|
|||
|
million Star Trek fans.) The proportion of Real Programmers in
|
|||
|
Computer Graphics is somewhat lower than the norm, mostly because
|
|||
|
nobody has found a use for computer graphics yet. On the other hand,
|
|||
|
all computer graphics is done in FORTRAN, so there are a fair number
|
|||
|
of people doing graphics in order to avoid having to write COBOL
|
|||
|
programs.
|
|||
|
|
|||
|
Real Programmers... p. 7
|
|||
|
|
|||
|
|
|||
|
THE REAL PROGRAMMER AT PLAY
|
|||
|
---------------------------
|
|||
|
|
|||
|
Generally, the Real Programmer plays the same way he works --
|
|||
|
with computers. He is constantly amazed that his employer actually
|
|||
|
pays him to do what he would be doing for fun anyway (although he is
|
|||
|
careful not to express this opinion out loud). Occasionally, the Real
|
|||
|
Programmer does step out of the office for a breath of fresh air and a
|
|||
|
beer or two. Some tips on recognizing Real Programmers away from the
|
|||
|
computer room:
|
|||
|
|
|||
|
* At a party, the Real Programmers are the ones in the corner
|
|||
|
talking about operating system security and how to get around it.
|
|||
|
|
|||
|
* At a football game, the Real Programmer is the one comparing the
|
|||
|
plays against his simulations printed on 11 by 14 fanfold paper.
|
|||
|
|
|||
|
* At the beach, the Real Programmer is the one drawing flowcharts
|
|||
|
in the sand.
|
|||
|
|
|||
|
* At a funeral, the Real Programmer is the one saying "Poor George.
|
|||
|
And he almost had the sort routine working before the coronary."
|
|||
|
|
|||
|
* In a grocery store, the Real Programmer is the one who insists on
|
|||
|
running the cans past the laser checkout scanner himself, because
|
|||
|
he never could trust keypunch operators to get it right the first
|
|||
|
time.
|
|||
|
|
|||
|
Real Programmers... p. 8
|
|||
|
|
|||
|
|
|||
|
THE REAL PROGRAMMER'S NATURAL HABITAT
|
|||
|
-------------------------------------
|
|||
|
|
|||
|
What sort of environment does the Real Programmer function
|
|||
|
best in? This is an important question for the managers of Real
|
|||
|
Programmers. Considering the amount of money it costs to keep one on
|
|||
|
the staff, it's best to put him (or her) in an environment where he
|
|||
|
can get his work done.
|
|||
|
|
|||
|
The typical Real Programmer lives in front of a computer
|
|||
|
terminal. Surrounding this terminal are:
|
|||
|
|
|||
|
* Listings of all programs the Real Programmer has ever worked on,
|
|||
|
piled in roughly chronological order on every flat surface in the
|
|||
|
office.
|
|||
|
|
|||
|
* Some half-dozen or so partly filled cups of cold coffee.
|
|||
|
Occasionally, there will be cigarette butts floating in the
|
|||
|
coffee. In some cases, the cups will contain Orange Crush.
|
|||
|
|
|||
|
* Unless he is very good, there will be copies of the OS JCL manual
|
|||
|
and the Principles of Operation open to some particularly
|
|||
|
interesting pages.
|
|||
|
|
|||
|
* Taped to the wall is a line-printer Snoopy calendar for the year
|
|||
|
1969.
|
|||
|
|
|||
|
* Strewn about the floor are several wrappers for peanut butter
|
|||
|
filled cheese bars -- the type that are made pre-stale at the
|
|||
|
bakery so they can't get any worse while waiting in the vending
|
|||
|
machine.
|
|||
|
|
|||
|
* Hiding in the top left-hand drawer of the desk is a stash of
|
|||
|
double-stuff Oreos for special occasions.
|
|||
|
|
|||
|
* Underneath the Oreos is a flowcharting template, left there by
|
|||
|
the previous occupant of the office. (Real Programmers write
|
|||
|
programs, not documentation. Leave that to the maintenance
|
|||
|
people.)
|
|||
|
|
|||
|
|
|||
|
The Real Programmer is capable of working 30, 40, even 50
|
|||
|
hours at a stretch, under intense pressure. In fact, he prefers it
|
|||
|
that way. Bad response time doesn't bother the Real Programmer -- it
|
|||
|
gives him a chance to catch a little sleep between compiles. If there
|
|||
|
is not enough schedule pressure on the Real Programmer, he tends to
|
|||
|
make things more challenging by working on some small but interesting
|
|||
|
part of the problem for the first nine weeks, then finishing the rest
|
|||
|
in the last week, in two or three 50-hour marathons. This not only
|
|||
|
impresses the hell out of his manager, who was despairing of ever
|
|||
|
getting the project done on time, but creates a convenient excuse for
|
|||
|
not doing the documentation. In general:
|
|||
|
|
|||
|
* No Real Programmer works 9 to 5 (unless it's the ones at night).
|
|||
|
|
|||
|
* Real Programmers don't wear neckties.
|
|||
|
|
|||
|
* Real Programmers don't wear high-heeled shoes.
|
|||
|
|
|||
|
* Real Programmers arrive at work in time for lunch [9].
|
|||
|
|
|||
|
* A Real Programmer might or might not know his wife's name. He
|
|||
|
does, however, know the entire ASCII (or EBCDIC) code table.
|
|||
|
|
|||
|
* Real Programmers don't know how to cook. Grocery stores aren't
|
|||
|
open at three in the morning. Real Programmers survive on
|
|||
|
Twinkies and coffee.
|
|||
|
|
|||
|
Real Programmers... p. 9
|
|||
|
|
|||
|
THE FUTURE
|
|||
|
----------
|
|||
|
|
|||
|
What of the future? It is a matter of some concern to Real
|
|||
|
Programmers that the latest generation of computer programmers are not
|
|||
|
being brought up with the same outlook on life as their elders. Many
|
|||
|
of them have never seen a computer with a front panel. Hardly anyone
|
|||
|
graduating from school these days can do hex arithmetic without a
|
|||
|
calculator. College graduates these days are soft -- protected from
|
|||
|
the realities of programming by source level debuggers, text editors
|
|||
|
that count parentheses, and "user friendly" operating systems. Worst
|
|||
|
of all, some of these alleged "computer scientists" manage to get
|
|||
|
degrees without ever learning FORTRAN! Are we destined to become an
|
|||
|
industry of Unix hackers and PASCAL programmers?
|
|||
|
|
|||
|
From my experience, I can only report that the future is
|
|||
|
bright for Real Programmers everywhere. Neither OS\370 nor FORTRAN
|
|||
|
show any signs of dying out, despite all the efforts of PASCAL
|
|||
|
programmers the world over. Even more subtle tricks, like adding
|
|||
|
structured coding constructs to FORTRAN have failed. Oh sure, some
|
|||
|
computer vendors have come out with FORTRAN 77 compilers, but every
|
|||
|
one of them has a way of converting itself back into a FORTRAN 66
|
|||
|
compiler at the drop of an option card -- to compile DO loops like God
|
|||
|
meant them to be.
|
|||
|
|
|||
|
Even Unix might not be as bad on Real Programmers as it once
|
|||
|
was. The latest release of Unix has the potential of an operating
|
|||
|
system worthy of any Real Programmer -- two different and subtly
|
|||
|
incompatible user interfaces, an arcane and complicated teletype
|
|||
|
driver, virtual memory. If you ignore the fact that it's
|
|||
|
"structured", even 'C' programming can be appreciated by the Real
|
|||
|
Programmer: after all, there's no type checking, variable names are
|
|||
|
seven (ten? eight?) characters long, and the added bonus of the
|
|||
|
Pointer data type is thrown in -- like having the best parts of
|
|||
|
FORTRAN and assembly language in one place. (Not to mention some of
|
|||
|
the more creative uses for #define.)
|
|||
|
|
|||
|
No, the future isn't all that bad. Why, in the past few
|
|||
|
years, the popular press has even commented on the bright new crop of
|
|||
|
computer nerds and hackers ([7] and [8]) leaving places like Stanford
|
|||
|
and M.I.T. for the Real World. From all evidence, the spirit of Real
|
|||
|
Programming lives on in these young men and women. As long as there
|
|||
|
are ill-defined goals, bizarre bugs, and unrealistic schedules, there
|
|||
|
will be Real Programmers willing to jump in and Solve The Problem,
|
|||
|
saving the documentation for later. Long live FORTRAN!
|
|||
|
|
|||
|
Real Programmers... p. 10
|
|||
|
|
|||
|
ACKNOWLEGEMENT
|
|||
|
--------------
|
|||
|
|
|||
|
I would like to thank Jan E., Dave S., Rich G., Rich E., for
|
|||
|
their help in characterizing the Real Programmer, Heather B. for the
|
|||
|
illustration, Kathy E. for putting up with it, and atd!avsdS:mark for
|
|||
|
the initial inspiration.
|
|||
|
|
|||
|
|
|||
|
REFERENCES
|
|||
|
----------
|
|||
|
|
|||
|
[1] Feirstein, B., "Real Men don't Eat Quiche", New
|
|||
|
York, Pocket Books, 1982.
|
|||
|
|
|||
|
[2] Wirth, N., "Algorithms + Data Structures =
|
|||
|
Programs", Prentice Hall, 1976.
|
|||
|
|
|||
|
[3] Ilson, R., "Recent Research in Text Processing",
|
|||
|
IEEE Trans. Prof. Commun., Vol. PC-23, No. 4,
|
|||
|
Dec. 4, 1980.
|
|||
|
|
|||
|
[4] Finseth, C., "Theory and Practice of Text Editors
|
|||
|
-- or -- a Cookbook for an EMACS", B.S. Thesis,
|
|||
|
MIT/LCS/TM-165, Massachusetts Institute of
|
|||
|
Technology, May 1980.
|
|||
|
|
|||
|
[5] Weinberg, G., "The Psychology of Computer
|
|||
|
Programming", New York, Van Nostrand Reinhold,
|
|||
|
1971, p. 110.
|
|||
|
|
|||
|
[6] Dijkstra, E., "On the GREEN language submitted to
|
|||
|
the DoD", Sigplan notices, Vol. 3 No. 10, Oct
|
|||
|
1978.
|
|||
|
|
|||
|
[7] Rose, Frank, "Joy of Hacking", Science 82, Vol. 3
|
|||
|
No. 9, Nov 82, pp. 58-66.
|
|||
|
|
|||
|
[8] "The Hacker Papers", Psychology Today, August 1980.
|
|||
|
|
|||
|
[9] sdcarl!lin, "Real Programmers", UUCP-net, Thu Oct
|
|||
|
21 16:55:16 1982
|
|||
|
|