Although more sophisticated methods for calculator programming exist, some manufacturers (e.g., Hewlett Packard or Sharp) continue to offer calculators today that offer keystroke programming capability. One possible reason, in this author's opinion, is that keystroke programming remains the most ergonomic method for entering simple programs into a hand-held calculating device.

Take the following example: let's suppose that you're calculating the volume of cylinders. To do so, you first calculate the area of the cylinder's base, and then multiply it by its height. For a cylinder that's a foot in diameter (half a foot in radius) and two feet high, you'd key the following sentence on a typical algebraic calculator:

.5 × π × 2 =

Since you know your calculator, these keystrokes come automatically. However, you probably don't cherish the thought of having to key them in every time. On a keystroke programmable calculator, you have an alternative: you can create a simple program. For instance, on a typical Texas Instruments calculator, your program may look like this:

```x²
×
π
×
R/S
=```

In other words, the exact same key sequence that you typed in before now becomes your program; you simply replaced specific arguments with R/S (run/stop) instructions to make the program wait for user entry. In contrast, the equivalent program in BASIC on a Casio calculator might look something like this:

```10 INPUT "R=",R
20 INPUT "H=",H
30 PRINT R*R*π*H```

Entering this program requires many more keystrokes. It also requires that you know the syntax of the INPUT and PRINT instructions. Furthermore, the program bears very little resemblance to the keystrokes you use to calculate the same result by hand.

While both forms of programming can be useful on calculators, for the creation of ad-hoc programs, keystroke programming is clearly a superior method. On a keystroke programmable calculator you're familiar with, you can write fairly sophisticated applications quickly, easily, and without as much as glancing at the manual, which is certainly not the case with calculators that use a symbolic programming language.

Keystroke programming also has great educational value. Many programmers never wrote programs in anything but a high-level programming language such as BASIC or C++. They have little or no knowledge about the way their high-level programs are executed on the computer's processor. The result is often a bloated or inefficient application.

While it is true that a thorough knowledge of machine language can help, machine language can be overwhelmingly difficult to use. The need to think in the binary or hexadecimal number bases, the intricacies of interfacing with a modern operating system to accomplish something as simple as presenting a result to the user can easily overwhelm all but the most eager students.

Keystroke programmable calculators offer an alternative. The use of numbered registers and numbered program steps gives the programmer a solid "feel" for the physical architecture of the machine. The calculator programmer who became familiar with the concept of indirect addressing, found on many of the more sophisticated programmable units, will have little or no difficulty grasping the concept of a C pointer later. At the same time, a keystroke programmable calculator uses the familiar decimal number system, and accepting input from the user or displaying a result is trivially accomplished.

For these reasons and more, keystroke programmable calculators remain my preferred handheld calculating devices. Few calculators offer the same versatility as, for instance, an HP-15C or an HP-67. Of course, using an HP-67 has another advantage: when others see you with a calculator that has a whirring magnetic card reader and a LED readout, they quickly grant you all the respect a geek of your league deserves...