From berna Fri Dec 11 17:13:24 1992 To: adam@vlsi.cs.caltech.edu Subject: some light reading This is from comp.lang.fortran. You have probably read it before, and of course you have no time for light reading, but....: >> From: Karl.Glazebrook@durham.ac.uk (Karl Glazebrook) >> Subject: Re: Real Programmers >> From: mbvg@nl.tno.bouw.sparc-31 (Martin van Gijzen) >> >> "Real Programmers Don't Use PASCAL" >> >> >> Ed Post >> >> Graphic Software Systems >> P.O. Box 673 >> 25117 S.W. Parkway >> Wilsonville, OR 97070 >> >> Copyright (c) 1982 >> >> (decvax | ucbvax | cbosg | pur-ee | lbl-unix)!teklabs!ogcvax!gss1144!evp >> >> Back in the good old days -- the "Golden Era" of computers, it was easy >> to separate the men from the boys (sometimes called "Real Men" and "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 actually talked in capital letters, you understand), and 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 change. 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 even understand their very own Personal Computer. The Real >> Programmer is in danger of becoming extinct, of being replaced by high-school >> students with TRASH-80's. >> >> There is a clear need to point out the differences between the typical >> high-school junior Pac-Man player and a 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 explain to the employers 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 considerable salary savings). >> >> >> 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 >> either call me by name, pronouncing it 'Veert', or call me by value, 'Worth'." >> One can tell immediately from this comment that Nicklaus Wirth is a Quiche >> Eater. The only parameter passing mechanism endorsed by Real Programmers is >> call-by-value-return, as implemented in the IBM\370 FORTRAN-G and H compilers. >> Real programmers don't need all these 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 Intelligence programs in FORTRAN. >> >> If you can't do it in FORTRAN, do it in assembly language. If you can't do it >> in assembly language, it isn't worth doing. >> >> >> >> >> >> 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 >> easily understood if the programmer uses some special language constructs and >> techniques. They don't all agree on exactly which constructs, of course, and >> the examples they use to show their particular 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 in the Real World >> was to read and understand a 200,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 won't 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 a structured IF, REPEAT ... UNTIL, or >> CASE statement, Real Programmers don't have to worry about not >> using them. Besides, they can be simulated when necessary using >> assigned GOTO's. >> >> Data Structures have also gotten a lot of press lately. Abstract Data >> Types, Structures, Pointers, Lists, and Strings have become popular in certain >> circles. Wirth (the above-mentioned Quiche Eater) actually wrote 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 -- these are all >> special cases of arrays and can be treated that way just as easily without >> messing up your programing language with all sorts of complications. The worst >> thing about fancy data types is that you have to declare them, and Real >> Programming Languages, as we all know, have implicit typing based on the first >> letter of the (six character) variable name. >> >> >> >> >> >> >> >> >> OPERATING SYSTEMS >> ----------------- >> >> What kind of operating system is used by a Real Programmer? CP/M? God >> forbid -- CP/M, after all, is basically a toy operating system. Even little >> old ladies and grade school students can understand and use 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 -- but 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 UUCP-net and write >> adventure games and research papers. >> >> No, your Real Programmer uses OS\370. A good programmer can find and >> understand the description of the IJK305I error he just got in his JCL manual. >> A great programmer can write JCL without referring to the manual at all. A >> truly outstanding programmer can find bugs buried in a 6 megabyte core dump >> without using a hex calculator. (I have actually seen this done.) >> >> OS is a truly remarkable operating system. It's possible to destroy >> days of work with a single misplaced space, so alertness in the programming >> staff is encouraged. The best way to approach the system is through a keypunch. >> Some people claim there is a Time Sharing system that runs on OS\370, but after >> careful study I have come to the conclusion that they were mistaken. >> >> >> PROGRAMMING TOOLS >> ---------------- >> >> What kind of tools does a Real Programmer use? In theory, a Real >> Programmer could run his programs by keying them into the front panel of the >> computer. Back in the days when computers had front panels, this was actually >> done occasionally. Your typical Real Programmer knew the entire bootstrap >> loader by memory in hex, and toggled it in whenever it got destroyed by his >> program. (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 better forgotten.) Legend has it that >> Seymore Cray, inventor of the Cray I supercomputer and most of Control Data's >> computers, actually toggled the first operating system for the CDC7600 in on >> the front panel from memory when it was first powered on. Seymore, needless to >> say, is a Real Programmer. >> >> One of my favorite Real Programmers was a systems programmer for 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 phone, getting the user to toggle in disk I/O instructions at >> the front panel, repairing system tables in hex, reading register contents back >> over the phone. The moral of this 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 contain a single keypunch. The Real Programmer in this situation has to >> do his work with a "text editor" program. Most systems supply several text >> editors to select from, and the Real Programmer must be careful to pick 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 >> ever use a computer whose operating system is called SmallTalk, and would >> certainly not talk to the computer with a mouse. >> >> Some of the concepts in these Xerox editors have been incorporated into >> editors running on more reasonably named operating systems -- EMACS and VI >> being two. The problem with these editors is that Real Programmers consider >> "what you see is what you get" to be just as bad a concept in Text Editors as >> it is in women. No the Real Programmer wants a "you asked for it, you got it" >> text editor -- complicated, cryptic, powerful, unforgiving, 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 in a once working subroutine. >> >> For this reason, Real Programmers are reluctant to actually edit a >> program that is close to working. They find it much easier to just patch the >> binary object code directly, using a wonderful program called SUPERZAP (or its >> equivalent on non-IBM machines). 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 anything 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". >> >> Some programming tools NOT used by Real Programmers: >> >> * FORTRAN preprocessors like MORTRAN and RATFOR. The Cuisinarts 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, destroy >> most of the interesting uses for EQUIVALENCE, and make it impossible >> to modify the operating system code with negative subscripts. Worst of >> all, bounds checking is inefficient. >> >> * Source code maintenance systems. A Real Programmer keeps his code >> locked up in a card file, because it implies that its owner cannot >> leave his important programs unguarded [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 I 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 and back before >> the Russkies. >> >> * Real Programmers are at work for Boeing designing the 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 spacecraft by heart. With a combination of >> large ground-based FORTRAN programs and small spacecraft-based assembly >> language programs, they are able to do incredible feats of navigation and >> improvisation -- 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 plan for the Galileo spacecraft is to use a gravity assist >> trajectory past Mars on the way to Jupiter. This trajectory passes within 80 >> +/-3 kilometers of the surface of Mars. Nobody is going to trust a PASCAL >> program (or a PASCAL programmer) for navigation to these tolerances. >> >> As you can tell, many of the world's Real Programmers work for the U.S. >> Government -- mainly the Defense Department. This is as it should be. >> Recently, however, a black cloud has formed on the Real Programmer 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" ((C), DoD). For a while, it seemed that ADA was destined to >> become a language that went against all the precepts 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 adopted by DoD has enough >> interesting features to make it approachable -- it's incredibly complex, >> includes methods for messing with the operating system and rearranging memory, >> and Edsgar Dijkstra doesn't like it [6]. (Dijkstra, as I'm sure you know, was >> the author of "GoTos Considered Harmful" -- a landmark work in programming >> methodology, applauded by PASCAL programmers and Quiche Eaters alike.) Besides, >> the determined Real Programmer can write FORTRAN programs in any language. >> >> >> >> >> >> >> >> The Real Programmer might compromise his principles and work on >> something slightly more trivial than the destruction of life as we know it, >> providing there's enough money in it. There are several Real Programmers >> building video games at Atari, for example. (But not playing them -- a Real >> Programmer knows how to beat the machine every time: no challenge in that.) >> Everyone working 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 somewhat lower than the norm, mostly >> because nobody has found a use for computer graphics yet. On the other hand, >> all computer graphics is done in FORTRAN, so there are a fair number of people >> doing graphics in order to avoid having to write COBOL programs. >> >> Real Programmers... p. 7 >> >> >> THE REAL PROGRAMMER AT PLAY >> --------------------------- >> >> Generally, the Real Programmer plays the same way he works -- with >> computers. He is constantly amazed that his employer actually pays him to do >> what he would be doing for fun anyway (although he is careful not to express >> this opinion out loud). Occasionally, the Real Programmer 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 operating system security and how to get around it. >> >> * At a football game, the Real Programmer is the one comparing the plays >> against his simulations printed on 11 by 14 fanfold paper. >> >> * At the beach, the Real Programmer is the one drawing flowcharts in >> the sand. >> >> * At a funeral, the Real Programmer is the one saying "Poor George. And he >> almost had the sort routine working before the coronary." >> >> * In a grocery store, the Real Programmer 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. >> >> >> >> >> >> >> THE REAL PROGRAMMER'S NATURAL HABITAT >> ------------------------------------- >> >> What sort of environment does the Real Programmer function best in? >> This is an important question for the managers of Real Programmers. Considering >> the amount of money it costs to keep one on the staff, it's best to put him (or >> her) in an environment where he can get his work done. >> >> The typical Real Programmer lives in front of a computer terminal. >> Surrounding this terminal are: >> >> * Listings of all programs the Real Programmer has ever worked on, piled in >> roughly chronological order on every flat surface in the office. >> >> * Some half-dozen or so partly filled cups of cold coffee. Occasionally, >> there will be cigarette butts floating in the coffee. In some cases, >> the cups will contain Orange Crush. >> >> * Unless he is very good, there will be copies of the OS JCL manual and the >> Principles of Operation open to some particularly interesting pages. >> >> * Taped to the wall is a line-printer Snoopy calendar for the year 1969. >> >> * Strewn about the floor are several wrappers for peanut butter filled >> cheese bars -- the type that are made pre-stale at the bakery so they >> can't get any worse while waiting in the vending machine. >> >> * Hiding in the top left-hand drawer of the desk is a stash of double-stuff >> Oreos for special occasions. >> >> * Underneath the Oreos is a flowcharting template, left there by the >> previous occupant of the office. (Real Programmers write programs, not >> documentation. Leave that to the maintenance people.) >> >> >> The Real Programmer is capable of working 30, 40, even 50 hours at a >> stretch, under intense pressure. In fact, he prefers it that way. Bad response >> time doesn't bother the Real Programmer -- it gives him a chance to catch a >> little sleep between compiles. If there is not enough schedule pressure on the >> Real Programmer, he tends to make things more challenging by working on some >> small but interesting part of the problem for the first nine weeks, then >> finishing the rest in the last week, in two or three 50-hour marathons. This >> not only impresses the hell out of his manager, who was despairing of ever >> getting the project done on time, but creates a convenient excuse for not doing >> the documentation. In general: >> >> * No Real Programmer works 9 to 5 (unless it's the ones at night). >> >> * Real Programmers don't wear neckties. >> >> * Real Programmers don't wear high-heeled shoes. >> >> * Real Programmers arrive at work in time for lunch [9]. >> >> * A Real Programmer might or might not know his wife's name. He does, >> however, know the entire ASCII (or EBCDIC) code table. >> >> * Real Programmers don't know how to cook. Grocery stores aren't open at >> three in the morning. Real Programmers survive on Twinkies and coffee. >> >> >> >> >> >> >> >> THE FUTURE >> ---------- >> >> What of the 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" operating 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 future is bright for >> Real Programmers everywhere. Neither OS\370 nor FORTRAN show any signs 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 Unix 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 incompatible 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 for #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 crop 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 in these >> young men and women. As long as there are ill-defined goals, bizarre bugs, >> and unrealistic schedules, there will be Real Programmers willing to jump in >> and Solve The Problem, saving the documentation for later. Long live FORTRAN! >> >> >> ACKNOWLEGEMENT >> -------------- >> >> 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] sdcarl!lin, "Real Programmers", UUCP-net, Thu Oct >> 21 16:55:16 1982 >> >> >> From: David Shue >> >> ================================================================== >> - 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 pro- >> gram 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 program- >> mers 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 man- >> ager'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. >> >> >> From: David Shue >> >> T h e V O G O N N e w s S e r v i c e >> >> VNS TECHNOLOGY WATCH: [Mike Taylor, VNS Correspondent >> ] >> ===================== [Littleton, MA, USA >> ] >> >> COMPUTERWORLD 1 April >> >> CREATORS ADMIT UNIX, C 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} >> >> <><><><><><><><> VNS Edition : 2336 Tuesday 4-Jun-1991 <><><><><><><><> >> >> Real Computer Scientists Don't Write Code >> >> 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 un- >> dynamic). >> >> 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), execpt that they need 8 megabytes >> to run their Correctness Verification Aid packages. >> >> Real Software Engineers think better while playing WFF 'N' >> PROOF. >> >> Real Programmers Don't Write Specs. >> >> 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 understand. >> >> Real Programmers don't write application programs, they >> program down to the bare metal. Application programming is for feebs >> who can't do systems programming. >> >> Real Programmers don't eat quiche. They eat Twinkies, and >> Szechwan food. >> >> Real Programmers don't write in COBOL. COBOL is for wimpy >> applications programmers. >> >> 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-hour debugging sessions. >> >> Real Programmers don't write in FORTRAN. FORTRAN is for pipe >> stress freaks and crystallography weenies. >> >> Real Programmers don't 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 write in PL/1. PL/1 is for programmers >> who can't decide whether to write in COBOL or FORTRAN. >> >> Real Programmers don't write in APL. Any fool can be obscure >> in APL. >> >> Real Programmers don't play tennis, or any other sport that >> requires you to change clothes. Mountain climbing is OK, and Real >> Programmers wear their climbing boots to work in case a mountain >> should suddenly spring up in the middle of the machine room. >> >> 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 managers in >> suspense. >> >> Real Programmers think better while playing ADVENTURE. >> >> Real Programmers do it middle-out. >> >> Real Programmers enjoy machine coding PASCAL compilers for >> their micros which they improve but never use. >> or >> Real Programmers enjoy getting CP/M to work on 370 machines >> and MVS on their ZX81s. >> >> Real Programmers write their own assemblers, preferably in >> LISP. >> >> Real Programmers never get annoyed by security systems, they >> turn off the RACF bits and leave unsigned messages in the security >> data sets. >> >> Real Programmers never update the source to reflect the ZAPs, >> after all, it will have changed again tomorrow. >>