home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsd / document / !Document / Documents / RealProg < prev    next >
Text File  |  1991-09-20  |  24KB  |  537 lines

  1.  
  2.              Real Programmers Don't Use PASCAL
  3.  
  4.  
  5.      Back in the good old days -- the "Golden Era"  of  com-
  6. puters, it was easy to separate the men from the boys (some-
  7. times called "Real Men" and "Quiche Eaters" in  the  litera-
  8. ture).  During  this period, the Real Men were the ones that
  9. understood computer programming, and the Quiche Eaters  were
  10. the ones that didn't. A real computer programmer said things
  11. like DO 10 I=1,10 and ABEND (they actually talked in capital
  12. letters,  you  understand),  and  the rest of the world said
  13. things like "computers are too complicated for  me"  and  "I
  14. can't relate to computers -- they're so impersonal". (A pre-
  15. vious work [1] points out that Real Men  don't  "relate"  to
  16. anything, and aren't afraid of being impersonal.)
  17.  
  18.      But, as usual, times change. We are faced today with  a
  19. world  in which little old ladies can get computers in their
  20. microwave ovens, 12-year-old kids can blow Real Men  out  of
  21. the  water playing Asteroids and Pac-Man, and anyone can buy
  22. and even understand their very own  Personal  Computer.  The
  23. Real  Programmer  is in danger of becoming extinct, of being
  24. replaced by high-school students with TRASH-80's.
  25.  
  26.      There is a clear need  to  point  out  the  differences
  27. between  the typical high-school junior Pac-Man player and a
  28. Real Programmer. If this difference is made clear,  it  will
  29. give  these  kids  something to aspire to -- a role model, a
  30. Father Figure. It will also help explain to the employers of
  31. Real  Programmers  why  it would be a mistake to replace the
  32. Real Programmers on their  staff  with  12-year-old  Pac-Man
  33. players (at a considerable salary savings).
  34.  
  35.      The easiest way to tell  a  Real  Programmer  from  the
  36. crowd  is by the programming language he (or she) uses. Real
  37. Programmers use FORTRAN.  Quiche Eaters use PASCAL. Nicklaus
  38. Wirth,  the designer of PASCAL, gave a talk once at which he
  39. was asked "How do you pronounce  your  name?".  He  replied,
  40. "You  can either call me by name, pronouncing it 'Veert', or
  41. call me by value, 'Worth'." One can  tell  immediately  from
  42. this comment that Nicklaus Wirth is a Quiche Eater. The only
  43. parameter passing mechanism endorsed by Real Programmers  is
  44. call-by-value-return, as implemented in the IBM370 FORTRAN-G
  45. and H compilers.  Real  programmers  don't  need  all  these
  46. abstract  concepts  to  get their jobs done -- they are per-
  47. fectly happy with a keypunch, a FORTRAN IV compiler,  and  a
  48. beer.
  49.  
  50.   +    Real  Programmers  do  List  Processing  in  FORTRAN.
  51.  
  52.   +    Real Programmers do  String  Manipulation in FORTRAN.
  53.  
  54.   +    Real Programmers do Accounting     (if they do it  at 
  55.        all) in FORTRAN.
  56.  
  57.   +    Real Programmers do Artificial  Intelligence programs
  58.        in FORTRAN.
  59.  
  60. If you can't do it in FORTRAN, do it in  assembly  language.
  61. If  you  can't  do  it  in assembly language, it isn't worth
  62. doing.
  63.  
  64. STRUCTURED PROGRAMMING
  65. ======================
  66.  
  67.      The academics in computer science have gotten into  the
  68. "structured  programming"  rut  over the past several years.
  69. They claim that programs are more easily understood  if  the
  70. programmer  uses  some special language constructs and tech-
  71. niques. They don't all agree on exactly which constructs, of
  72. course,  and  the examples they use to show their particular
  73. point of view invariably  fit  on  a  single  page  of  some
  74. obscure journal or another -- clearly not enough of an exam-
  75. ple to convince anyone. When I got out of school, I  thought
  76. I  was  the  best  programmer in the world. I could write an
  77. unbeatable tic-tac-toe program, use five different  computer
  78. languages,   and  create  1000-line  programs  that  WORKED.
  79. (Really!) Then I got out into the Real World.  My first task
  80. in  the Real World was to read and understand a 200,000-line
  81. FORTRAN program, then speed it up by a factor  of  two.  Any
  82. Real Programmer will tell you that all the Structured Coding
  83. in the world won't help you solve a problem like that --  it
  84. takes  actual  talent.  Some quick observations on Real Pro-
  85. grammers and Structured Programming:
  86.  
  87.   +    Real Programmers aren't afraid to use GOTO's.
  88.  
  89.   +    Real Programmers  can  write  five-page-long DO loops
  90.        without getting confused.
  91.  
  92.   +    Real Programmers like Arithmetic IF statements - they
  93.        make the code more interesting.
  94.  
  95.   +    Real   Programmers   write   self - modifying   code,
  96.        especially  if they  can  save  20 nanoseconds in the
  97.        middle of a tight loop.
  98.  
  99.   +    Real Programmers don't need comments -- the  code  is
  100.        obvious.
  101.  
  102.   +    Since FORTRAN doesn't  have a  structured  IF, REPEAT
  103.        ... UNTIL,  or  CASE   statement,  Real   Programmers
  104.        don't  have to  worry about not using them.  Besides,
  105.        they can be simulated  when necessary using  assigned 
  106.        GOTO's.
  107.  
  108.      Data Structures have also gotten a lot of press lately.
  109. Abstract   Data  Types,  Structures,  Pointers,  Lists,  and
  110. Strings have become popular in certain circles.  Wirth  (the
  111. above-mentioned  Quiche Eater) actually wrote an entire book
  112. [2] contending that you could write a program based on  data
  113. structures,  instead  of  the  other way around. As all Real
  114. Programmers know, the only  useful  data  structure  is  the
  115. Array.  Strings,  lists,  structures,  sets -- these are all
  116. special cases of arrays and can be treated that way just  as
  117. easily  without messing up your programing language with all
  118. sorts of complications. The worst  thing  about  fancy  data
  119. types is that you have to declare them, and Real Programming
  120. Languages, as we all know, have implicit typing based on the
  121. first letter of the (six character) variable name.
  122.  
  123. OPERATING SYSTEMS
  124. =================
  125.  
  126.      What kind of operating system is used by  a  Real  Pro-
  127. grammer?   CPM? God forbid -- CPM, after all, is basically a
  128. toy operating system.  Even  little  old  ladies  and  grade
  129. school students can understand and use CPM.
  130.  
  131.      Unix is a lot more complicated of course -- the typical
  132. Unix  hacker  never  can  remember what the PRINT command is
  133. called this week -- but when it gets right down to it,  Unix
  134. is  a glorified video game.  People don't do Serious Work on
  135. Unix systems: they send jokes around the world  on  UUCP-net
  136. and write adventure games and research papers.
  137.  
  138.      No, your Real Programmer uses OS370. A good  programmer
  139. can find and understand the description of the IJK305I error
  140. he just got in his JCL manual. A great programmer can  write
  141. JCL  without  referring  to  the manual at all. A truly out-
  142. standing programmer can find bugs buried  in  a  6  megabyte
  143. core  dump  without using a hex calculator. (I have actually
  144. seen this done.)
  145.  
  146.      OS is a truly remarkable operating system. It's  possi-
  147. ble  to  destroy days of work with a single misplaced space,
  148. so alertness in the programming  staff  is  encouraged.  The
  149. best way to approach the system is through a keypunch.  Some
  150. people claim there is a Time Sharing  system  that  runs  on
  151. OS370, but after careful study I have come to the conclusion
  152. that they were mistaken.
  153.  
  154.  
  155. PROGRAMMING TOOLS
  156. =================
  157.  
  158.      What kind of tools  does  a  Real  Programmer  use?  In
  159. theory,  a  Real Programmer could run his programs by keying
  160. them into the front panel of the computer.  Back in the days
  161. when  computers  had  front  panels,  this was actually done
  162. occasionally. Your typical Real Programmer knew  the  entire
  163. bootstrap  loader  by memory in hex, and toggled it in when-
  164. ever it got destroyed by his program. (Back then, memory was
  165. memory  -- it didn't go away when the power went off. Today,
  166. memory either forgets things when you don't want it  to,  or
  167. remembers  things  long  after  they're  better  forgotten.)
  168. Legend has it that Seymour Cray,  inventor  of  the  Cray  I
  169. supercomputer and most of Control Data's computers, actually
  170. toggled the first operating system for the CDC7600 in on the
  171. front  panel from memory when it was first powered on.  Sey-
  172. mour, needless to say, is a Real Programmer.
  173.  
  174.      One of my favorite Real Programmers was a systems  pro-
  175. grammer  for  Texas  Instruments. One day he got a long dis-
  176. tance call from a user whose system had crashed in the  mid-
  177. dle  of  saving  some i