Программируемый калькулятор

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Современный программируемый калькулятор
Советский калькулятор «Электроника МК-52», модуль расширения памяти и руководство по эксплуатации

Программи́руемый калькуля́тор — калькулятор, который обладает функциями ввода и выполнения программ.

Параметры и возможности[править | править код]

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

  • Объём программной памяти, который может измеряться в байтах, командах или операторах языка программирования. Объём программной памяти ограничивает максимальный размер исполняемой программы, определяя тем самым пределы возможностей калькулятора. Во многих калькуляторах оперативная память, как и в обычных компьютерах с архитектурой фон Неймана, изначально едина и не делится на память данных (регистры памяти) и память программ. Разделением памяти на регистровую и программную управляет пользователь, что даёт возможность более гибкого её использования.
  • Способ программирования определяется языком, на котором составляются программы.
  • Технические ограничения программ, связанные с особенностями реализации командного языка и схемотехники калькулятора. Например, количество подпрограмм, которые могут быть вложены друг в друга, наличие или отсутствие косвенной адресации в командном языке.
  • Наличие энергонезависимой памяти, то есть возможность длительного хранения содержимого оперативной памяти при выключении калькулятора и наличие или возможность подключения устройств для оперативного ввода-вывода программ и данных. Для программируемых калькуляторов эта особенность является крайне важной, так как именно она определяет затраты времени на приведение калькулятора в рабочее состояние: при длительном хранении или возможности быстрой загрузки заблаговременно подготовленной к использованию программы его можно просто включить и работать, при отсутствии энергонезависимой памяти каждому сеансу работы вынужденно предшествует подготовительный процесс, заключающийся во вводе программы и её проверке.

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

Наиболее мощные программируемые калькуляторы обладают графическим экраном, встроенным языком программирования высокого уровня, возможностью связи с ПК для загрузки программ или данных, интерфейсом с внешними устройствами; используются процессоры с тактовой частотой в десятки мегагерц, память может содержать сотни килобайт ОЗУ и мегабайты флэш-памяти. Такие калькуляторы также нередко снабжаются системой символьных вычислений, включающей различные манипуляции с выражениями, решение уравнений и их систем, символьное дифференцирование и интегрирование, а часто и решение дифференциальных уравнений в символьном виде. Может поддерживаться рисование двумерных и трёхмерных графиков и диаграмм, операции линейной алгебры, развитые средства статистического анализа данных, финансовые вычисления, вычислениями с комплексными числами. Для некоторых есть возможность программирования на C на компьютере, с последующей кросс-компиляцией и загрузкой кода.

История[править | править код]

Olivetti Programma 101 — Museo nazionale scienza e tecnologia, Milan
  • В 1965 году итальянская фирма Olivetti выпустила настольное программируемое вычислительное устройство «Programma 101 (англ.)». Аппарат был способен выполнять арифметические действия, извлекать корни, находить абсолютное значение числа. Память в 240 байт распределялась между регистрами памяти и шагами программы. Для управления использовалась простая клавиатура, вывод данных производился на печатающее устройство. Программирование выполнялось на простом символьно-кодовом языке, включавшем операции передачи данных между регистрами, операции с данными и условные и безусловные переходы. Предположительно Olivetti Programma 101 можно считать первым в мире программируемым калькулятором, как и первым относительно портативным персональным компьютером, хотя и тот, и другой термин появились позже.[1][2][3]
Casio AL-1000 — первый программируемый калькулятор фирмы Casio
  • В 1967 году японской фирмой Casio был представлен калькулятор Casio AL-1000. Он был выполнен на дискретных полупроводниковых элементах (284 отдельных транзистора, в основном Toshiba 2SC371, и 1500 диодов), имел 14-разрядный индикатор на газоразрядных лампах, память на ферритовых сердечниках и интерфейс для вывода данных на электрическую пишущую машинку. Возможности калькулятора были весьма ограниченными: четыре действия арифметики, извлечение квадратного корня, 4 регистра памяти, программная память на 30 шагов. В калькуляторе была реализована простая арифметическая логика операций (см. ниже). При этом аппарат имел размеры 380 x 440×238 мм, весил более 12 кг и продавался по цене, эквивалентной 900 американским долларам[4].
HP9100A
В связи с этим устройством стало широко известно само понятие «программируемого калькулятора». Первоначально HP 9100A был назван «персональным компьютером» (personal computer), но ответственные лица фирмы HP сочли, что название «калькулятор» сделает товар более продаваемым, в частности, из-за того, что службы закупки предприятий и организаций, как правило, имели полномочия приобретать «калькуляторы» по собственной инициативе, в то время как приобретение «компьютера», вне зависимости от стоимости, требовало санкции высшего руководства. Билл Хьюлет заметил: «Если бы мы назвали его компьютером, он был бы отвергнут компьютерными профи наших пользователей, так как он не похож на IBM»[6]. К тому же реклама HP 9100A прямо противопоставляла его компьютерам, обещая покупателю «избавление от ожидания очереди к большому компьютеру».
  • В 1970 году НИИ «Циклон» (в то время — ЦБ ПНПП при НИИ-35 Минэлектронпрома СССР[7]) был разработан первый советский стационарный профессиональный программируемый калькулятор «Электроника-70»[8], который имел 23 регистра и позволял хранить 186 команд[9]. Было предусмотрено подключение периферийных устройств, включая внешнее запоминающее устройство «Электроника-72», в котором можно было хранить 248 числовых данных или 3472 шагов программы[10]. Созданные программы можно было записывать на магнитные карты (5×9 см) и использовать многократно[11].
  • 1977 г. — разработан первый советский карманный программируемый микрокалькулятор «Электроника Б3-21». 13 регистров памяти, 60 шагов программы, обратная бесскобочная логика вычислений. Калькулятор стал родоначальником серии, куда вошли, кроме него, настольные калькуляторы МК-46, МК-64, MC-1103, совместимые по архитектуре и системе команд, с дополнительными возможностями — могли работать в качестве средства контроля производственного процесса, для чего имели систему ввода с измерителем напряжения на 8 каналов и дополнительный индикатор для отображения отклонения измеренного значения от заданного. Эти (и последующие МК-54, МК-52, МК-61… МК-161) калькуляторы использовали для работы ту же «обратную польскую запись» RPL.
  • 1979 г. — Hewlett Packard выпустила первый программируемый калькулятор с алфавитно-цифровым индикатором — HP-41C. Он имел возможность подключения дополнительных модулей — RAM, ROM, устройства чтения штрих-кодов, кассеты с магнитной лентой, флоппи-дисков, принтеров, разъёмов RS-232, HP-IL, HP-IB.
  • 1980 г. — появился Б3-34 — основательно доработанный вариант Б3-21, родоначальник наиболее массовой серии советских и российских программируемых калькуляторов так называемого «расширяющегося ряда». Практически вся литература по программируемым калькуляторам, серии журнальных статей в «Науке и жизни» и «Технике молодёжи», справочники по расчётам на микрокалькуляторах, выходившие в СССР в 1980-е годы, ориентировались на систему команд этого калькулятора. Большинство моделей советских программируемых калькуляторов были либо его полными функциональными аналогами (МК-54, МК-56), либо расширением (МК-61, МК-52, МС-1104).
  • 1985 г. — в СССР появились МК-61 и МК-52 — расширенные версии семейства Б3-34, в которых увеличен объём программной памяти, добавлен один регистр и несколько новых функций. За исключением нескольких недокументированных функций, сохранена совместимость с Б3-34. Также, у МК-52 появилась возможность сохранения программы во встроенной ППЗУ и возможность подключения внешней памяти — хранилища библиотеки программ.
  • 1985 г. — появился первый программируемый калькулятор с графическим дисплеем Casio FX-7000G.

Режимы работы[править | править код]

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

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

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

Способы программирования[править | править код]

Известно три принципиально различных способа программирования калькуляторов: символьно-кодовый машинный язык, AER (Algebraic Expression Reserve) и язык высокого уровня.

Символьно-кодовый язык[править | править код]

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

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

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

AER (Algebraic Expression Reserve)[править | править код]

Оригинальный метод программирования AER был реализован в японском программируемом калькуляторе фирмы Sharp модели EL-5100 и следующих калькуляторах этой серии: EL-5100S, EL-5101, EL-5103, EL-5150, EL-5050, выпускавшихся в конце 1970-х — первой половине 1980-х годов. Он заключается в представлении программы как набора формул. Для каждого требуемого результата вычислений создаётся формула. Для каждой формулы оператор определяет аргументы (обозначаемые символами) и записывает в обычном, алгебраическом виде саму формулу (например, для формулы «f(A,B,C)=0,5·A·B·sin(C)» резервируются переменные A, B, C и вводится сама формула в виде «f() = .5 A B sin C»). Когда оператор нажимает клавишу вычисления формулы, калькулятор сначала самостоятельно запрашивает у пользователя значения аргументов A, B и C, после чего вычисляет введённую формулу. Легко видеть, что возможности собственно программирования (то есть создания программ со сложной логикой) при данном методе ограничены, зато он весьма нагляден, требует минимум времени на изучение и вполне достаточен, если требуется многократное вычисление значений по одним и тем же сложным формулам. Менее очевидным, но тоже существенным положительным качеством логики AER является также меньшее, по сравнению с обычной алгебраической логикой, число нажатий клавиш для ввода одних и тех же формул. Возможности калькулятора с логикой AER ограничиваются максимальным количеством и размером формул и максимально допустимым числом одновременно используемых переменных. У наиболее мощного представителя серии, EL-5150, максимальное количество программируемых формул составило 99 при предельной суммарной длине 1400 знаков, максимальное число используемых переменных — 26.
Широкого распространения логика AER не получила, так как при ограниченных возможностях требовала сложной клавиатуры с большим количеством знаков и сложного алфавитно-цифрового дисплея, которые в период её появления были ещё экзотикой. Тем не менее, некоторые современные программируемые калькуляторы поддерживают близкие к AER методы программирования. Так, например, калькулятор Citizen SRP-325G, помимо программирования на упрощённой версии Basic’а, поддерживает сохранение и исполнение в качестве программ введённых оператором формул. Данный режим очень близок к AER: оператор набирает формулу вычисления с использованием символьных переменных и команду сохранения этой формулы в программной памяти под одним из 10 доступных номеров; впоследствии по команде исполнения программы с данным номером калькулятор автоматически запрашивает у пользователя значения использованных в формуле переменных и вычисляет результат. Допускается даже пропуск операции умножения в формулах, характерный для AER.

Язык высокого уровня[править | править код]

Первые калькуляторы, программируемые на языке высокого уровня, реализовывали ограниченное подмножество языка Бейсик, специально адаптированного под использование в калькуляторе. До настоящего времени калькуляторы, программируемые на ЯВУ, используют либо Basic, либо собственный язык, построенный по его образцу. Среди немногочисленных исключений из этого правила — язык Reverse Polish Lisp (RPL), применяемый в калькуляторах Hewlett-Packard, и Lua, используемый в последних моделях калькуляторов Texas Instruments. Наиболее мощные и сложные из выпускаемых сейчас калькуляторов имеют системы кросс-компиляции с языка Си и загрузки исполняемого кода.

Производители[править | править код]

Наиболее известными производителями программируемых калькуляторов являются американские фирмы Texas Instruments и Hewlett Packard, а также японская CASIO. В линейке моделей этих фирм присутствуют все типы программируемых калькуляторов. Топовые модели имеют большие графические экраны (среди моделей второго десятилетия XXI века — цветные и сенсорные), снабжены встроенными системами символьных вычислений (CAS), поддерживают мощные языки программирования.

Texas Instruments[править | править код]

Серии TI-89 и TI-92 фирмы Texas Instruments используют алгебраическую нотацию и версию Бейсика, называемую TI-BASIC. Компилятор с C для PC, а также средства программирования на Ассемблере, созданы любителями этого калькулятора. Большое число программ, в частности игр, написано разными авторами. Разница между двумя сериями заключается в дизайне: калькуляторы серии TI-92 обладают клавиатурой QWERTY и большим экраном, соответственно они не карманные. Недостатком является отсутствие отпечатанного руководства (в США они продаются с таким руководством). Для большинства руководство доступно только на CD-ROM и в Интернете. Кроме того, кабель для связи с PC надо покупать отдельно. Калькуляторы используют процессор 68000 с тактовой частотой 12 МГц (10 МГц для некоторых старых экземпляров старых моделей). Другие параметры этих калькуляторов приведены в таблице.

объём доступного
пользователю ОЗУ
объём доступной
пользователю флэш-памяти
дисплей год выпуска
TI-89 188K 384K 160×100 1998
TI-89 Titanium 188K 2.7M 160×100 2004
TI-92 68K нет 240×128 1995
TI-92 Plus 188K 384K 240×128 1998
Voyage 200 188K 2.7M 240×128 2000

В настоящее время производятся только TI-89 Titanium и Voyage 200. Из младших моделей особенно популярен TI-83 Plus.

Hewlett-Packard[править | править код]

Серия HP-49G (к которой относятся калькуляторы HP-49G, HP-49G+, а также HP-48GII и HP 50g) фирмы Hewlett-Packard использует быстрые процессоры ARM9, имеет развитую систему алгебраической (символьной) математики, обратную польскую нотацию и язык RPL (Reverse Polish Lisp). По своим возможностям эти калькуляторы ещё более продвинуты, чем TI-89/92. Однако, по отзывам пользователей, эти калькуляторы, изготовляемые в Китае, страдают от проблем чисто механического свойства: корпус пластиковый, клавиши резиновые, а главное, быстро (часто за несколько месяцев) выходят из строя. Фирма присылает новый калькулятор, но и там клавиши так же быстро ломаются. Что касается руководства, то оно отрывочно: многих сведений там просто нет. Руководство на 800 страниц выложено на сайт в электронном виде, но оно не полно и не переведено с английского языка.

Предыдущая серия, HP-48G, отличалась гораздо более высоким качеством клавиатуры и сборки, но калькуляторы этой серии больше не производятся. Частично указанные недостатки исправлены в модели HP 50g. Как и для TI-89/92, для HP-49G существует и компилятор Си, и масса игр и других программ. Параметры этих калькуляторов приведены в таблице.

объём доступного
пользователю ОЗУ
объём доступной
пользователю флэш-памяти
дисплей процессор год выпуска
HP-48GII 80.7K нет 131×64 Arm9 48 MHz 2004
HP-49G 330K 500K 131×64 Saturn 4 MHz 2000
HP-49G+ 330K 500K 131×80 Arm 75 MHz 2003

Casio[править | править код]

Фирма Casio тоже выпускает программируемые калькуляторы, в том числе цветные графические, а также с вводом информации при помощи стилуса (ClassPad 300 Plus). Калькуляторы Casio программируются на упрощённом BASIC’е, реализуют алгебраическую логику вычислений. По возможностям программирования они несколько слабее, по прочим показателям — находятся на одном уровне или даже превосходят ведущие модели TI и HP.

Прочие[править | править код]

Программируемые калькуляторы также выпускают фирмы Sharp и Citizen. Калькуляторы этих производителей, по сравнению с топовыми моделями HP, CASIO и TI, существенно проще и не имеют ни большого объёма памяти, ни системы символьных вычислений.

См. также[править | править код]

Примечания[править | править код]

  1. 'Desk-top' computer is typewriter size, Business Week (October 23, 1965).
  2. Desk-Top Size Computer Is Being Sold by Olivetti For First Time in US, The Wall Street Journal (October 15, 1965).
  3. 2008/107/1 Computer, Programma 101, and documents (3), plastic / metal / paper / electronic components, hardware architect Pier Giorgio Perotto, designed by Mario Bellini, made by Olivetti, Italy, 1965-1971 (англ.). www.powerhousemuseum.com. Дата обращения: 20 марта 2016.
  4. Casio AL-1000 на сайте Vintagecalculators
  5. Описание калькулятора HP 9100A (англ.)
  6. HP9100A на официальном сайте фирмы HP.
  7. Центральный научно-исследовательский институт «Циклон» (ЦНИИ «Циклон») Министерства электронной промышленности СССР и его предшественник, г. Москва (1961–1991 гг.) / Филиал Российского государственного архива научно-технической документации в г. Самаре. Путеводитель. — 2007.
  8. Научно-исследовательский институт «Циклон» / Войска радиационной, химической и биологической защиты Вооруженных сил Российской Федерации. 100 лет в строю: юбилейный сборник. Часть 2. — М.: Компания «Информационный мост», 2018. — С. 112-113.
  9. Майстров Л.Е., Петренко О.Л. Приборы и инструменты исторического значения: Вычислительные машины — М.: Наука, 1981. — С.114.
  10. Руководство по рациональному выбору геодезического оборудования для инженерных изысканий в строительстве — М.: Стройиздат, 1977. — 112 С.
  11. Справочник геодезиста. Изд. 2-е. Т.1.  / ред. В.Д. Большакова, Г.П. Левчук. — М.: «Недра», 1975. — С.145-146.

Литература[править | править код]

  • Я. К. Трохименко, В. П. Захаров, Н. П. Ромашко, В. А. Жижко, Ю.М. Польский. Программируемые микрокалькуляторы: устройство и пользование. — Москва: Радио и связь, 1990. — 272 с. — 40 000 экз. — ISBN 5-256-00318-6.

Ссылки[править | править код]