На хабре уже многократно проскакивали статьи и переводы о калькуляторах с обратной польской нотацией. Раньше я не придавал им большого значения, пока на глаза не попался перевод статьи «Мягкое знакомство с дополнительным кодом», где фигурировал программистский калькулятор 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 фунтов (точную цифру не помню, но порядок такой). Говорю, принеси в мастерскую, как будешь. И вот, товарищ из соседней мануфактуры даёт возможность прикоснуться к легенде.
Прикосновение к живой легенде (сверху эмулятор)
Даже передать не могу эмоции, которые я испытал. Можно видеть, что калькулятор позволяет из коробки работать с HEX, bin, oct и dec числами. Мне прям трижды захотелось обрести настоящий RPN калькулятор от HP. Но цена на такие калькуляторы очень кусается. Для примера — обычный научный калькулятор можно купить за 2-3 тысячи рублей, а RPN калькулятор будет стоить сразу под десять тысяч — за БУ.
Задняя крышка HP-16C
Но есть ли выход? Если хочется экономии, но интересна польская нотация, то можно взять себе БУ советскую альтернативу, программируемые калькуляторы: «Электроника Б3-34», «Электроника МК-52», «Электроника МК-54», «Электроника МК-56», и, конечно же, «Электроника МК-61».
Изначально я рассматривал модель калькулятора «Электроника МК-56» за то, что он такой большой и удобный, но мне показалось, что его ценник немного не бюджетен для целей «поиграться», поэтому я взял себе МК-61 в полном комплекте в состоянии нового, за какие-то смешные деньги.
❯ RPN калькулятор «Электроника МК-61»
На мой взгляд, это самый доступный RPN калькулятор для всех любителей на постсоветском пространстве. Есть и другие модели, которые я перечислил выше, но этот встречается чаще всего. Их можно легко взять в состоянии нового за вполне доступную стоимость. При этом — это прекрасный калькулятор с богатыми возможностями, мало уступающий большинству калькуляторов HP в этой статье.
Явно, что создатели этой серии калькуляторов вдохновлялись техникой HP, даже именования регистров и цветовая гамма кнопок тут такие же, как у калькуляторов HP. Однако, это вполне себе самостоятельная ветвь, с кучей своих особенностей, архитектуры.
Самое приятное, что под эту серию калькуляторов, есть просто громадное количество литературы на русском языке, которые позволят быстро его освоить и эффективно использовать.
Калькулятор мне удалось купить в полной комплектации в родной коробке, в состоянии нового.
Родная коробка
В лучших традициях советских приборов, кроме инструкции, там были все принципиальные схемы, на все узлы, включая блок питания.
По-настоящему ценное что было в комплекте, кроме самого калькулятора — это руководство по эксплуатации. Это прекрасная книга, которая научит пользоваться RPN калькуляторами.
Иронично, что я даже поначалу не понимал как на нём сложить два числа, но постепенно, читая документацию, и проникаясь обратной польской записью, я начал осознавать всю громадную мощь, скрытую в этом гениальном устройстве. Даже смог отправить калькулятор во тьму. Тьма — это состояние калькулятора, когда он работает, но ничего не показывает.
1 ВП 70 F X F X F X
При этом он может делать вычисления, но мы о них не узнаем.
Исследование ошибок в калькуляторах называется
еГГогология, потому что на калькуляторе ошибка писалась словом еГГог (error).
К главным недостаткам, конкретно этой модели калькулятора, хочу отнести невозможность сохранить программу — после выключения питания калькулятора. У всех остальных устройств в этой статье такая возможность есть.
Итак, если кто-то хочет бюджетно приобщиться к теме RPN-калькуляторов, смело рекомендую вам отечественные программируемые калькуляторы. Для тех же, кто не хочет ничего покупать, доступен
очень достойный эмулятор online. Но, из личного опыта, не то ощущение, хотя я его с успехом использовал для отладки своих программ.
❯ HP-32S
Этот калькулятор — мой фаворит в подборке. Мне удалось купить его со скидкой на известных досках объявлений, конкретно мой экземпляр произведён в 1987 году.
У этого устройства достаточно классический вид именно калькулятора, к которому я привык, учась в институте. Это программируемый калькулятор, с
просто потрясающей документацией, лучшей, на мой взгляд, из всех моделей, с которыми мне довелось познакомиться.
Этот калькулятор относится семейства калькуляторов:
HP10B/14B/17B/17BII/19BII/20S/21S/22S/27S/28S/32S/32SII/42S
Среди которых не только научные, но и финансовые калькуляторы, продающихся в обычных магазинах. Буду честен, именно с этим устройством я провозился больше всего, и именно на нём я учился программировать, перенося программы с отечественных калькуляторов Б3-34 на эту модель, попутно разбираясь в отличиях отечественных гаджетов от импортных.
Например, интересная особенность этого калькулятора: у него нельзя перейти с помощью номера строки, как это было в МК-61, а только используя буквенную метку. А с начала буквенной метки, обозначаемой LBL, начинается новая нумерация. Любой переход gto (goto) после условия if или вызов подпрограммы, и начинается новая цифробуквенная нумерация, что, на мой взгляд, не очень удобно.
Но, с другой стороны, это неудобство компенсируется большим интерактивом с пользователем, когда можно выводить значение конкретной переменной, например, «X=10», и запрашивать ввод нужной переменной «Z=?».
Ниже пример такой программы. Как можно видеть, каждая метка меняет нумерацию и буквенный индекс. И тут же виден интерактивный ввод отдельных переменных от пользователя, что очень удобно.
Ещё одним отличием, от того же МК-61 (и всего семейства Б3-34), то что в отечественных калькуляторах выполняется строка после условия, если условие
не истинно (что просто ломает мозг обычному программисту), а в этом калькуляторе,
если истинно, то есть как мы привыкли.
Вообще, калькуляторы этой серии очень удобные, и как гласит
википедия, HP-42S пользовался на аукционах таким большим спросом, что купить его было практически невозможно.
Есть проект
эмуляции этой серии калькуляторов, который вполне успешно работает и я использую его даже
в своём телефоне на Андроид. Так, что если вы хотите приобщиться к прекрасному, совершенно необязательно его покупать, можно попробовать прямо в вашем смартфоне.
В общем, калькулятор невероятно прикольный и удобный, его прям по-настоящему хочется везде таскать с собой, в отличие от других моделей, который либо слишком громоздкие, либо очень маленькие.
❯ HP-12C
Этот тип калькулятора достаточно распространён в нашей стране, и доступен за адекватные деньги на всех досках объявлений. Мне он понравился тем, что больше всего похож на те «классические» калькуляторы, с которых я начал погружению в эту тему:
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 — это финансовый калькулятор, и он не умеет считать тригонометрические функции. Однако, даже на нём можно произвести расчёт синуса, косинуса, тангенса и т.д., с помощью аппроксимирующего полинома.
График аппроксимирующего полинома и синуса
Таким образом, используя этот аппроксимирующий полином, синус можно вычислить от минус 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, чтобы покинуть режим программирования.
Сделал себе табличку с рассчитанными значениями синуса, чтобы проверить корректность расчёта:
Считаю, что лучше один раз увидеть, чем десять раз прочитать как же это работает.
Для оценки разбега погрешности, посчитал интеграл по модулю, общей разницы между sin(x) и этим полиномом в заданном диапазоне. Ошибка аппроксимации получилась 2,17*10-4, что для бытовых применений вполне достояно. Разумеется, это не погрешность конкретного расчёта, это сумма всех погрешностей.
График аппроксимирующего полинома и синуса
Игры для HP-12C
Игры для калькулятора делали не только в СССР, но и на западе.
Например, в этом документе приводятся несколько игр для калькулятора HP-12C. Из них я пробовал FRUIT MACHINE.
При попытке ввода этой программы, сделал
неприятное открытие: на моей модели калькулятора, при указании адреса ячейки, надо ставить ноль. То есть, если записано [g][GTO]36, то должно быть [g][GTO]036, а иначе нельзя ввести эту команду. Как играть в эту игру я так и не понял, по идее, это эдакий игральный автомат или казино. Возможно, что программу ввёл с ошибкой.
Из забавного, кто-то перенёс программу «Лунолёт-1», которая была опубликована в журнале «Техника молодёжи» 1985 №6, с.52-57, на калькулятор HP-12C. Игра приведена в этом же документе.
Желающие потыкать этот калькулятор, вполне могут воспользоваться онлайн-эмулятором,
например этим.
Я так подробно остановился на этой, на мой взгляд, неудачной модели, потому что она самая доступная на сегодняшний день из калькуляторов HP на нашем рынке.
❯ HP-41C
Последний в моём обзоре калькулятор — это
HP-41C. Настоящая легенда калькуляторостроения, у меня даже язык не поворачивается назвать это устройство калькулятором. Несмотря на то, что у него классический вид калькулятора, это устройство имеет модули расширения памяти, подпрограмм, есть возможность подключения множества устройств, например принтер или мультиметр. Фактически — это карманный персональный компьютер, который был создан в 1979 году, за год до отечественной «Электроника Б3-34».
Мне досталось устройство, оснащённое модулем чтения магнитных карт, для чтения и записи программ,
модуль программ и методов для термических расчётов (давление, температура, переводы единиц) и модуль расширения памяти. К сожалению, ни специальных магнитных карт, ничего более у меня не было.
Калькулятор питается от хитрых батареек, которые выглядят как обрезанные пальчиковые:
Модули калькулятора и батарейный отсек.
На хабре уже была прекрасная статья от
frog "
Архитектура и программирование микрокалькулятора HP-41" и, на мой взгляд, она достаточно полно описывает возможности этого устройства.
Напоминаю, что калькулятор был изготовлен в 1979 году, когда только у горстки избранных дома был компьютер, а это устройство на тот момент выглядело просто космическим аппаратом.
Для этой модели существует громадное количество модулей расширения, и его можно подключить к отдельной шине
HP-IL, к которой можно соединять калькулятор с мультиметром, принтером и прочим.
Мной найдено прекрасное видео демонстрации работы с этим калькулятором. Это замеры ёмкости батарей и печать результата на принтере, при этом всем управляет калькулятор HP-41C:
На данный момент я разрываюсь между тем, чтобы не погрузится в пучину изучения этого невероятного устройства и тем, чтобы не потратить громадное количество денег на модули для него.
Самое интересное, что несмотря на то, то калькулятор был выпущен в 1979 году, и давно снят с производства, энтузиастами для него делаются различные модули,
например, и у него достаточно
развитое сообщество. Даже попадался проект, где
люди пилят новую аппаратную начинку к этому калькулятору, и, последние новости по нему датируются этим годом!
В общем, это устройство — настоящая легенда, совершенно неизвестная в нашей стране.
❯ Полезная литература
Вне зависимости от того, какой калькулятор вы подберёте для своей работы, хочу посоветовать две занимательные книжки.
Одна из них — детская, но с весьма взрослым посылом.
А.Г. Гайшут "
Калькулятор твой помощник и соперник в играх".
В книге в игровой форме рассказывается о том, как работает RPN-программируемый калькулятор и приводится множество классных программ.
Выше часть первой главы, где на картинке сразу приводится пример программы расчёта катета треугольника. Весьма взрослый подход.
В книге мне не хватило разбора принципов работы некоторых программ, и я даже искал другие публикации автора, где бы он более детально разбирал эти моменты, но к сожалению, не нашёл. Была мысль связаться с автором,
и у него даже есть свой сайт, но он умер в 2014 году.
Другая книга В.П. Дьяконов "
Справочник по расчётам на микрокалькуляторах" издательство «Наука»
1989. Обратите внимание на год выпуска, более ранние книги не содержат ценную информацию об иностранных калькуляторах.
Книга интересна по нескольким моментам:
- Приводится информация по различным калькуляторам, как отечественным — из серии Б3-34, так и иностранным, как — HP-11C, HP-15C, TI-58C.
- Много методического материала по реальным математическим расчётам, что может быть полезно как студентам, так и людям, которые делают расчёты в поле.
Для меня очень полезной оказалась таблица калькуляторов HP, приведённая в этой книге. По ней я и начал поиск калькуляторов на досках объявлений.
В ней же достаточно полно приводятся сведения и том, как программировать эти модели калькуляторов. Информация не заменит официальную документацию на изделие, но вполне неплохо её дополнит.
Сравнение распечатки HP-15C и живого калькулятора HP-12C
Эту книгу мне уже не удалось найти в электронном виде, поэтому пришлось покупать, рекомендую.
❯ Итог
Могу сказать прямо: программируемые калькуляторы с обратной польской нотацией меня совершенно потрясли. Это какие-то удивительные устройства, с совершенно другим стилем счёта и программирования, буквально вычислитель в кармане. Да, я понимаю, что у каждого есть сейчас смартфон, у меня в телефоне даже стоит питончик для удобства решения задач. Однако, живые кнопки всё ещё удобнее, чем гладкий экран, а особая магия ввода и решения задач на RPN-калькуляторах просто приводит меня в восторг.
Сейчас пытаюсь уговорить себя остановится и перестать скупать эти устройства, но моё нутро уже мечтает о новом калькуляторе модели HP-15C, и я даже высматриваю где и как его прикупить.
В этой подборке меня больше всего пугает пучина невероятной мощи калькулятора HP-41C, который имеет множество средств расширения возможностей, позволяет подключать свои устройства. А, главное, к нему можно делать свои модули и писать для него программы!
❯ Полезные ссылки
- Собираем собственный эмулятор калькулятора HP (англ.).
- Аппроксимация функций синуса и косинуса на калькуляторе HP-12c (англ).
- Эмулятор калькулятора «Электроника МК-61».
- Non-Hewlett Packard RPN Calculators.
- Обзор коллекции RPN-калькуляторов (англ.)
- Музей калькуляторов HP (англ.).
- Игры для калькулятора HP-12C.
- Эмулятор HP-12C.
- habr «МК-61: история, эмуляция, устройство».
- habr «Архитектура и программирование микрокалькулятора HP-41».
Если вам интересна металлообработка, старое железо, всякие DIY штуки, погроммирование и linux, то вы можете следить за мной ещё в телеграмме.
Возможно, захочется почитать и это: