Collage 051 H u m o u r N e t 1995
Welcome to Collage 51 ... but first, a correction from Collage 50:
Regarding our world-record-seeking heroine, who calculated that
her 350 men will each receive a 104-second, uh, slot, and my
claim that 104 seconds leaves only about 1.2 seconds for context
switching (I'm using that term here because this Collage contains
the next "Real Programmers Don't" installment) ... well, I
realized last night that I did my subtraction backward, and she's
actally coming up about 400 seconds SHORT with that estimate.
And no one caught me on that ... you guys are spending so much
time making sure that I'm numbering my Collages right that you're
missing the really key stuff here!
Anyway, it was pointed out that, even if Guinness & Co. doesn't
buy into her world-record idea, she's sure to get a guest, uh,
*slot* on Howard Stern ...
And back to Collage 51: "Real Programmers, The Adventure Continues"
(Part 2 of 3 ... )
- Vince Sabio
HumourNet Moderator
HumourNet@telephonet.com
____________________________________________________________________
Opener (above) Copyright 1995 by Vincent Sabio
Permission is hereby granted to forward or post this "Collage";
please observe the guidelines stated at the end of the message.
____________________________________________________________________
SUBJ: Real Programmers, Part II: The Adventure Continues ...
"Real Programmers Don't Use PASCAL"
+------------------------------------------------------+
|Ed Post, "Real Programmers Don't Use Pascal", |
|_DATAMATION_, July 1983, pp. 263-265 (Readers' Forum).|
+------------------------------------------------------+
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.
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 GOTOs.
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.
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.
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].
********************************************************************
Anyone Without a Sense of Humor Is At The Mercy of The Rest of Us.
********************************************************************
"HumourNet" is brought to you by Lyris -- an innovative new e-mail
list server from The Walter Shelby Group, Ltd. For more information
on Lyris, see .
To subscribe to the "HumourNet" mailing list, send the following
command to :
subscribe HumourNet your_name, your_city, your_state or country
where "your_name" is your real name, etc. If you run into problems,
then either (1) send any message to for
a more detailed set of instructions, (2) subscribe via Lyris's Web
interface at , or (3) send a *detailed*
description of the problem to .
To unsubscribe, visit our Web interface at
or refer to your Welcome message for detailed instructions.
For instructions on contributing to HumourNet, send any message to
.
>>> Note: Attributions in Collage openers are to the contributors,
not necessarily the authors. Authors' credits are included in the
text wherever possible. <<<
The HumourNet archives can be accessed via the Web and FTP:
Web:
FTP:
Permission is granted to forward or post this Collage, provided that
1) the message is forwarded/posted in its ENTIRETY, from the line
containing the Collage number and date to the end of this trailer,
and 2) no fee is charged.
There are "relaxed" forwarding/posting guidelines available; for a
copy of them, send any message to , or
refer to your Welcome message.
********************************************************************
"HumourNet" is a trademark of HumourNet Communications, Ltd.
********************************************************************