Guess I'm a little too young for the 12c. I grew up on the 28S.
Concatenative languages like the HP RPN offer a nice gentle introduction to programming. In fact, I'll go further and say they trick you into programming without even realizing it. One minute you're working through a calculation for the Nth time via the same series of button presses, the next minute you're recording those button presses into a new user-defined button, and moving on to some higher level calculation. I've seen people do this and think they're "just calculating," when in fact they're doing bottom-up programming.
Here's an example if you're not familiar with HP RPN. Say you're performing a repetitive computation like finding the euclidean mean with X and Y already sitting on the stack. These are the buttons you push:
DUP * SWAP DUP * + SQRT
You can turn this into a program by recording the same set of button presses, then giving it a name:
<< DUP * SWAP DUP * + SQRT >> 'L2NORM' STO
On the 28S and later calculators, there's a menu that holds stored programs. Now you just navigate to that menu and hit the button under 'L2NORM'.
This natural progression from calculation -> programming is something I miss in other languages. I like the idea of concatenative languages [1] like Factor, Joy and Forth, but hesitate to embark on anything more than trivial programming with them; their terseness can be even more extreme than Lisp's.
They missed the best geeky part: the most recent 12C (or 12C+ as it's known among the enthusiast crowd) is a hardware redesign, using a modern 32 bit ARM based CPU (Atmel AT91SAM7L128), very similar to the 30B and 20B. But rather than risk introducing firmware errors with a code rewrite, the 12C+ emulates the original CPU and runs the original microcode. It's much faster, of course.
I think they've even released an SDK for it, if you're into reflashing with your own code...
I was taking the final, and the professor lent me his calculator. It was an HP RPN, and he said he didn't know how to use it. I figured it out quickly enough -- as a computer guy I know how stacks work -- and went to town banging out calculations on that thing in record speed.
Since speed is an essential part of test-taking, and I was notoriously slow at doing calculations, I was at real risk of flunking the exam and the course. As it is I saved my bacon. Thank you, HP! Thank you, RPN!
>"The financial calculator is headed the way of the
>wristwatch: a no-longer necessary device that users
>carry because of sentimentality, vanity or an
>unwillingness to change,"
I disagree with the wristwatch comparison. I'm in my twenties, and I still rather like having a watch. Checking a wristwatch is much, much, more convenient than pulling a cellphone out of a pocket, activating its display, and reading the time. Especially when outdoors, I'd much rather rely on a wristwatch for timekeeping than a cellphone. I can drop a cellphone. I can't drop something that's tied to my wrist.
Sounds like you agree with the comparison but not the conclusion. Calculators, like wristwatches, are instant-on, very durable, and can go through years of use without charging the batteries.
I guess I'm really disagreeing with the validity of the analogy. I don't think the situation with wristwatches is analogous to calculators. Wristwatches still retain many functional advantages over cell phones (e.g. hard to drop, always on, etc.) whereas calculators do not. In other words, a smartphone can completely subsume the functions provided by a standalone calculator. A smartphone cannot yet do the same for wristwatches, and hence the analogy is flawed.
I have a 17B-II, just preferred the upright form-factor. Beautiful little machine, does everything you need without frivolous bells and whistles. Also a 28S, just because :-)
Hackers might delight more in the HP-16C "Computer Scientist" calculator[1]. It can be set to perform calculations on variable word sizes up to 64 bits, which is amazingly useful when you're working with processors that use non-standard word sizes (e.g., the 29x22 bit fixed-point ALU from a chip I worked on for a few years). It's also a great way to teach someone to program assembler, since it's programmable in a rudimentary RISC style.
Full disclosure: I'm something of an HP calculator nerd. I have an 11C, a 15C, a 16C, a 32SII, and a 42S. Once you get used to RPN, you will never want to go back to algebraic calculators.
I'm a 42s diehard, but the Free42 app for iPhone has gotten so good that I'm not using the real one anymore (and it's larger than the iPhone which is off-putting)
Still, another great calculator for programmers. The extra fn keys are great for working with large hex values.
Though of course the 16C is only available from eBay at blood-curling prices. I'd love one, but it's just too hard to justify a few hundred dollars to upgrade from a perfectly functional 11C.
It's not as fun as it sounds. Advent Axys, a portfolio management system I used to work with, has a whole reporting language called RepLang that uses notation like this.
Fun fact: Advent Software[1] was the second largest software company in San Francisco as of 2007 - not sure if that's still the case.
If you're an old HP calculator user go check out orpie. It's an RPN calculator for the console. It doesn't appear to be actively developed. Still, it has already got everything I want in a calculator and works very, very well.
When I got my first real engineering job, you could tell the age of the engineer by the era of HP calculator on their desk (or frequently in their hand). One guy had one with red 7 segment lights and 4 slots in the back, lots of guys had the engineering version of the 12, I had my 28S, and a couple young-uns had the 48. There was one guy with a TI, but he didn't last long.
I find I'm a lot better with the 28 with it's 3 or 4 visible stack items than the single visible one of the smaller calculators. But it is a lot bulkier, and i teats batteries. I think I've had to replace them 5 or 6 times in the time I've owned the thing.
The 12c is pretty nice — it maintains the classic HP calculator look and still has the really nice buttons. That said, the HP48 remains the best calculator ever. The m48+ emulator for the iPhone is a great substitute for the real thing.
I was dismayed to find the batteries had corroded and ruined my trusty HP-41C, which I bought back in '82. I loved that calculator. I programmed my first hack on it. You could set a flag to run the first program in memory on startup. If someone walked away from their desk, I would grab their HP, write a program to turn the calculator off, then set the flag. It was fun prank, and it actually got a few people interested in learning how to program theirs.
The calculator of choice I've found on the trading desk is Microsoft Excel. It's also the production data-moving system of choice, with hilarious consequences.
Concatenative languages like the HP RPN offer a nice gentle introduction to programming. In fact, I'll go further and say they trick you into programming without even realizing it. One minute you're working through a calculation for the Nth time via the same series of button presses, the next minute you're recording those button presses into a new user-defined button, and moving on to some higher level calculation. I've seen people do this and think they're "just calculating," when in fact they're doing bottom-up programming.
Here's an example if you're not familiar with HP RPN. Say you're performing a repetitive computation like finding the euclidean mean with X and Y already sitting on the stack. These are the buttons you push:
You can turn this into a program by recording the same set of button presses, then giving it a name: On the 28S and later calculators, there's a menu that holds stored programs. Now you just navigate to that menu and hit the button under 'L2NORM'.This natural progression from calculation -> programming is something I miss in other languages. I like the idea of concatenative languages [1] like Factor, Joy and Forth, but hesitate to embark on anything more than trivial programming with them; their terseness can be even more extreme than Lisp's.
[1] http://concatenative.org/wiki/view/Front%20Page