Part 9 - (The Future of Real Programmers) - the final part
--------------------------------------------------What of 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"
opearing 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 furure is bright for Real Programmers everywhere. Neither
OS/370 nor FORTRAN have show any sign 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 Unis 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 incompatble
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 of #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 corp 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 theses young men and women. As
long as there are ill-defined goals, bizzare bugs, and unrealistic schedules, there will be Real Programmers
willing to jump in and Sovle the Problem, saving the documentation for later. Long live FORTRAN!
ACKNOWLEDGEMENT
---------------
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] scadrl!lin, "Real Programmers", UUCP-net, Thu Oct 21 16:55:16 1982
DICTIONARY
----------
ABEND:
The IBM term for ABortive END. It's what you do to bring the system down when all else fails. Also,
(jokingly) the command issued to the system to enable the third-shift operators to leave early (from
the german Guten Abend, meaning good evening).
Real Men Don't Eat Quiche:
It's a wonderful little booklet, describing with a lot of humor, how a Modern Real Man can live in a world
of quiche eaters.
Cuisinart:
State-of-the-art, and rather expensive, brand of food processor.
Call-by-value-return:
This is how FORTRAN compilers usually pass parameters to subroutines. It's not the same as call by
reference (or by name), since you are not passing the addresses (refrences to) each individual
parameter, but rather both the caller and callee know where the parameter block is and deal with it
appropriately.
Arithmetic-IF statements:
'Interesting' FORTRAN constructs: An arithmetic if is a statement like this:
IF (expression) label1,label2,label3
If expression evaluates to negative, zero, or possitive, the execution will continue at label1, label2 or
label3, respectively. In REAL FORTRAN, of course, expression is just an integer variable!
A computed GOTO is like the ON GOTO in BASIC (yuck!):
GOTO (label1,label2,...,labeln),N
where N is an index into the list of labels. If N<0 or N>n the following statement is executed.
An assigned GOTO is a bit different. You can assign a label to an integer variable using the ASSIGN
statement; you can say ASSIGN 10 TO IF00, and then use IF00 as a label (e.g., GOTO IF00). The
GOTO IF00 (label1,label2,...,labeln) statement branches to that label matched by IF00. If non matched
execution continues. It's used when IF00 can have been set to a variety of labels, but you only want
to branch if it has been set to some particular values. You can say it's a membership operation!
Now, how many CS seniors know that, I wonder!
CP/M:
Control Program for Microcomputers. A very antiquated (ca 1978?) rudimentary operating system for
8080-based microcomputers. Would have been picked up by IBM instead of MSDOS, (then called
QDOS) had the president of Digital Research not been out to lunch with instructions not to be
inturrupted!
IJK305I:
IBM messages are usually three letters (indicating the module the error occured in), followed by a
number, followed by a letter indicating the severity of the error. I is Information. IJK is a fictitious
prefix. The closest to that one is IKJ, which is the MVS (then OS) nucleus, if my memory serves me
right. (I actually tried to look up this message when I was working for IBM!)
Orange Criush:
Fluorescent-orange colored liquid, kind of like orange soda without the carbonation. Gross.
Peanut-butter-filled-cheese-bars:
Vending-machine type of junk food. Also available at supermarket checkout counters. These are
cheese-flavored (just flavored, no real cheese) crackers filled with rancid peanut butter or
mock-cheese spread. Usually three one-square-inch sandwiches to a package.
Double-stuffed Oreos:
A brand of cookies made by Nabisco. They are 'sandwich' cookies, two 2-inch, very dark, supposedly
chocolate-flavor cookies, with a vanilla-flavored stuffing. They are very common in in the US.
Twinkies:
YA example of junk food. These are small cakes filled with some sort of custard. They are not too bad
(taste-wise).
--- "the C shell is flakier than a snowstorm." (Guy Harris)
--------------------------------------------------------------------------
First appeared in _DATAMATON_, July 1983, pp. 263-265 (Readers' Forum),
under the heading "Real Programmers Don't Use PASCAL"
--------------------------------------------------------------------------