Path: utzoo!attcan!uunet!ogicse!milton!biostr.biostr.washington.edu!kraig From: kraig@biostr.biostr.washington.edu (Kraig Eno) Newsgroups: comp.misc Subject: A tirade about inefficient software & systems Message-ID: <9886@milton.u.washington.edu> Date: 25 Oct 90 03:08:26 GMT Sender: news@milton.u.washington.edu Organization: University of Washington Lines: 167 Excuse me, I'm fed up. If you are one of the world's many purveyors of fat software systems, please take these comments to heart; otherwise, ignore my ranting. I see in today's client/server supplement to Digital Review (a true cutting-edge rag if there ever was one) that DEC's VP of VAX/VMS Systems and Servers, William Demmer, says "The rate of technological change is accelerating beyond what we expect will be the world's ability to absorb it. That puts the burden back on the suppliers to help figure out how to use that capability." Examine that second sentence. That's right, the user is so overwhelmed with computing power that he can't think of a way to use it all, so they (the seller) have to think of NEW WAYS of using the hardware. Why, I ask you? Because the seller wants MONEY. And if the seller can't think of a legitimate use for the resources, they will merely bog their CPUs down doing useless things, because it sells the product. This states briefly what is wrong with the entire software industry right now, and I am sick of it! I used to think that, as a computer professional, I was supposed to build systems which did what the user wanted to do in the most efficient, direct, and complete manner possible. But NO! Software companies continually produce bigger, slower packages, and the entire industry is locked into this struggle of software "taking advantage" of faster hardware, and hardware vendors trying to keep pace with resource-hogging software. Since when are we trying to "figure out how to use" resources? We have twice as many MIPS as we had previously. GREAT! Let's make more complicated software that does the same thing we've always done, but slower! It wouldn't be so bad if the new software gave us fundamentally different capabilities, but IMHO it rarely does. Whether you agree with me on this or not I want to ask you to take a step back and answer a question. Will someone please tell me why a Mac Plus isn't a screaming fast machine? 6MHz or so, SCSI bus, a megabyte of memory, 2 dizzyingingly fast serial ports. These are awesome resources for any of the following easy tasks: Entering text Printing a letter (or even a 100-page manuscript) Searching a properly-built disk database (never mind a RAM-based one) Drawing little lines and boxes on the screen Terminal emulation (be it serial I/O or over a network) C programming Doing arrays of calculations in a spreadsheet The above list encompasses practically everything the typical user really does with their personal computer, yet the thing seems slow as a dog EVEN WHEN DOING THESE SAME TASKS. Where have all the cycles gone, I wonder? It's because the machine spends all its (quite abundant) CPU time doing things that don't really contribute to the final goal. This is the same reason that a NeXT machine with a fast 68030 and gobs of memory is slow, slow, slow. It wouldn't be so bad, except that I find no machines available with great hardware that are not crippled by system software. The software mafia is even trying to convince us that DOS machines should have windows. Can someone convince me that all the world NEEDS windows, bitmapped graphics, image processing, DTP, virtual memory, and PostScript? And for crying out loud, can someone tell me why every operating system upgrade in the history of computing is BOTH bigger AND slower? I get so tired of it all. Think of where macs would be if the system gobbled only 200K, MultiFinder was 50K, and a simple word processor would fit into, say, 100K. 100K! That's a ridiculously huge chunk of memory! I normally don't have these fits; I behave like a sheep, and believe the system vendors when they say they need 2 megabytes simply to run the OS. That's crazy! Think about what 2 MB is, and how much DATA fits there. Is there really 2 MB of functionality in MS-Windows? So you tell me that under CP/M, we had less to take care of, less to worry about. EXACTLY. We convince the world that they need bitmapped graphics for everything, what-they-see-is-what-they-get (even though it STILL never comes out they way it looks on screen, even on a NeXT under Display PostScript). We convince them that showing the same characters through fancy windows somehow gives them a huge increase in capability. It RARELY DOES. Think about your computer in the old input/output terms that you learned in college: "an algorithm takes some input, operates on it, and produces some output". Think about your secretary's computer the same way. Take a day's keystrokes and mouse clicks, collect them together, and think about whether it should take a 33MHz anything with 6 MB of RAM to transform them to what comes out the other end. Don't get me wrong, I do NOT want to put us back in the stone ages of computers. But I think that the same old operations we've been doing all along should be incredibly fast on any current computer, INCLUDING a "slow" 8 MHz XT. I type these 1-page text-only letters on this Mac IIx in the latest version of Word, and send the output to a LaserWriter NT. And I have to wait 30 seconds to get my page. That's DUMB. Sure, if I were downloading 8-bit grayscale bitmaps, I would expect to wait. But 1000 bytes of text? Come on now, someone did their job badly. There is NO REASON a system with sophisticated capabilities must be SLOW on the easy jobs. My foremost assertion, the foundation of this whole long-winded article: COMPLEX OPERATIONS MAY BE SLOW, but SIMPLE JOBS SHOULD BE FAST. And not just fast, but small as well. And an important corollary to my assertion: PRACTICALLY ALL THE OPERATIONS WE TYPICALLY DO WITH OUR COMPUTERS ARE SIMPLE JOBS. This includes the normal text editing, spreadsheet, database, communication sorts of tasks that people spend their hours doing all over the world. The problem only comes when we see the current capability, and expand our expectations based on it. People never used to want to make their business letters look like they were printed at a shop. Why do they now? Instead of selling them new fonts, we should sell them common sense. What is the solution? I put forward a few simple requests. DON'T make every application do everything under the sun. Do the essential operation, do it well, and make it efficient! Look at the resources demanded by the bare application, then look at what it requires with all the bells and whistles added. Then ask yourself if the gadgets are worth the mind-boggling amount of CPU time and RAM that are spent on them. If you think you need them to sell your product, then spend less on marketing and don't be so greedy. Ask yourself why program Z isn't blazingly fast on an XT, and be honest. Is it because the theoretical minimum operation count is simply too large, or did you do it the easiest way you could think of just to get it done--knowing that a ripping fast CPU would make the performance "acceptable"? And finally, one for the non-programmer. Quit bellyaching! I know one company which insists on printing 1000 envelopes through a PostScript printer for mass mailings. And they complain because it doesn't work well. Of course it doesn't work well! You are putting characters on envelopes. You don't need PostScript, you don't need a Mac, and you don't need a network! What you need is a stack of label stock, a data file, an XT, and a 20-line C program. (I had to set up the merge procedure anyhow, so the C code wouldn't have cost them anything.) Users who persist in requiring publication-quality output for their inter-office memos, who think they need an SQL database for their company address list, or rely on fancy windowing systems to save them having to think -- these people are only fueling the fire of wastewater-quality software engineering. End of tirade. Kraig Eno, kraig@biostr.washington.edu "To Coin a Phrase, I'm Perplexed." -- James Gaskin P.S., a few favorite examples from the real world. NeXTStep, where windows suck CPU time displaying themselves while you move the frame around. That's cool, sure, but what does it buy you? It sure wastes CPU time. The Mac, where copying a 100-byte file to a floppy takes 3 seconds. Has disk access slowed since the olden days? Or have the pretty pictures perhaps overshadowed the actual work being done? Adobe Photoshop and SuperCard (2 that I know, there are lots more) which display these really neat-O bitmapped graphics when you enter or leave the program, but have nothing at all to do their function. Sure, I have an extra 10K of disk. No problem, I don't mind wasting it. Wonderful programs like PageMaker 4.0 that are so monstrous that they won't fit on one (800K!) disk -- you have to run a special utility to concatenate the pieces and store the resultant mass of code on your hard disk. A few of these and you don't have any room left on your 20MB disk for any data at all. So? Go buy more disk, it's cheap! One positive example of a workable platform is SGI, which has graphics hardware that tromps all over the competition and a programming library built to push that hardware to its limits, efficiently. Unfortunately, they've saddled this core with NeWS running over DPS (or is it the other way around? ), so just logging in to my account to type in a text window takes over 25 seconds. Do they think I'm going to do desktop publishing, or something? If I were, I would save my money and buy a Mac. I want the hardware, I don't want PostScript. Not for my screen graphics, anyway.