Soviet scientific calculator gives up its Cold War-era secrets
hackaday.com
hackaday.com
But author of the video was surprised that the calculator was using Reversed Polish Notation(RPN). Hewlett-Packard (HP) produced a whole line of calculators that also used RPN. It is a pretty smart idea to use on calculators where there is not a lot of memory available.
Edit: replaced asterisks as multiplication symbol for x’s to avoid markup processing.
3 3 * 4 2 =
3 3 ^ 4 2 *The current RPN HP graphing calculators leave a lot left to be desired, and aren’t as good as the old ones. I have an HP 50g RPN graphing calculator which is amazing. But, there are even better ones that are no longer in production.
Swiss Micros makes remakes of such amazing HP calculators: https://www.swissmicros.com/products
At some point I will purchase the DM41X from there.
The reason that RPN is used is because it reduces errors with calculation, although it can be fewer keystrokes. It certainly is more concise. It also makes more sense (logically) when entering numerical data. It is just like how you would write 128 + 256 on the whiteboard. On a whiteboard you would write a 128 and then a 256 on the row below it then a + (on the left hand side). In RPN it would be 128 ENTER 256 +.
Just FYI: RPN operates using stacks. Because of the way things are displayed on stacks, it helps prevent entry errors, as it is easier to decode and review.
On an RPN calcultor: if you put in 128 and press ENTER, it goes to the highest empty stack. The ENTER means that nothing else can be entered into the stack unless an operand meant for 2 stacks is used (+, -, *, /, etc.).
(Stack) 1: 128
(Stack) 2: (null--nothing here)
(Stack) 3: (null--nothing here)
When you press 256 the result looks like this in an RPN calculator.
(Stack) 1: 128
(Stack) 2: 256
(Stack) 3: (null--nothing here)
When you press + in the above state, Stack 1 is added to Stack 2, and Stack 2 becomes null (empty)
(Stack) 1: 384
(Stack) 2: (null--nothing here)
(Stack) 3: (null--nothing here)
In the US, we only learn "traditional" (non-RPN), calculator entry, and this is even at university level! But, calculators are only allowed for checking our work in mathematics courses, at both secondary and university levels, and never for quizzes/exams/proctored material. But, computer science in secondary school (high school) may be an exception as RPN is a classic example of the usage of stacks.
I think a lot of this has to do with contracts that school districts in the United States have with the calculator ("educational") companies, which have educational material (which is integrated into standard textbooks that you use for the school year) to assist in teaching calculator entry techniques and usage. They also get quite good deals on Texas Instruments calculators, which have no RPN features whatsoever. I really do think that kids (and their educators) not knowing RPN is a huge disservice.
I personally taught myself RPN on an HP 50g while doing my undergraduate electrical engineering coursework, specifically during circuit analysis 1 and electromagnetics 1. Everyone else was using a TI-89 (Texas Instruments 89) and they were learning off of each other how to use various techniques to solve problems, while I was alone with learning stuff on the calculator. Because of the complex entry of various different unit types and integrals, it was a pretty steep learning curve, on the HP 50g, and it took me about a month to get proficient at it.(This is difficult to do on top of the coursework because you are going through your weed-out courses at a "traditional" engineering program where over half the class will not pass these courses! As in, they will either get a D+ or lower, or get a W--a withdrawal grade).
But, it saved me and paid off on exams, while I was using the HP 50t, as people made all sorts of errors on their TI-89s with these really difficult equations, and got major points off. Although many different types of errors are made, a critical one is a missing parenthesis, which causes a ton of points to be taken off on an exam. Also, people with TI-89s ran out of time "double checking for errors" (such as for a missing parenthesis) on exams, and this alone can be the difference between passing and failing a course. The way the stack works on a HP 50g seriously reduces errors.
My (American) father also taught himself RPN at university when he was studying to become an accountant. But, in his case, it was easier to learn, although still not necessarily easy.
The TI-89 technically can also compute using quantities tagged with unit information, but the UI for it is too convoluted to be useful.
These things seem to not be for me.
But do students still use calculators, at all? What do they use now? I honestly have no idea.
It took me about a month to learn RPN along with equation entry, and I did that while in my weed-out courses in engineering school. Everyone was using a different calculator than me, and while they could directly learn from each other, I had to figure out how to enter stuff on my own. But, it paid off on exams, as people who made parenthesis or entry errors got major points off. It also saved time on exams and I really did not have to double check for entry errors, which can be quite tedious on electrical engineering exams.
You can do amazing things with just 105 bytes of RAM, like playing real-time games using DEG-GRAD-RAD switch as a joystick, for example.
Imagine a stack with the following registers:
T: 0
Z: 0
Y: 0
X: 0
X1: 0
The X register is the same as what you see on the indicator. There are 3 registers above X and one special register ("previous result") which is X1. When you enter digits, they go into X register, so pressing "1" "2" "3" leads to changes in X:
X: 1
X: 12
X: 123
Now if you want to add another number to what you have in X, you have to somehow tell the calculator that you're done entering the number in X. The button for that was originally just "arrow up" (^) , later it became "B arrow up" (B^), when you press it, X gets copied to Y, previous Y content gets moved to Z, previous Z content - to T, previous T content is lost. So after "123" "B^" you have
T: 0
Z: 0
Y: 123
X: 123
X1: 0
Now you may enter a new number in X; right after B^ newly entered digit will replace the content in X, and after that each additional digit will be considered a part of the number being entered. So, after "123" "B^" "56" you have:
T: 0
Z: 0
Y: 123
X: 56
X1: 0
Now you can enter the operator - after you've already entered both operands, that's why it's "Reverse" Polish Notation (forward one is in e.g. Lisp lists). If you enter "+", you'll get:
T: 0
Z: 0
Y: 0
X: 179
X: 56
So the "+" operator works on content of Y and X, Z gets copied to Y, T gets copied to Z and previous T content remains in T. X1 now has previous value - what was in X before operator, that is, 56.
If you want to calculate 1 + 2 x 3, you enter 1 B^ 2 B^ 3 x + , and if you want to calculate (1 + 2) x 3, you enter 1 B^ 2 + 3 x . "x" here is "multiply". Notice you don't need to enter B^ again if what you have in X is the result of operator application, not just entered from the keyboard.
There are commands X <-> Y, which swaps X and Y (and X also gets copied to X1), and "circular" (looks like "recycle" icon, which is triangular with 3 arrows, only this icon is round), which sends X to T (and X1), T to Z, Z to Y and Y to X. Four level deep stack is usually enough for many manual problems.