More About Real Programmers
Quick Reference
What Do Real Programmers Do?
- Real programmers don't write specs. Users should consider
themselves lucky to get any programs at all and take what they get.
- Real programmers don't comment their code. If it was hard to
write, it should be hard to read.
- Real programmers don't write application programs, they program right down on the bare metal. Application programming is for feebs who can't do systems programming.
- Real programmers don't eat quiche. Real programmers don't even know how to
spell quiche. They eat Twinkies, Coke and palate-scorching Szechwan food.
- Real programmers don't draw flowcharts. Flowcharts are, after all, the
illiterate's form of documentation. Cavemen drew flowcharts; look how
much it did for them.
- Real programmers don't read manuals. Reliance on a reference is a hallmark
of the novice and the coward.
- Real programmers programs never work right the first time.
But if you throw them on the machine they can be patched
into working in only a few 30-hours debugging sessions.
- Real programmers don't use Fortran. Fortran is for wimpy engineers who
wear white socks, pipe stress freaks, and crystallography weenies. They
get excited over finite state analysis and nuclear reactor simulation.
- Real programmers don't use COBOL. COBOL is for wimpy application
programmers.
- Real programmers never work 9 to 5. If any real programmers
are around at 9 am, it's because they were up all night.
- Real programmers don't write in BASIC. Actually, no programmers write in BASIC, after the age of 12.
- Real programmers don't document. Documentation is for simps
who can't read the listings or the object deck.
- Real programmers don't write in Pascal, or Bliss, or Ada, or
any of those pinko computer science languages. Strong typing
is for people with weak memories.
- Real programmers know better than the users what they need.
- Real programmers think structured programming is a communist
plot.
- Real programmers don't use schedules. Schedules are for manager's toadies. Real programmers like to keep their manager
in suspense.
- Real programmers think better when playing adventure.
- Real programmers don't use PL/I. PL/I is for insecure momma's boys
who can't choose between COBOL and Fortran.
- Real programmers don't use APL, unless the whole program can be written
on one line.
- Real programmers don't use LISP. Only effeminate programmers use more
parentheses than actual code.
- Real programmers disdain structured programming. Structured programming
is for compulsive, prematurely toilet-trained neurotics who wear neckties
and carefully line up sharpened pencils on an otherwise uncluttered desk.
- Real programmers don't like the team programming concept. Unless, of
course, they are the Chief Programmer.
- Real programmers have no use for managers. Managers are a necessary evil.
Managers are for dealing with personnel bozos, bean counters, senior
planners and other mental defectives.
- Real programmers scorn floating point arithmetic. The decimal point was
invented for pansy bedwetters who are unable to "think big."
- Real programmers don't drive clapped-out Mavericks. They prefer BMWs,
Lincolns or pick-up trucks with floor shifts. Fast motorcycles are
highly regarded.
- Real programmers don't believe in schedules. Planners make up schedules.
Managers "firm up" schedules. Frightened coders strive to meet schedules.
Real programmers ignore schedules.
- Real programmers like vending machine popcorn. Coders pop it in the
microwave oven. Real programmers use the heat given off by the cpu.
They can tell what job is running just by listening to the rate of popping.
- Real programmers know every nuance of every instruction and use them all
in every real program. Puppy architects won't allow execute instructions
to address another execute as the target instruction. Real programmers
despise such petty restrictions.
- Real programmers don't bring brown bag lunches to work. If the vending
machine sells it, they eat it. If the vending machine doesn't sell it,
they don't eat it. Vending machines don't sell quiche.
- Real programmers know that the word is disk, not disc. Disc is
a definite commie plot put forth by blubbering quiche eaters.
Real Computer Scientists
- Real Computer Scientists don't write code. They occasionally
tinker with programming systems, but those are so high level that
they hardly count (and rarely count accurately, precision is for
applications).
- Real Computer Scientists don't comment their code. The
identifiers are so long they can't afford the disk space.
- Real Computer Scientists don't write the user interface, they
merely argue about what they should look like.
- Real Computer Scientists don't eat quiche. They shun Schezuan
food since the hackers discovered it. Many Real Computer Scientists
consider eating an implementation detail. (Others break down and eat
with the hackers, but only if they can have ice cream for dessert).
- If it doesn't have a programming environment complete with
interactive debugger, structure editor and extensive cross module
type checking, Real Computer Scientists won't be seen tinkering with
it. They may have to use it to balance their checkbooks, as their own
systems can't.
- Real Computer Scientists don't program in assembler. They
don't write in anything less portable than a number two pencil.
- Real Computer Scientists don't debug programs, they
dynamically modify them. This is safer, since no one has invented a
way to do anything dynamic to FORTRAN, COBOL or BASIC.
- Real Computer Scientists like C's structured constructs, but
they are suspicious of it because it's compiled. (Only Batch Freaks
and Efficiency Weirdos bother with compilers, they're soooo undynamic).
- Real Computer Scientists play Go. They have nothing against
the concept of mountain climbing, but the actual climbing is an
implementation detail best left to programmers
- Real Computer Scientists admire ADA for its overwhelming
esthetic value, but they find it difficult to actually program in, as
it is much too large to implement. Most Computer Scientists don't
notice this because they are still arguing over what else to add to
ADA.
- Real Computer Scientists work from 5 pm to 9 am because
that's the only time they can get the 8 megabytes of main memory they
need to edit specs. (Real work starts around 2 am when enough MIPS
are free for their dynamic systems). Real Computer Scientists find it
hard to share 3081s when they are doing 'REAL' work.
- Real Computer Scientists only write specs for languages that
might run on future hardware. Nobody trusts them to write specs for
anything Homo Sapiens will ever be able to fit on a single planet.
- Real Computer Scientists like planning their own environments
to use bit mapped graphics. Bit mapped graphics is great because no
one can afford it, so their systems can be experimental.
- Real Computer Scientists regret the existence of PL/1, PASCAL
and LISP. ADA is getting there, but it still allows people to make
mistakes.
- Real Computer Scientists love the concept of users. Users are
always real impressed by the stuff computer scientists are talking
about; it sure sounds better than the stuff they are being forced to
use now.
- Real Computer Scientists despise the idea of actual hardware.
Hardware has limitations, software doesn't. It's a real shame that
Turing machines are so poor at I/O.
- Real Computer Scientists love conventions. No one is expected
to lug a 3081 attached to a bit map screen to a convention, so no one
will ever know how slow their systems run.
Real Software Engineers Don't Read Dumps
- Real Software Engineers don't read dumps. They never generate
them, and on the rare occasions that they come across them, they are
vaguely amused.
- Real Software Engineers don't comment their code. The
identifiers are so mnemonic they don't have to.
- Real Software Engineers don't write applications programs,
they implement algorithms. If someone has an application that the
algorithm might help with, that's nice. Don't ask them to write the
user interface, though.
- Real Software Engineers eat quiche.
- If it doesn't have recursive function calls, Real Software
Engineers don't program in it.
- Real Software Engineers don't program in assembler. They
become queasy at the very thought.
- Real Software Engineers don't debug programs, they verify
correctness. This process doesn't necessarily involve executing
anything on a computer, except perhaps a Correctness Verification Aid
package.
- Real Software Engineers like C's structured constructs, but
they are suspicious of it because they have heard that it lets you
get "close to the machine."
- Real Software Engineers play tennis. In general, they don't
like any sport that involves getting hot and sweaty and gross when
out of range of a shower. (Thus mountain climbing is Right Out). They
will occasionally wear their tennis togs to work, but only on very
sunny days.
- Real Software Engineers admire PASCAL for its discipline and
Spartan purity, but they find it difficult to actually program in.
They don't tell this to their friends, because they are afraid it
means they are somehow Unworthy.
- Real Software Engineers work from 9 to 5, because that is the
way the job is described in the formal spec. Working late would feel
like using an undocumented external procedure.
- Real Software Engineers write in languages that have not
actually been implemented for any machine, and for which only the
formal spec (in BNF) is available. This keeps them from having to
take any machine dependencies into account. Machine dependencies make
Real Software Engineers very uneasy.
- Real Software Engineers don't write in ADA, because the
standards bodies have not quite decided on a
formal spec yet.
- Real Software Engineers like writing their own compilers,
preferably in PROLOG (they also like writing them in unimplemented
languages, but it turns out to be difficult to actually RUN these).
- Real Software Engineers regret the existence of COBOL,
FORTRAN and BASIC; PL/1 is getting there, but it is not nearly
disciplined enough; far too much built-in function.
- Real Software Engineers aren't too happy about the existence
of users, either. Users always seem to have the wrong idea about what
the implementation and verification of algorithms is all about.
- Real Software Engineers don't like the idea of some
inexplicable and greasy hardware several aisles away that may stop
working at any moment. They have a great distrust of hardware people,
and wish that systems could be virtual at ALL levels. They would like
personal computers (you know no one's going to trip over something
and kill your DFA in mid-transit), except that they need 8 megabytes
to run their Correctness Verification Aid packages.
- Real Software Engineers think better while playing WFF 'N'
PROOF.
UNIX and C a Hoax
In an announcement that has stunned the computer industry, Ken Thompson,
Dennis Ritchie and Brian Kernighan admitted that the Unix operating
system and C programming language created by them is an elaborate April
Fools prank kept alive for over 20 years. Speaking at the recent
UnixWorld Software Development Forum, Thompson revealed the following:
"In 1969, AT & T had just terminated their work with the GE/Honeywell/
AT & T
Multics project. Brian and I had just started working with an early
release of Pascal from Professor Nichlaus Wirth's ETH labs in
Switzerland and we were impressed with its elegant simplicity and
power. Dennis had just finished reading 'Bored of the Rings', a
hilarious National Lampoon parody of the great Tolkien 'Lord of the
Rings' trilogy. As a lark, we decided to do parodies of the Multics
environment and Pascal. Dennis and I were responsible for the operating
environment. We looked at Multics and designed the new system to be as
complex and cryptic as possible to maximize casual users' frustration
levels, calling it Unix as a parody of Multics, as well as other more
risque allusions. Then Dennis and Brian worked on a truly warped
version of Pascal, called 'A'. When we found others were actually
trying to create real programs with A, we quickly added additional
cryptic features and evolved into B, BCPL and finally C. We stopped
when we got a clean compile on the following syntax:
for(;P("\n"),R-;P("|"))for(e=C;e-;
P("_"+(*u++/8)%2))P("| "+(*u/4)%2);
To think that modern programmers would try to use a language that
allowed such a statement was beyond our comprehension! We actually
thought of selling this to the Soviets to set their computer science
progress back 20 or more years. Imagine our surprise when AT &T and
other US corporations actually began trying to use Unix and C! It has
taken them 20 years to develop enough expertise to generate even
marginally useful applications using this 1960's technological parody,
but we are impressed with the tenacity (if not common sense) of the
general Unix and C programmer. In any event, Brian, Dennis and I have
been working exclusively in Pascal on the Apple Macintosh for the past
few years and feel really guilty about the chaos, confusion and truly
bad programming that have resulted from our silly prank so long ago."
Major Unix and C vendors and customers, including AT & T, Microsoft,
Hewlett-Packard, GTE, NCR, and DEC have refused comment at this time.
Borland International, a leading vendor of Pascal and C tools,
including the popular Turbo Pascal, Turbo C and Turbo C++, stated they
had suspected this for a number of years and would continue to enhance
their Pascal products and halt further efforts to develop C. An IBM
spokesman broke into uncontrolled laughter and had to postpone a
hastily convened news conference concerning the fate of the RS-6000,
merely stating 'VM will be available Real Soon Now'. In a cryptic
statement, Professor Wirth of the ETH institute and father of the
Pascal, Modula 2 and Oberon structured languages, merely stated that P.
T. Barnum was correct.
In a related late-breaking story, usually reliable sources are stating
that a similar confession may be forthcoming from William Gates
concerning the MS-DOS and Windows operating environments. And IBM
spokesman have begun denying that the Virtual Machine (VM) product is
an internal prank gone awry.
{COMPUTERWORLD 1 April}
{contributed by Bernard L. Hayes}
Return to Languages index