Where Have All The Cycles Gone?
Mai writes "Computers are getting faster all the time, or so they tell us. But, in fact, the user experience of performance hasn't improved much over the past 15 years. This article takes a look at where all the precious processor time and memory are going."
2% word processing
3% gaming
5% internet
90% feet warming
Rock that crushes, Paper & Scissors that don't matter.
I used to be able to fit the system, the finder, mac write and 3 X 8K docs on a floppy. Now I could barely fit a word document.
This is totally insecure, but very convenient.
Launch a few applications simultaneously and time their start-ups. Try it again in five years to see whether the time has improved.
I think it'll be the same, given the same machine.
Rock that crushes, Paper & Scissors that don't matter.
spyware, trojans, p2p apps.
"As God is my witness, I thought turkeys could fly." A. Carlson
Mr. Seebach points out that "computers are, in fact, doing more than they used to. A lot of the things computers do are fairly subtle, happening beneath the radar of a user's perception. Many functions are automatic and, as discussed in last month's column, you could probably do without some of them."
This recalls an analogy drawn by a recent Economist article. Unlike most automobile analogies popular among Slashbots, this one is actually rather appropriate: "By the 1930s, ... the car had become more user-friendly and ready for the mass market. ... [T]he makers' increasing skill at hiding the technology from drivers ... meant that cars got hugely more complex on the inside, because most of the tasks that had previously been carried out by drivers now had to be done automatically. This presented drivers with a radically simplified surface, or 'interface' in today's jargon."
Given this lesson drawn from history, I disagree with Seebach's conclusion that "the worst is probably over" in terms of code bloat and complexity. Computers still have a long way to go before they can approach the ease of use and stability we demand of every other consumer appliance in our lives.
The aforementioned article requires a paid subscription to view, so in the interests of convenience, I'll reproduce it here.
--
SURVEY: INFORMATION TECHNOLOGY
Now you see it, now you don't
Oct 28th 2004
From The Economist print edition
[Image]
To be truly successful, a complex technology needs to "disappear"
THERE has never been anything quite like information technology before, but there have certainly been other complex technologies that needed simplifying. Joe Corn, a history professor at Stanford University, believes that the first example of a complex consumer technology was clocks, which arrived in the 1820s. Clocks were sold with user manuals, which featured entries such as "How to erect and regulate your device". When sewing machines appeared in the 1840s, they came with 40-page manuals full of detailed instructions. Discouragingly, it took two generations until a trade publication was able to declare in the 1880s that "every woman now knows how to use one."
At about the same time, the increase in technological complexity gathered pace. With electricity came new appliances, such as the phonograph, invented in 1877 by Thomas Alva Edison. According to Mr Norman, the computer-design guru, despite Mr Edison's genius for engineering he was a marketing moron, and his first phonograph was all but unusable (in fact, initially he had no particular uses in mind for it). For decades, Mr Edison fiddled with his technology, always going for the most impressive engineering solution. For instance, he chose cylinders over discs as the recording medium. It took a generation and the entry of a new rival, Emile Berliner, to prepare the phonograph for the mass market by making it easier to use (introducing discs instead of cylinders) and giving it a purpose (playing music). Mr Edison's companies foundered whereas Mr Berliner's thrived, and phonographs became ubiquitous, first as "gramophones" or "Victrolas", the name of Mr Berliner's model, and ultimately as "record players".
Another complex technology, with an even bigger impact, was the car. The first cars, in the early 1900s, were "mostly a burden and a challenge", says Mr Corn. Driving one required skill in lubricating various moving parts, sending oil manually to the transmission, adjusting the spark plug, setting the choke, opening the throttle, wielding the crank and knowing what to do when the car broke down, which it invariably did. People at the time hired chauffeurs, says Mr Corn, mostly because they needed to have a mechanic at hand to fix the car, just as firms today need IT staff and
'memory is cheap'
'disks are fast'
'processors are fast'
nobody cares about optimizing code anymore.
"I'd rather be a lightning rod than a seismometer." -Ken Kesey
Windows 3.1 and Notepad run nice and fast on my 3.2GHz 8GB RAM box.
Computers are getting faster all the time, or so they tell us. But, in fact, the user experience of performance hasn't improved much over the past 15 years. Peter looks at where all the processor time and memory are going.
Ummmmm..... No.
A number of years ago, I had a project that required three days for each calculation. Just for kicks, when I got my dual G5, I ran the same calculation with the same parameters and it was complete almost instantaneously. Yes, yes....I know..memory bound performance versus disk swapping of memory space, but at the time, the memory on that system was maxed out (128 MB for $5000).
I also know that one of the games I helped work through beta (Halo) would absolutely not run on much hardware older than a few years ago.
Visit Jonesblog and say hello.
Someone needs to ask Clippy what he's doing with all those spare cycles.
[Insert pithy quote here]
There's been so mauch change in the past few decades that people keep expecting the same amount of change everywhere. Many people know nothing else. UI as developed by PARC then refined by Apple and Micrsoft hasn't really changed much except for evolutionary steps. There's no revolution coming. Cars have been driven the same basic way since the Model T. Its my firm belief that there will not be revolutionary things such as the printing press, radio, tv, and the Internet coming withing the next 100 or so years. Its time to start refining what we've created rather than look to supplant it.
Some good things that have eaten more memory and cycles (all of which have improved the user experience, as opposed to what the summary states):
1 Programs that check your work as you go (e.g.: autocalculate on spreadsheets)
2 More help dialogs, things watching for cameras, and whatnot to smooth the user experience.
3 More use of IM and other software in the background much of the time.
4 Services running so that it's faster to sort and search files, open your favorite programs, etc.
In short, lots of stuff running to make your experience smoother, even if it doesn't look like it's doing much more.
Some bad things:
1 More viruses, etc.
2 The mandantory virus scanner that has to run in the background all the time because of (1)
3 All the crap adware that installed more than it used to be.
These are just a few of the trends I can think of . -- Paul
OpenSource.MathCancer.org: open source comp bio
Where have all the cycles gone, long time passing
Where have all the cycles gone, long time ago
Where have all the cycles gone, gone to spyware everyone.
When will they ever learn?
When will they ev-ear learn?
Right now I have 12 windows open.
So a lot of my cycles are going to managing my ability to work in several programs at once. My old iBook at home allows me to have all of two windows open at once... and with noticable performance drops.
If I seem short sighted, it is because I stand on the shoulders of midgets
That would be the number one way to waste cycles on any low end system nowadays. I swear, I've seen P4's with Intel graphics run slower than PIII's with even a mediocre card in it.
But, in fact, the user experience of performance hasn't improved much over the past 15 years
.. for DOS) to the KDE/ Gnome file managers (Ok MC looks the same still :) ). :) ) .
Now that really depends on what you would call 'user experience'.
Compare a file manager 15 years ols (PC Tools had one right
Compare pine to Thunderbird.(though I still use pine on my old laptop
Compare Usenet clients or say Lynx to Firefox,
Compare Doom 3 to Pac Man
Comapre the fancy graphics on OS X to Win 3.1 or whatever OS Mac had then
No Sirrr I say the user experience of performance HAS changed. Maybe not directly proportional to the Proceessor speed increase (due to code bloat ?) but still its much much better. Thats my $0.02 .
I think that the article writer just realized what a lot of computer buyers don't : CPU speed != more performance, ESPECIALLY when you look at graphical display and Word processing (at least he didn't include "web surfing speed").
Where are my CPU cycles and memory going on my AMD 3500+ and 1Gig 400MHz DDR Ram? Most of the time, nowhere. 1% CPU usage, commit charge 150 megs / 1 gig. Honestly, if you don't use CPU intensive apps, there's a limit to the 'improvement' you can expect in 'graphical display' and 'word processing' speed. But sales rep will tell you otherwise, for sure.
Eureka Science News - automatically updated
That's BS. Task Manager reports peak usage. Minimise Notepad then look. It really takes 212k. Microsoft needs to get rid of Task Manager for regualar installs and jsut provdie a simple version for people who don't understand virtual memory.
I'm sooo sick of people looking in Task Manager then saying how much an application sucks because of how much "memory" it uses. For the most part, memory is not a factor.
I didn't rtfa, but..no. Nine years ago I used to start my word processor (Ami Pro!), then go take a leak while it loaded. What a BS claim.
Evil is the money of root.
I started out on a 8088 processor 11-12 years ago. Now I am using a dual proc G5 at work, which is so fast I can no longer blame the computer for my coffee breaks. It takes a good bit of video rendering to keep it busy long enough for me to get a coffee refill.
This has been a Public Service Announcement. Not to be confused with anything useful.
My girlfriend has a cycle every month. It causes me problems, so I can imagine it must cause some problems for the computer as well.
Generally (at least on my less used windows box) i have most of the following running most of the time....
1) VoIP Client
2) Messaging Client
3) Word Processor
4) Multiple Web Browsers
5) Email Client
6) Probably some graphics or photo editing tool
7) Something playing music
In addition there are various other background processes like desktop indexing, things watching for my digital camera being plugged in, smart start stuff...
Linux is probably worse since i keep Apache and often Tomcat running all the time.
Back in the day, this was never how it was done. You'd optimize config.sys to get the absolute max amount of free conventional memory.
Multitasking has improved to the point that many users probably run close to 100 processes at any point in time..
prstat here says i'm on a system with
Total: 3741 processes, 6739 lwps
Fair enough it's a shared box, but that scale was impossible a decade ago.
So Apple is bucking the trend, or their first versions of OS X were an inefficient piece of crap and they are just now optomizing it.
just like users will manage to fill most of the storage space available (no matter how large that may be), user tasks will manage to fill most of the cpu available (no matter how fast the cpu is).
the subjective performance of overall data processing hasn't changed much, but that's just because task complexity has increased as cpu speed increased.
15 years ago, most applications were far less computationally complex than they are today. it has little to do with code bloat.
Apple II (1 MHz 6502) did animated graphics with sound and controlled floppy access while polling the keyboard (The Bard's Tale)
Amiga (14 MHz 68000) had complete GUI, multi-tasking, on 256K RAM.
The old saying that "Intel giveth, Microsoft taketh" is about right. The CPU's have gotten faster, with the Microsoft O/S taking more and more cycles to do the same thing.
for crying out loud, why does a 5 MB MP3 take 60+ MB of memory to play?
because that's the size of the uncompressed waveform. You don't play the MP3, you play the waveform that is compressed inside the MP3. iTunes just decompresses the file all at once, and puts that into memory, instead of a bit at a time like some players.
distributed.net is where all the smart CPU cycles have gone! :)
Pretty Pictures!
Or in other words, developers spending less time on petty optimization to work on features and bugfixes.
Bloat, you say?
Man, that word sure is thrown around a lot.
My feeling is that the people who call
a lot of stuff bloat are the same ones
who view managers are useless loudmouths.
Truly time-critical code is executing faster than
ever. Compilers are smarter, hardware is faster,
and development systems are cleaner.
Programs are more featureful, intuitive, and pleasant-looking than ever. (I know, very general.)
Then again, if you are simply one of those minimalists who thinks that everything had every feature it needed somewhere around 1993, then
that is different. Pretty much all of that
code still exists, and I'm sure you're happy
to use it. I, however, would rather have
a system that is easy on the eyes, intuitive,
and helpful and wait an extra milisecond or so
than feel content knowing my processor is never
utilized more than 5%. Also, I'm sure the
millions of people who prefer computers Just Work(tm) feel the same way.
Do you have any evidence whatsoever for this? It's not a good idea, and iTunes uses a constant amount of CPU while playing music, indicating a normal buffered, streaming decompression scheme.
Mod down posts with a "Free Mac Mini/iPod" sig, they're spam!
Is that it is (like nearly every other system out there) an economical system; it's all about supply and demand.
I this case there's a supply of plenty of clocks. There's an (existing) demand for a certain level of performance; if the supply outstrips that demand, then the supply is devalued, and consequently the programmers don't spend as much time conserving that resource.
Or to put it another way, programs behave like a gas with respect to responsiveness and user expectation; they expand to fill the available space.
Or to reword it another way (quoting from the article): computers are, in fact, doing more than they used to. A lot of the things computers do are fairly subtle, happening beneath the radar of a user's perception. Many functions are automatic and, as discussed in last month's column, you could probably do without some of them.
I am disrespectful to dirt! Can you see that I am serious?!
I haven't had to set an IRQ or DMA setting in years. I've not had to mess with himem or any other arcane memory configs and boot disks, restarting my entire system each time I want to run a different game.
Each time I plug in a new joystick and it just works, each time I plug in a new digital camera and it's just there as another drive, each time I alt-tab out of a game, check a walkthrough website, then alt-tab back, I think back to the old days where code was really efficient and didn't do any wasteful background tasks like that.
I remember helping a friend with a C++ assignment, via the net. Each time, she'd have to exit her telnet program, run Borland's C++ compiler from the command line, check the output, quit the compiler, reopen telnet, reconnect to the MUD we were talking over, then describe what had happened. Now... She'd just show me what's on her desktop via Messenger while we kept chatting.
And if some cycles get used up doing weird UI gimicks that I'll never use - like making the UI scalable so the partially sighted can use it, I'm willing to trade that.
For all those reasons, I'm more than happy that my 2^(years / 1.5) faster PC "wastes" all of those extra cycles. And that's before we get on to things like built in spell checkers and real time code debugging as I write it.
I don't want a 2^(years / 1.5) faster experience. I want all those cycles put in to making things work closer and closer to how I just expect them to work.
I don't know about anyone else but I can't code 2^(years / 1.5) faster so I wouldn't be able to keep up with that damn responsive text based compiler. On the other hand, I am that much faster overall as I now call an API that adds all that "bloatware" instead of having to code my own damn mouse drivers, my code is largely debugged on the fly and I can't remember the last time I lost several days just trying to format a newsletter in to columns.
So, before saying the cycles are wasted:
Pick an every day but semi complex task that people do now. For example: For a homework project, go on line, grab half a dozen graphics and ten blocks of text from those websites, put them all in to a stylishly laid out newsletter format. Do that on a P4, then do it on an a DOS PC from 15 years ago.
See if matching the same quality of work doesn't take you 2^10 times as long on that old PC, assuming you can even do it at all.
Those cycles aren't wasted. Sure, we do the same basic tasks but we do them with vastly more flexability and don't have to waste days of our lives wrestling with configs to do what we now consider simple tasks. That's where the speed is.
You want cross platform, you want platform support, so get used to VMs and WRAPPER code.
You want language interop, you have to live with COM, DCOM, CORBA, XML Web services, SOAP, UNO. If not, then go back to your Amstrad or Sinclair.
FFS you cant have your cake and eat it.
I derive utility from them and my hardware can handle it. This is not bloat.
I somewhat disagree with the premise of the article. 10 years ago, a barely usable word processor took 15 seconds to start up. I remember Wordperfect 6 being a terrible resource hog on my measly pc. Compare that with the load-times and responsiveness of AbiWord and a lot of progress has been made. The same with Mozilla/Firefox. Netscape 4.0 took something like a minute to load on my 386dx40/4mb iirc. Firefox takes 2 seconds (amd 1800+, 512mb) and has much more functionality. So, in my opinion, user experience of performance has improved. I think people might have forgotten how bad stuff really used to be performance-wise.
The dekstop files & folders paradigm is fine if marketing dweebs stop designing wizards that hide simplicity in a layer of complexity. What if I had a maid who said "I see you just set a piece of paper on your desk? Do you want me to file it for you? Great, I'll just shred this original while I'm at it, and you can conveniently ask me to find it whenever you need it!"
Example 1:
My dad plugs in his digital camera, and it displays a camera wizard. Great! It asks for the album name and places it in a convenient album with a nice slide-show.
The next day, he wants to edit one of the pictures, or copy it, or rename it. Too bad. Because it's now in a proprietary format in an album management program. The wizard was completely unnecessary. It have been easier for him to create a folder and drag the files into it. It would have functioned in the normal way files and folders work. He would know where they are, and could open, email, rename, delete, etc.
Another example: .MP3 file? No? Maybe it's a .WMV file? .OGG? .WAV? No... it's in the media library. And there it lies forever. You can't play it with anything else. Now I show her how to use CDEX, and click the CDDB button, then the RIP button, then whoa! And she can do whatever she wants with it.
My mom inserts a CD and Media Player asks her if she wants to rip the files to the media library. It even does a CDDB lookup and names the albums accordingly. Great! So where's that
Now I want to email that file. But I can't. Because it's not in a file on the file system, it's hiding in some "convenient" media library for me. And I want to view the pictures in the order the camera took them.
Don't you think that if we all had zippy computers with slim, efficient operating systems and applications that made modest use of resources, and had only the features people wanted, then there would be a lot of bankrupt technology companies and unemployed programmers since no one would be upgrading their systems (much)?
* Excerpt from Aldous Huxley's Brave New World *
"We condition the masses to hate the countryside," concluded the Director. "But simultaneously we condition them to love all country sports. At the same time, we see to it that all country sports shall entail the use of elaborate apparatus. So that they consume manufactured articles as well as transport. Hence those electric shocks."
"I see," said the student, and was silent, lost in admiration.
By the way, current number of mouse-clicks to configure viewing an MS Outlook sender in a given color:
17
Don't $top that fat, gravy-train from rolling! Keep the bloatware coming!
But people AREN'T demanding it. It's being foisted upon them. Nobody is DEMANDING that windows-xp is to be delivered on all new peecees except Microsoft.
That which does not kill her only prolongs my agony.
More than just code bloat: disk access speeds combined with the increase in size of everything (for "richer content", "more features", etc).
With a lot more files, a lot larger files, etc, your performance at file access (and disk caching) will decrease unless you can increase the throughput and decrease the seek time/latency of data access from the disk.
Back in 1998, most PCs were shipping with 5400 RPM hard drives; I bought a used 10k rpm drive for 200$. Nowadays? Most PCs are still shipping with 5,400 RPM drives, and 10k RPM is still good performance (although not the best out there - although, mine back then wasn't top of the line either).
Disk sizes are scaling up wonderfully. Disk access speeds are not. The same holds true with RAM.
Dear Lord: One of your creatures may be hurt tonight. Please let it be the other creature.
A lot of people like to wax nostalgic about the good ol' days when things were faster, all the while ignoring the featuresets implemented today. The fact is, yesteryear's code wasn't as advanced or featured. A word processor from ten years ago may have been pretty damned fast, but today's word processors load dictionaries to spellcheck your document and grammar as you type and import graphics.
Windows 3.1 may have been incredibly snappy, but it also lacked propery memory protection, wasn't 32-bit addressed, and didn't provide an intuitive interface. Also, more advanced typography (anti-aliasing) and filesystem indexing services like Spotlight come into play, as well as all the important system daemons running in the background that are now considered stock.
It's not that things aren't getting any faster because of bloat. It's because as power increases, the ability to add new modern features to the original experience is utilizing that extra power, just as it should.
The bottom line is that optimization is rarely the best thing a developer can be doing with his time. There's a lot more you can do with "a day" than tweak a poorly thought out algorithm. By all means optimize if your program is as slow as molasses and your profiling shows that a particular section of your code is at fault. Otherwise, good programming practice is to think about other things.
Nope, wrong. Task manager reports working set, which is whatever memory windows THINKS the process is using at the moment.
Reporting the total memory allocated by an app is meaningless, because much of that memory includes things like memory-mapping DLLs that are only loaded once, and shared amongst all processes using them.
Windows constantly trims pages from the working set of each process that haven't been accessed in a while and pages these out to disk.
When you click the minimize button windows assumes that the app (or at least large parts of it) are going to be inactive for a while, so it tries to remove as many pages from the working set as possible - hugely reducing the "memory usage" reported in task manager. Sometimes it is a little too agressive in trimming pages from the working set, and the "memory usage" immediately climbs a little again, as the app accesses memory pages that windows thought it could page out.
Try it with an app like MS Word that has background threads that constantly check spelling and stuff, and you'll see the working set goes up for a few seconds after you minimize it.
If you have the entire contents in memory you can be assured of not skipping if there becomes contention for the disk. iTunes on the mac is famous for not skipping no matter the system load, guess why?
--- I do not moderate.
The parent was understandably modded a troll, but I have to say that I agree with the sentiment, if not the exact words. My recent experience with OSX and the iLife apps is exactly that: Apple writes software that is very slick and nice for the average user, but really limited and arguably even broken for the user with atypical or demanding needs.
My wife's new iBook is pretty, but if it were my iBook, it'd be running Linux by now.
Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
I don't know about you guys, but back when I was running linux on a 33 MHz 80386, my kernel compiles went overnight. Now they take, oh, ten minutes.
I'd say that's an improvement, wouldn't you?
nobody cares about optimizing code anymore.
You can optimize in many different ways: for run-time performance, maintainability, extendibility, usability, compatibility, and probably a bunch of other ways I can't think of just now.
Many of these are at odds with each other. And since computers are getting faster, I think it's perfectly reasonable to start trading off run-time performance with some of these other things.
Accountability on the heads of the powerful.
Power in the hands of the accountable.
I could use resizable and rotatable vector fonts, create and import both bitmap and vector graphics, and load both a spellchecker and thesaurus in my copy of GeoWrite that ran under GeoWorks Ensemble 2.1 and MS-DOS 3.3 in 1991.
Not only that, but the program was well-designed enough to provide four different levels of UI complexity (allowing new users to use it without getting lost while expert users could enable all the features and even customize the toolbars), and the PC/GEOS environment itself provided multiple threads per process and preemptive multitasking but was fast enough to be considered "fast" on my 286 with 1MB of RAM and a VGA card.
The PC/GEOS folks got around the bloat because they were interested in doing so, and they were successful in almost all respects.
Modern coders seem a lot less interested in doing so, perhaps because so many of them take the bloat for granted. It wasn't always so, as many of us remember...
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
Two things. First, could it possibly be under Windows? Try minimising it and tell us again.
Well, that's just shite interface programming. Other apps don't suck 60MB to display a window.
Next. To put your question differently "Why does Matlab uses 300Mb just to add two numbers?" Because it is intended for more than that?
Matlab is designed to perform complicated calculations and analyses, so simple integer addition is an inappropriate application. iTunes is designed to play media files, so playing an MP3 is an appropriate application. Your point is void.
"Because Science" is one step from "Because old book". Try "Because of my experiment testing my falsifiable assertion".
This isn't about Audio API's - it's the whole app framework. WinCarbon some call it - the portion of Carbon ported to Windows to make Quicktime work and give the Apple look-and-feel to native windows apps.
Apple doesn't want to port every iTunes change to MFC. They write it in Carbon, keep the Windows-specific bits separate, and then just develop on Mac and recompile on Windows.
Yes it makes iTunes heavy weight and slower and a second class citizen. But it achieves Apple's goals.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
When I bought a Centris 650 in the early 90's, it was noticably faster--so much faster that I brought it to work to show my boss, as I was sure he would not believe my stories of how fast it was.
This same thing has happened to me with every generation of PCs, too...it's not just a Mac thing. I buy a new machine, and marvel at how much faster it is.
Furthermore, I can go the other way to verify this. I still have my Centris 650 in storage, and booted it up a couple years ago. It was so slow that I could not believe that I ever found such a slow machine usable.
What is really going on is that it doesn't take us long to get used to a fast machine, and since we normally never go back, we don't realize just how much faster things are now.
I had a new Dell 3.4 come into the shop last week. It was slower than our cash register box(450 PII). Of course, if any box out there had 64 processes running at start up it would be a bit slow. The customer had the box for 3 weeks. First scan with Ad-Aware = 2803 critical items. A new store record. Plus 247 on Spybot, 8 virii, 15 trojans. I'm really surprised it didn't blue screen at boot (had 2 of those last week).
Crap uses up processor time.
Professional Politicians are not the solution, they ARE the problem.
Thanks for the link. Here's one from the jargon file about real programmers.
The Story of Mel
This was posted to Usenet by its author, Ed Nather
(nather@astro.as.utexas.edu), on May 21, 1983.
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 it's 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
with the same code massaged by the optimizing assembler program,
and Mel's always ran faster.
That was beca
I want a new world. I think this one is broken.
You can verify this for yourself. Get a file containing a virus signature (find an old trojan somewhere). Disable your virus scanner, copy it to an arbitrary place on your machine, rename it to .dat, and turn on the virus scanner. Your virus scanner won't pick up the file unless you've set it to active scan everything on certain intervals. Leave it there for a few weeks and it will never be picked up by the passive process because the passive process *doesn't worry about non-executable data*.
CPU usage caused as a result of automatic spellchecking is another howler. Its one thread, which will spend most of its time blocking for IO (thats you, chief!) Typical usage patterns will see no slowdown due to the checking thread -- open up your favorite resources manager and start banging away at MS word, unless you type faster than God or start dumping copy-pasting or macro magic into the file your CPU usage won't even budge. The algorithms, by the way, give maximum priority to the user input handling threads and close to minimum for the background checks, because word processor developers know the perception of speedy response is one of the key features of their product. As a result, they'll generally not start spell-checking a copied block until the CPU is otherwise underutilized (i.e. blocking on user IO).
Help poke pirates in the eyepatch, arr.