home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!spool.mu.edu!sdd.hp.com!usc!cs.utexas.edu!ut-emx!newshost.cc.utexas.edu!mclay
- From: mclay@navier.ae.utexas.edu (Robert McLay)
- Newsgroups: comp.lang.fortran
- Subject: Re: Real Programmers (Mel & Blackjack & RPC-4000)
- Message-ID: <MCLAY.92Dec16093918@navier.ae.utexas.edu>
- Date: 16 Dec 92 15:39:18 GMT
- Sender: news@ut-emx.uucp
- Distribution: comp
- Organization: CFD Lab, Dept ASE-EM, University of Texas at Austin
- Lines: 146
-
-
- When this discussion of "Real Programmers" came up in 1984. There was
- also a poem about Mel and an machine coded blackjack program for a
- drum memory computer (that's right: a drum memory computer). I saved
- it but it got messed up when I transfered a compressed copy from VMS
- to unix. Does anyone still have a copy. It starts like this:
-
- ________________________________________________________________________
- From CC.CLIVE@UTEXAS-20.ARPA Wed Oct 24 15:54:54 1984
-
- From: Clive Dawson <CC.Clive@UTEXAS-20.ARPA>
- >From the net for your enjoyment:
- ------
-
- A recent article devoted to the *macho* side of programming
- made the bald and unvarnished statement:
-
- Real Programmers write in Fortran.
-
- Maybe they do now,
- in this decadent era of
- Lite beer, hand calculators and "user-friendly" software
- but back in the Good Old Days,
- when the term "software" sounded funny
- and Real Computers were made out of drums and vacuum tubes,
- Real Programmers wrote in machine code.
- Not Fortran. Not RATFOR. Not, even, assembly language.
- Machine Code.
- Raw, unadorned, inscrutable hexadecimal numbers.
- Directly.
-
- Lest a whole new generation of programmers
- grow up in ignorance of this glorious past,
- I feel duty-bound to describe,
- as best I can through the generation gap,
- how a Real Programmer wrote code.
- I'll call him Mel,
- because that was his name.
-
- I first met Mel when I went to work for Royal McBee Computer Corp.,
- a now-defunct subsidiary of the typewriter company.
- The firm manufactured the LGP-30,
- a small, cheap (by the standards of the day)
- drum-memory computer,
- and had just started to manufacture
- the RPC-4000, a much-improved,
- bigger, better, faster -- drum-memory computer.
- Cores cost too much,
- and weren't here to stay, anyway.
- (That's why you haven't heard of the company, or the computer.)
-
- I had been hired to write a Fortran compiler
- for this new marvel and Mel was my guide to its wonders.
- Mel didn't approve of compilers.
-
- "If a program can't rewrite its own code,"
- he asked, "what good is it?"
-
- Mel had written,
- in hexadecimal,
- the most popular computer program the company owned.
- It ran on the LGP-30
- and played blackjack with potential customers
- at computer shows.
- Its effect was always dramatic.
- The LGP-30 booth was packed at every show,
- and the IBM salesmen stood around
- talking to each other.
- Whether or not this actually sold computers
- was a question we never discussed.
-
- Mel's job was to re-write
- the blackjack program for the RPC-4000.
- (Port? What does that mean?)
- The new computer had a one-plus-one
- addressing scheme,
- in which each machine instruction,
- in addition to the operation code
- and the address of the needed operand,
- had a second address that indicated where, on the revolving drum,
- the next instruction was located.
- In modern parlance,
- every single instruction was followed by a GO TO!
- Put *that* in Pascal's pipe and smoke it.
-
- Mel loved the RPC-4000
- because he could optimize his code:
- that is, locate instructions on the drum
- so that just as one finished its job,
- the next would be just arriving at the "read head"
- and available for immediate execution.
- There was a program to do that job,
- an "optimizing assembler",
- but Mel refused to use it.
-
- "You never know where its going to put things",
- he explained, "so you'd have to use separate constants".
-
- It was a long time before I understood that remark.
- Since Mel knew the numerical value
- of every operation code,
- and assigned his own drum addresses,
- every instruction he wrote could also be considered
- a numerical constant.
- He could pick up an earlier "add" instruction, say,
- and multiply by it,
- if it had the right numeric value.
- His code was not easy for someone else to modify.
-
- I compared Mel's hand-optimized programs
- ack the same code massaged by the optimizing assembler program,
- and Mel's always ran faster.
- That was because the "top-down" method of program design
- hadn't been invented yet,
- and Mel wouldn't have used it anyway.
- He wrote the innermost parts of his program loops first,
- so they would get first choice
- of the optimum address locations on the drum.
- The optimizing assembler wasn't smart enough to do it that way.
-
- Mel never wrote time-delay loops, either,
- even when the balky Flexowriter
- required a delay between output characters to work right.
- He just located instructions on the drum
- so each successive one was just *past* the read head
- hen it was needed;
- the drum had to execute another complete revolution
- to find the next instruction.
- He coined an unforgettable term for this procedure.
- Although "optimum" is an absolute term,
- like "unique", it became common verbal practice
- to make it relative:
- "not quite optimum" or "less optimum"
-
- ...
- --
-
- ______________________________________________________________________________
- Robert McLay | Kayak Rules of Life:
- Manager CFD Lab | a) lose altitude
- Dept ASE-EM | b) Surf waves and holes.
- University of Texas at Austin | c) Do enders.
- WRW 111 |
- Austin, TX 78712 |
- |
- mclay@cfdlab.ae.utexas.edu |
-