Калькуляторы с обратной польской нотацией

в 8:01, , рубрики: timeweb_статьи, история калькуляторов, калькулятор, калькулятор hp, МК-61, программируемый калькулятор

Калькуляторы с обратной польской нотацией - 1


На хабре уже многократно проскакивали статьи и переводы о калькуляторах с обратной польской нотацией. Раньше я не придавал им большого значения, пока на глаза не попался перевод статьи «Мягкое знакомство с дополнительным кодом», где фигурировал программистский калькулятор HP-16C. Что сподвигло меня разобраться, что за зверь такой «обратная польская нотация» или reverse Polish notation (далее по тексту RPN).

Искра, буря, безумие… Спешно поставив эмулятор HP-16C на телефон, я полез искать калькуляторы с поддержкой RPN, попутно скупая найденные экземпляры. В этой статье хочу поведать о четырёх редких! экземплярах, которые мне удалось найти на отечественных досках объявлений, и дать некоторые рекомендации тем, кто решит прикоснуться к удивительному миру программируемых калькуляторов.

Что такое обратная польская запись?

Краткий исторический очерк, что такое обратная польская нотация

В 1920-х годах Ян Лукасевич разработал формальную логическую систему, которая позволяла задавать математические выражения без круглых скобок, помещая операторы перед (префиксная запись) или после (постфиксная запись) операндов. Например, выражение (инфиксное обозначение)

(4 + 5) × 6

может быть выражено в префиксной записи как

× 6 + 4 5 или × + 4 5 6

и может быть выражено в постфиксной записи как

4 5 + 6 × или 6 4 5 + ×

Префиксная нотация также стала известна как польская нотация в честь Лукасевича. Компания HP скорректировала постфиксную запись для использования с помощью клавиатуры калькулятора, добавила стек для хранения операндов и функции для изменения порядка записей в стеке. Полученную систему, компания HP назвала обратной польской нотацией (RPN) также в честь Лукасевича.
Более подробнее в музее калькуляторов HP.

Для нас это означает то, что для того чтобы сложить два числа, на обычном калькуляторе мы пишем:

2 + 5 =

и получаем результат. А в RPN-калькуляторе надо внести первое число в регистр Y, второе число в регистр X (они продвигаются по регистровому стеку), и потом выбрать действие:

5 [ВП] 2 +

Где [ВП] это кнопка «заталкивания» числа в стек (на калькуляторах HP — это Enter). И после этих манипуляций мы получим результат.

Таким образом, компания HP является законодателем моды и стандартом в области калькуляторостроения.

С чего всё началось

Давно слышал о калькуляторах с обратной польской нотацией, но раньше как-то не придавал им значения и не пытался разобраться, что же это такое. И тут увидев в очередном переводе от Bright_Translate ( "Мягкое знакомство с дополнительным кодом" ) калькулятор HP-16C, и по-настоящему загорелся им. Я даже начал изучать его документацию и поставил себе эмулятор (для установки, возможно, потребуется VPN). Те, кому лень морочиться эмуляторами, могут попробовать его онлайн.

В России калькулятор HP-16C купить практически нереально, полагаю что даже у коллекционеров несколько штук на всю страну. Сам калькулятор не производится уже 35 лет, но при этом является легендой. Посмотрев цены на иностранных аукционах на эти модели, даже без учёта проблем с доставкой, был, мягко скажем, в лёгком недоумении. Есть даже энтузиасты, которые делают реплики этой серии калькуляторов и когда-то я делал совместный перевод статьи про такую копию.

Но эмулятор, хоть и очень круто — это совсем не то же самое, что использовать реальный калькулятор. Некоторое время назад, компания SwissMicros выпустила точную реплику HP-16C (и всех калькуляторов этой серии). Она, хоть и была на другом процессоре, но работала на той же прошивке (удивительно, как они согласовали лицензионные дрязги). Эта модель как раз и фигурирует в статье «Мягкое знакомство с дополнительным кодом».

К сожалению, у нас невозможно достать даже этот калькулятор, хотя мне очень хотелось попробовать и увидеть устройство живьём. В качестве альтернативы я читал документацию, игрался с эмулятором, но всё было не то. Хотелось нажимать настоящие физические клавиши, ощущать всю мощь у себя в ладони.

Одержимый идеей этого калькулятора, я поведал товарищу о своих терзаниях, а он, внезапно, мне говорит: а у меня есть такой калькулятор, купил в лучшие годы в Англии за 350 фунтов (точную цифру не помню, но порядок такой). Говорю, принеси в мастерскую, как будешь. И вот, товарищ из соседней мануфактуры даёт возможность прикоснуться к легенде.

Калькуляторы с обратной польской нотацией - 2
Прикосновение к живой легенде (сверху эмулятор)

Даже передать не могу эмоции, которые я испытал. Можно видеть, что калькулятор позволяет из коробки работать с HEX, bin, oct и dec числами. Мне прям трижды захотелось обрести настоящий RPN калькулятор от HP. Но цена на такие калькуляторы очень кусается. Для примера — обычный научный калькулятор можно купить за 2-3 тысячи рублей, а RPN калькулятор будет стоить сразу под десять тысяч — за БУ.

Калькуляторы с обратной польской нотацией - 3
Задняя крышка HP-16C

Но есть ли выход? Если хочется экономии, но интересна польская нотация, то можно взять себе БУ советскую альтернативу, программируемые калькуляторы: «Электроника Б3-34», «Электроника МК-52», «Электроника МК-54», «Электроника МК-56», и, конечно же, «Электроника МК-61».

Изначально я рассматривал модель калькулятора «Электроника МК-56» за то, что он такой большой и удобный, но мне показалось, что его ценник немного не бюджетен для целей «поиграться», поэтому я взял себе МК-61 в полном комплекте в состоянии нового, за какие-то смешные деньги.

RPN калькулятор «Электроника МК-61»

Калькуляторы с обратной польской нотацией - 4

На мой взгляд, это самый доступный RPN калькулятор для всех любителей на постсоветском пространстве. Есть и другие модели, которые я перечислил выше, но этот встречается чаще всего. Их можно легко взять в состоянии нового за за вполне доступную стоимость. При этом — это прекрасный калькулятор с богатыми возможностями, мало уступающий большинству калькуляторов HP в этой статье.

Явно, что создатели этой серии калькуляторов вдохновлялись техникой HP, даже именования регистров и цветовая гамма кнопок тут такие же, как у калькуляторов HP. Однако, это вполне себе самостоятельная ветвь, с кучей своих особенностей, архитектуры.

Самое приятное, что под эту серию калькуляторов, есть просто громадное количество литературы на русском языке, которые позволят быстро его освоить и эффективно использовать.

Калькулятор мне удалось купить в полной комплектации в родной коробке, в состоянии нового.

Калькуляторы с обратной польской нотацией - 5
Родная коробка

В лучших традициях советских приборов, кроме инструкции, там были все принципиальные схемы, на все узлы, включая блок питания.

Калькуляторы с обратной польской нотацией - 6

По-настоящему ценное что было в комплекте, кроме самого калькулятора — это руководство по эксплуатации. Это прекрасная книга, которая научит пользоваться RPN калькуляторами.

Калькуляторы с обратной польской нотацией - 7

Иронично, что я даже поначалу не понимал как на нём сложить два числа, но постепенно, читая документацию, и проникаясь обратной польской записью, я начал осознавать всю громадную мощь, скрытую в этом гениальном устройстве. Даже смог отправить калькулятор во тьму. Тьма — это состояние калькулятора, когда он работает, но ничего не показывает.

1 ВП 70 F X F X F X

При этом он может делать вычисления, но мы о них не узнаем.

Исследование ошибок в калькуляторах называется еГГогология, потому что на калькуляторе ошибка писалась словом еГГог (error).

К главным недостаткам, конкретно этой модели калькулятора, хочу отнести невозможность сохранить программу — после выключения питания калькулятора. У всех остальных устройств в этой статье такая возможность есть.

Итак, если кто-то хочет бюджетно приобщиться к теме RPN-калькуляторов, смело рекомендую вам отечественные программируемые калькуляторы. Для тех же, кто не хочет ничего покупать, доступен очень достойный эмулятор online. Но, из личного опыта, не то ощущение, хотя я его с успехом использовал для отладки своих программ.

HP-32S

Калькуляторы с обратной польской нотацией - 8

Этот калькулятор — мой фаворит в подборке. Мне удалось купить его со скидкой на известных досках объявлений, конкретно мой экземпляр произведён в 1987 году.

У этого устройства достаточно классический вид именно калькулятора, к которому я привык, учась в институте. Это программируемый калькулятор, с просто потрясающей документацией, лучшей, на мой взгляд, из всех моделей, с которыми мне довелось познакомиться.

Этот калькулятор относится семейства калькуляторов:
HP10B/14B/17B/17BII/19BII/20S/21S/22S/27S/28S/32S/32SII/42S

Среди которых не только научные, но и финансовые калькуляторы, продающихся в обычных магазинах. Буду честен, именно с этим устройством я провозился больше всего, и именно на нём я учился программировать, перенося программы с отечественных калькуляторов Б3-34 на эту модель, попутно разбираясь в отличиях отечественных гаджетов от импортных.

Например, интересная особенность этого калькулятора: у него нельзя перейти с помощью номера строки, как это было в МК-61, а только используя буквенную метку. А с начала буквенной метки, обозначаемой LBL, начинается новая нумерация. Любой переход gto (goto) после условия if или вызов подпрограммы, и начинается новая цифробуквенная нумерация, что, на мой взгляд, не очень удобно.

Но, с другой стороны, это неудобство компенсируется большим интерактивом с пользователем, когда можно выводить значение конкретной переменной, например, «X=10», и запрашивать ввод нужной переменной «Z=?».

Ниже пример такой программы. Как можно видеть, каждая метка меняет нумерацию и буквенный индекс. И тут же виден интерактивный ввод отдельных переменных от пользователя, что очень удобно.

Калькуляторы с обратной польской нотацией - 9

Ещё одним отличием, от того же МК-61 (и всего семейства Б3-34), то что в отечественных калькуляторах выполняется строка после условия, если условие не истинно (что просто ломает мозг обычному программисту), а в этом калькуляторе, если истинно, то есть как мы привыкли.

Вообще, калькуляторы этой серии очень удобные, и как гласит википедия, HP-42S пользовался на аукционах таким большим спросом, что купить его было практически невозможно.

Есть проект эмуляции этой серии калькуляторов, который вполне успешно работает и я использую его даже в своём телефоне на Андроид. Так, что если вы хотите приобщиться к прекрасному, совершенно необязательно его покупать, можно попробовать прямо в вашем смартфоне.

В общем, калькулятор невероятно прикольный и удобный, его прям по-настоящему хочется везде таскать с собой, в отличие от других моделей, который либо слишком громоздкие, либо очень маленькие.

HP-12C

Калькуляторы с обратной польской нотацией - 10

Этот тип калькулятора достаточно распространён в нашей стране, и доступен за адекватные деньги на всех досках объявлений. Мне он понравился тем, что больше всего похож на те «классические» калькуляторы, с которых я начал погружению в эту тему: HP-10C HP-11C, HP-15C, HP-16C, называемые серий 10C.

Эта модель калькулятора (конкретно у меня HP-12C Platinum) имеет самую долгую производственную историю. Выпускался с 1981 года по 2006 год, и считается стандартом среди финансовых специалистов. Даже в книжке, которая шла с ним в комплекте, разбираются именно финансовые примеры его применения. Как мне рассказали, что именно эту модель используют при сдаче CFA международный профессиональный сертификат, выдаваемый CFA Institute финансовым аналитикам, которые успешно сдали экзамены и удовлетворяют требованиям по образованию и опыту работы.

С точки зрения программирования он тоже весьма необычен. Например, каждое нажатие на клавишу записывается в ячейку памяти, и программа, по сути, представляет собой набранные клавиши, которые соответствуют функции. Ещё одна забавная особенность, что на дисплее отображается номер клавиши в ряду и столбце.

К минусам могу отнести: отсутствие математических операций, а главное, всего два условия для переходов«x<=y» и «x=0», что сильно урезает возможности программирования, либо делает программу очень сложной и неинтересной. Поэтому сильно погружаться в программирование конкретно этой модели не стал.

Однако ниже приведу хороший пример, как на программируемом калькуляторе можно сделать расчёт тригонометрических функций, если он такого не умеет.

Расчёт синуса на HP-12C

Как уже сказано выше, HP-12C — это финансовый калькулятор, и он не умеет считать тригонометрические функции. Однако, даже на нём можно произвести расчёт синуса, косинуса, тангенса и т.д., с помощью аппроксимирующего полинома.

Калькуляторы с обратной польской нотацией - 11
График аппроксимирующего полинома и синуса

Таким образом, используя этот аппроксимирующий полином, синус можно вычислить от минус 0,5∙π, до плюс 0,5∙π, с достаточно высокой точностью.

Программа для калькулятора HP-12C будет выглядеть следующим образом:


command      display

[f] PRGM        00-    (для удаления существующей программы)
   STO 9       01-   44 9
   Enter       02-     36
   *           03-     20
   .           04-     48
   0           05-      0
   0           06-      0
   7           07-      7
   6           08-      6
   1           09-      1
   *           10-     20
   .           11-     48
   1           12-      1
   6           13-      6
   6           14-      6
   0           15-      0
   -           17-     30
   RCL 9       18-   45 9
   *           19-     20
   RCL 9       20-   45 9
   *           21-     20
   1           22-      1
   +           23-     40
   RCL 9       24-   45 9
   *           25-     20

После ввода нужно нажать [f] P/R, чтобы покинуть режим программирования.

Сделал себе табличку с рассчитанными значениями синуса, чтобы проверить корректность расчёта:

Калькуляторы с обратной польской нотацией - 12

Считаю, что лучше один раз увидеть, чем десять раз прочитать как же это работает.

Для оценки разбега погрешности, посчитал интеграл по модулю, общей разницы между sin(x) и этим полиномом в заданном диапазоне. Ошибка аппроксимации получилась 2,17*10-4, что для бытовых применений вполне достояно. Разумеется, это не погрешность конкретного расчёта, это сумма всех погрешностей.

Калькуляторы с обратной польской нотацией - 13
График аппроксимирующего полинома и синуса

Игры для HP-12C

Игры для калькулятора делали не только в СССР, но и на западе. Например, в этом документе приводятся несколько игр для калькулятора HP-12C. Из них я пробовал FRUIT MACHINE.

Калькуляторы с обратной польской нотацией - 14

При попытке ввода этой программы, сделал неприятное открытие: на моей модели калькулятора, при указании адреса ячейки, надо ставить ноль. То есть, если записано [g][GTO]36, то должно быть [g][GTO]036, а иначе нельзя ввести эту команду. Как играть в эту игру я так и не понял, по идее, это эдакий игральный автомат или казино. Возможно, что программу ввёл с ошибкой.

Из забавного, кто-то перенёс программу «Лунолёт-1», которая была опубликована в журнале «Техника молодёжи» 1985 №6, с.52-57, на калькулятор HP-12C. Игра приведена в этом же документе.

Желающие потыкать этот калькулятор, вполне могут воспользоваться онлайн-эмулятором, например этим.

Я так подробно остановился на этой, на мой взгляд, неудачной модели, потому что она самая доступная на сегодняшний день из калькуляторов HP на нашем рынке.

HP-41C

Калькуляторы с обратной польской нотацией - 15

Последний в моём обзоре калькулятор — это HP-41C. Настоящая легенда калькуляторостроения, у меня даже язык не поворачивается назвать это устройство калькулятором. Несмотря на то, что у него классический вид калькулятора, это устройство имеет модули расширения памяти, подпрограмм, есть возможность подключения множества устройств, например принтер или мультиметр. Фактически — это карманный персональный компьютер, который был создан в 1979 году, за год до отечественной «Электроника Б3-34».

Мне досталось устройство, оснащённое модулем чтения магнитных карт, для чтения и записи программ, модуль программ и методов для термических расчётов (давление, температура, переводы единиц) и модуль расширения памяти. К сожалению, ни специальных магнитных карт, ничего более у меня не было.

Калькулятор питается от хитрых батареек, которые выглядят как обрезанные пальчиковые:

Калькуляторы с обратной польской нотацией - 16
Модули калькулятора и батарейный отсек.

На хабре уже была прекрасная статья от frog "Архитектура и программирование микрокалькулятора HP-41" и, на мой взгляд, она достаточно полно описывает возможности этого устройства.

Напоминаю, что калькулятор был изготовлен в 1979 году, когда только у горстки избранных дома был компьютер, а это устройство на тот момент выглядело просто космическим аппаратом.

Для этой модели существует громадное количество модулей расширения, и его можно подключить к отдельной шине HP-IL, к которой можно соединять калькулятор с мультиметром, принтером и прочим.

Мной найдено прекрасное видео демонстрации работы с этим калькулятором. Это замеры ёмкости батарей и печать результата на принтере, при этом всем управляет калькулятор HP-41C:

На данный момент я разрываюсь между тем, чтобы не погрузится в пучину изучения этого невероятного устройства и тем, чтобы не потратить громадное количество денег на модули для него.

Самое интересное, что несмотря на то, то калькулятор был выпущен в 1979 году, и давно снят с производства, энтузиастами для него делаются различные модули, например, и у него достаточно развитое сообщество. Даже попадался проект, где люди пилят новую аппаратную начинку к этому калькулятору, и, последние новости по нему датируются этим годом!

В общем, это устройство — настоящая легенда, совершенно неизвестная в нашей стране.

Полезная литература

Вне зависимости от того, какой калькулятор вы подберёте для своей работы, хочу посоветовать две занимательные книжки.

Одна из них — детская, но с весьма взрослым посылом. А.Г. Гайшут "Калькулятор твой помощник и соперник в играх".

Калькуляторы с обратной польской нотацией - 17

В книге в игровой форме рассказывается о том, как работает RPN-программируемый калькулятор и приводится множество классных программ.

Калькуляторы с обратной польской нотацией - 18

Выше часть первой главы, где на картинке сразу приводится пример программы расчёта катета треугольника. Весьма взрослый подход.
В книге мне не хватило разбора принципов работы некоторых программ, и я даже искал другие публикации автора, где бы он более детально разбирал эти моменты, но к сожалению, не нашёл. Была мысль связаться с автором, и у него даже есть свой сайт, но он умер в 2014 году.

Другая книга В.П. Дьяконов "Справочник по расчётам на микрокалькуляторах" издательство «Наука» 1989. Обратите внимание на год выпуска, более ранние книги не содержат ценную информацию об иностранных калькуляторах.

Калькуляторы с обратной польской нотацией - 19

Книга интересна по нескольким моментам:

  • Приводится информация по различным калькуляторам, как отечественным — из серии Б3-34, так и иностранным, как — HP-11C, HP-15C, TI-58C.
  • Много методического материала по реальным математическим расчётам, что может быть полезно как студентам, так и людям, которые делают расчёты в поле.
Оглавление книги

Калькуляторы с обратной польской нотацией - 20

Калькуляторы с обратной польской нотацией - 21

Для меня очень полезной оказалась таблица калькуляторов HP, приведённая в этой книге. По ней я и начал поиск калькуляторов на досках объявлений.

Калькуляторы с обратной польской нотацией - 22

В ней же достаточно полно приводятся сведения и том, как программировать эти модели калькуляторов. Информация не заменит официальную документацию на изделие, но вполне неплохо её дополнит.

Калькуляторы с обратной польской нотацией - 23
Сравнение распечатки HP-15C и живого калькулятора HP-12C

Эту книгу мне уже не удалось найти в электронном виде, поэтому пришлось покупать, рекомендую.

Итог

Калькуляторы с обратной польской нотацией - 24

Могу сказать прямо: программируемые калькуляторы с обратной польской нотацией меня совершенно потрясли. Это какие-то удивительные устройства, с совершенно другим стилем счёта и программирования, буквально вычислитель в кармане. Да, я понимаю, что у каждого есть сейчас смартфон, у меня в телефоне даже стоит питончик для удобства решения задач. Однако, живые кнопки всё ещё удобнее, чем гладкий экран, а особая магия ввода и решения задач на RPN-калькуляторах просто приводит меня в восторг.

Сейчас пытаюсь уговорить себя остановится и перестать скупать эти устройства, но моё нутро уже мечтает о новом калькуляторе модели HP-15C, и я даже высматриваю где и как его прикупить.

В этой подборке меня больше всего пугает пучина невероятной мощи калькулятора HP-41C, который имеет множество средств расширения возможностей, позволяет подключать свои устройства. А, главное, к нему можно делать свои модули и писать для него программы!

Полезные ссылки

  1. Собираем собственный эмулятор калькулятора HP (англ.).
  2. Аппроксимация функций синуса и косинуса на калькуляторе HP-12c (англ).
  3. Эмулятор калькулятора «Электроника МК-61».
  4. Non-Hewlett Packard RPN Calculators.
  5. Обзор коллекции RPN-калькуляторов (англ.)
  6. Музей калькуляторов HP (англ.).
  7. Игры для калькулятора HP-12C.
  8. Эмулятор HP-12C.
  9. habr «МК-61: история, эмуляция, устройство».
  10. habr «Архитектура и программирование микрокалькулятора HP-41».

Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.

Возможно, захочется почитать и это:

Автор: Сергей

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js