Computer Power

or

Why "X-rated" Is for Adolescents, Not Adults


In the physical world, power is the ability to do work: more power means you get more work done in less time. In a computer it has the same meaning, but the kind of work to be done is more metaphorical. The same ambiguity works in the real world too, but we seldom think that way.

What is your purpose? What work are you trying to get done? If your work is to dig a big hole in the ground for a swimming pool, a Bobcat is more powerful than a Ferrari, but if your purpose is to cross a race track finish line in front of a Volkswagen, then a Ferrari is more powerful than a Bobcat. If your work is to extract large sums of money from people with more dollars than sense, then a Ferrari is more powerful than almost anything except maybe a RollsRoyce or a Gulfstream.

If the work you are trying to get done is a very large programming project in a time budget, then the most powerful computer is the one that gets your program running in the shortest time; the computer that runs hot enough to fry an egg might be more powerful if your work is to make breakfast. Some people seem to think that a computer that requires programmers to retype a long string of characters on a command line every time they want the computer to do something is more powerful than a computer that just does what you want with a simple point and click, but they are confusing the power of the operator with the power of the computer.

The most powerful thing in the whole world is inside your head: You can do anything, and despite what the sci-fi writers may tell you, no computer is more powerful than you are at inventing new ways to make machines more powerful. If you want to. But you -- we computer professionals -- control the computers. We are more powerful than the computer. That power is multiplied when we tell the computer how to do something so well we never have to tell it again how, only when. That's what we write computer programs for, to transfer that power to the computer. There's more where it came from, so there's no danger of making them more powerful than ourselves. They might be more powerful at digging holes in the ground, or crossing the finish line first, or frying an egg, or playing chess, but they will never be more powerful at making computers more powerful. But that's another story.

Today we want to examine what makes the computer powerful today, not in some supposed near or distant future. A competent typist can type some 40wpm = about 3 characters per second. Unlike English text -- which a good typist can type 200wpm or more -- command lines are a bunch of special symbols and numbers and stuff that take longer to type because you must think about the individual characters and not whole words at a time. You also make more mistakes -- every programmer I ever watch -- especially the ones who claim to be "a good typist" -- make a lot of mistakes. They correct their mistakes very fast, banging on the backspace key up to twice the speed of normal typing, but then they need to retype all those characters they backed up over -- and there are a lot, because the typing pipeline is faster than the realization you made a mistake, typically a dozen characters or more to back up over and retype if you are fast -- so a 40-character command line is actually 80 or more keystrokes. Do the math: it's an order of magnitude more time than two clicks and a mouse drag.

Why does it seem faster? Because your brain is fully occupied doing -- and correcting -- your typing, whereas the click and drag takes almost no thought at all, so you feel like you are sitting around and waiting for the computer. And you are! Except it is doing the job faster than you could -- with the computer sitting around and waiting for you.

The Windows operating system can do everything an older OS like Unix (Linux/OSX) can do, and often faster. Windows can do some things those older systems cannot do (like make a full system backup without rebooting, which is a great time-saver), but anything you can program a computer to do on a command line, you can also program a computer to do by writing a program to do it which you can click on the next time, instead of retyping the same program every time.

Remember that hole in the ground for the swimming pool? You can dig the hole in the ground with a pick and shovel, and get it much more precise than with a power tool like a Bobcat, but who would want to? It takes so much more time. A command line is like that. It (like the pick and shovel) is very powerful for separating large sums of wage money from people with more dollars than sense, but not very powerful for digging a swimming pool hole in four weeks or less.

When I started programming computers, the command line was all there was. I got good at it. I was faster than other programmers at correcting my mistakes, because I knew how to do copy-and-paste on a keypunch machine (copying went at 20 characters per second instead of 3cps retyping, which everybody else did). Then in 1984 computers grew up. They learned how to do what I wanted without my spelling it out every time. The graphical user interface is the operating system for adults who want to get work done. X-rated systems -- you know, the ones with 'X' in their name, like "OSX" or "LinuX" and sometimes referred to by gurus as "*x" -- are still stuck in the dark ages, and like "X-rated" movies, they are preferred by people who have not yet grown up. Those users feel like they are doing more, but it's only because the users are doing more, while the computer actually does less.

So when I use a computer, I want the most powerful computer available. At home that's a 400MHz MacOS with no command line at all, and my work gets done on it so much faster than with a pick and shovel. When I am required to use a system you can buy at a computer vendor, Win10 out-performs all the competition (both of them), but the weenies at Microsoft are working hard to change that.
 

C

C is the grade we educators give students who did not earn an A or B. The programming language so named was invented some forty years ago as a cheap imitation of Fortran, to run on minicomputers too small to run Fortran. Like command lines (which are even older), it is the slow way to do things, but the better languages have disappeared. I already described my experience with C-like languages in my essay "C++ Considered Harmful" so I don't need to repeat it here.

Next time you are tempted to think that writing code in Java on Windows is "less powerful" than coding in C++ on Linux, consider the "total cost of ownership" (TCO) rather than how busy it keeps you. The first summer I was involved with the NWAPW, I watched two teams of students work on parallel four-week projects. One team used Java that ran on Win10 -- the camera required Windows, the language was my choice based on student (and my) experience -- the other team used programs written in C running on some derivative of Linux. The Java team had running results at the end of the first week, and the other team didn't finish in four. The language and OS weren't their only problems, but choosing weaker tools didn't help them any. The next year everybody used Java on Win10 and had running in two weeks the job the other team didn't finish the previous year. They used the most powerful tools available, which the previous effort did not.

Tom Pittman
Rev. 2019 May 29
 

Links:

Why Java? Why Win10?
Organic Food and Linux
C++ Considered Harmful
The Problem with 21st Century AI