home *** CD-ROM | disk | FTP | other *** search
-
- ---------------------------------------
- - Real Programmers Don't Write Pascal -
- ---------------------------------------
-
- . Back in the good old days - the "Golden Era" of computers, it was easy to
- separate the real men from the boys (sometimes called "Real Men" and the
- "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 talked in capital letters, you understand. 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 chance. 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
- understand their very own personal computer. The Real Programmer is in danger
- of becoming extinct, of being replaced by high school students with Commodores
- and Ataris (edited for taste). There is a clear need to point out the
- differences between the typical high-school junior Pac-Man player and the 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 to explain to
- the employer 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 very
- considerable savings).
-
- 1.1 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 call
- me by my name, pronouncing it 'Veert', or you can call me by my value, 'Worth'
- ". One can immediately tell from this comment that Nicklaus Wirth is a Quiche
- Eater. The only parameter passing mechanism that Real Programmers endorse is
- "call by value - return", as implimented in the IBM/370 FORTRAN G and H
- compilers. Real Programmers don't need all those 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 Intellegence programs in FORTRAN. If you can't
- do it in FORTRAN, do it in Assembly Language, or its not worth doing.
-
- 1.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
- clearly understood if the programmer uses some special language constructs, of
- course, and examples they use to show their 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 was to read and
- understand a 20,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
- will not 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 structured IF, REPEAT... UNTIL, or CASE statements,
-
- Real Programmers don't have to worry about not using them. Besides, all those
- structures can be simulated, when necessary, by using assigned GOTO's.
-
- . Data structures have also gotten alot of press lately. Abstract Data
- Types, Structures, Pointers, Lists, and Strings have become quite proular in
- certain circles. Nicklaus Wirth (the aformentioned Quiche Eater) actually
- managed to write 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 - they are all just special cases of Arrays and can be treated
- that way just as easily without messing up your programming language with all
- sorts of complications. The worst thing about fancy data types is that you have
- to declare them, and all Real Programming Languages, as we all know, have
- implicit typing based on the first letter of the (six character) variable name.
-
- 1.3 Operating Systems
-
- . What kind of operating system does the Real Programmer use? CP/M? God
- forbid - CP/M, after all, is basically a toy operating system. Even little old
- ladies and grade school students can use and understand 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. 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 a UUCP-net, and write advanture games and research
- papers. No, your Real Programmer uses OS/370. A good programmer can find and
- understand the description of an IJK3051 error message he just got in the JCL
- Manual. A great programmer can write JCL without referrig to the JCL manual at
- all. A truly outstanding programmer can find bugs buried in a six-Megabyte core
- dump without using a hex calculator. OS/370 is a truly remarkable operating
- system. It's possible to destory days of work with a single misplaced space (it
- happens to the best of us), so alertness in the programming staff is
- encouraged. The best way to approach the system is through a k eypunch. Some
- people claim that there is a Time Sharing system that runs on OS/370, but after
- a careful study I have come to the conclusion that they were mistaken.
-
- References:
-
- (1) Fierstein, B., Real Men Don't Eat Quiche, New York, Pocket Books, 1982
- (2) Wirth, N., Algorithms+Data Structures=Programs, Prentice Hall, 1976
-
-
- 1.4 Programming Tools
-
- . What kinds of tools does a real programmer use? In Theorey, a real
- programmer could run his programs by keying them into the front panel of a
- computer. Back in the days when computers had front panels, this was actually
- done occaisionally. Your typical real programmer knew the entire bootstrap
- loader by memory in hex, and toggled it in whenever his program destroyed the
- bootsrtap. 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 best forgotton. Legend has it that Seymour
- Cray (who invented the Cray-1 supercomputer, and most of Control Data's
- computers) actually toggled the first operating system for the CDC-7600 in on
- the front panel from memory when it was first powered on. Seymour, needless to
- say, is a real programmer.
-
- . One of my favorite real programmers was a systems programmer at 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 telephone, getting the user to toggle the disk I/O instructions
- at the front panel, repairing the system tables in hex, reading register
- contents back over the telephone. The moral of the 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 have a single keypunch. The real programmer in this situation has to
- work with a text editor program. Most systems supply several text editors to
- select from, and the real programmer must be careful to pick the 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 use a
- computer whose operating system is called SmallTalk, and would certainly never
- talk to a computer with a mouse.
-
- . Some of the concepts in these Xerox editors have been incorporated into
- editors running on more reasonable systems - EMACS and VI being two. The
- problem with these editors is that real programmers consider "what you see is
- what you get" is just as bad as the concept in text editing as it is in women.
- No, the real programmer wants a "you asked for it, you got it" text editor -
- complicated, cryptic, powerful, unforgiving, and 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 into a once working subroutine.
-
- . For this reason, real programmers are reluctant to actually edit a program
- that is close to working. They find it mush easier to just patch the binary
- object code directly, using a wonderful program called SUPERZAP. 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 anyone 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.
-
- . Here are some programming tools that real progrmmers don't use:
-
- . FORTRAN preprocessors like MORTRAN and RATFOR. These are cui-sinarts 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, destory
- most of the interesting uses for the EQUIVALENCE statement, and make it
- impossible to modify the operating system with negative subscripts. Worst of
- all, bounds checking is inefficient.
-
- . Source code maintennance systems. A real programmer keeps the code locked
- up in a card file, because it implies that the owner cannot leave important
- programs unguarded (5).
-
- (3) Xerox PARC Editors...
- (4) Finseth, C. Theorey 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.
- 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-1 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 before the Russkies. Real Programmers
- are at work for Boeing, designing 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 Spacecrafts by heart. With the combination of
- large groundbased FORTRAN programs and small spacecraft-based assembly language
- programs, they are able to do incredible feats of navagation and improvision -
- 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 plans for the Gali
- leo spacecraft is to use a gravity assist trajectory past Mars on the way to
- Jupiter. This trajectory passes 80 (plus or minus 3) kilometers from the
- surface of Mars. Nobody is going to trust a pascal program (or a pascal
- programmer for that matter) for navagatin to these tolerances. As you can tell,
- many of the world's real programmers work for the US Government - mainly in the
- defense department. This is as it should be. Recently, however, a black cloud
- has formed on the real programmers 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. For a while it
- seemed that ADA was destined to become a language which went against all the p
- recepts 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 which
- they Do adopted has enough features to make it approachable. Its incredibly
- complex, includes methods for messing up the operating system and rearranging
- memory, and Edsger Dijkstra doesn't like it (6). Dijkstra, as I'm sure you
- know, was the author of "the Go To considered harmful" - a landmark in
- programming methodology, applauded by Pascal programmers and quiche eaters
- alike. Besides, any determined real programmer can write FORTRAN programs in
- any language.
-
- . Real Programmers might compromise their principles and work on something
- slightly more trivial than the destruction as life as we know it, providing
- there's enough money in it. There are several real programmers writing video
- games at Atari, for example (but not playing them - a real programmer knows how
- to beat them every time - no challenge in that). Everybody 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 slightly
- lower than the norm, mainly because nobody has found a use for computer
- graphics yet. On the other hand, all computer graphics programming os done in
- FORTRAN, so there are a fair number of people doing graphics in order to avoid
- writing COBOL programs.
-
- 1.6 The Real Programmer at Play
-
- . Generally, the real programmer plays the same way he works - with
- computers. The real progrmmer is constantly amazed that his employer pays him
- for what he would be doing anyway (although he is careful not to express this
- opinion out loud). Occaisionally, a real progrmmer 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
- computer security and how to get around it.
-
- . At a football game, the real programmer is the one comparing the plays
- against the simulation printed on 11 by 14 fanfold paper.
-
- . At the beach, the real programmer is the one drawing flowcharts in the
- sand.
-
- . At the funeral, the real programmer is the one saying "Poor George. And he
- almost had his sort routine working before his coronary."
-
- . In the grocery store, the real progrmmer 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.