Введение

Программируемые калькуляторы – это калькуляторы, способные автоматически выполнять последовательность операций под управлением хранимой программы. Большинство из них являются машинами Тьюринга и, как таковые, теоретически представляют собой компьютеры общего назначения. Однако их пользовательские интерфейсы и среды программирования специально разработаны для удобства выполнения небольших численных вычислений, а не для универсального использования. Первые программируемые калькуляторы, такие как IBM CPC, использовали перфокарты или другие носители для хранения программ. Ручные электронные калькуляторы хранят программы на магнитных лентах, сменных картриджах памяти только для чтения, флэш-памяти или в энергонезависимой памяти для чтения/записи. С начала 1990-х годов большинство этих гибких портативных устройств относится к классу графических калькуляторов. Однако до массового производства недорогих ЖК-дисплеев с точечной матрицей программируемые калькуляторы обычно оснащались однострочным цифровым или буквенно-цифровым дисплеем. Четыре крупнейших производителя программируемых калькуляторов – Casio, Hewlett Packard, Sharp и Texas Instruments. Все вышеперечисленные компании также в прошлом выпускали карманные компьютеры, особенно Casio и Sharp. Многие калькуляторы этого типа имеют монохромный ЖК-дисплей, некоторые – четырехцветный (красный или оранжевый, зеленый, синий и черный), или, в случае некоторых моделей высшего класса на январь 2022 года, цвет, аналогичный мониторам, отображающим 16- или 32-битную графику. Поскольку они используются для построения графиков функций, экраны этих машин адресуемы по пикселям. Некоторые из них оснащены сенсорным экраном, звуковым сигналом или другими звукоизлучателями, внутренними часами, модемами или другими устройствами связи, включая инфракрасные (IrDA) приемопередатчики, несколькими типами портов для периферийных устройств, таких как принтеры, и портами для карт памяти различных типов. Широкая доступность и низкая стоимость персональных компьютеров, включая ноутбуки, смартфоны и планшеты, постепенно сделали программируемые калькуляторы устаревшими для большинства задач. Однако они по-прежнему популярны в среднем и высшем образовании. Для использования во многих математических курсах часто требуются определенные модели калькуляторов. Их дальнейшее использование в образовании обычно оправдывается строго контролируемой функциональностью. Например, калькуляторы обычно не имеют прямого доступа к Интернету и поэтому не могут использоваться для нечестной помощи на экзаменах. Оставшиеся производители программируемых калькуляторов прилагают значительные усилия для стимулирования дальнейшего использования этих калькуляторов в школьной математике.

Программирование калькулятора

Программируемые калькуляторы позволяют пользователю писать и хранить программы непосредственно в калькуляторе для решения сложных задач или автоматизации сложных процедур. Возможность программирования наиболее часто (хотя и не исключительно) встречается в графических калькуляторах, поскольку больший экран позволяет одновременно просматривать несколько строк исходного кода (то есть без необходимости прокрутки к следующей/предыдущей строке отображения). Изначально программирование калькуляторов выполнялось на собственном командном языке калькулятора, но когда хакеры калькуляторов обнаружили способы обхода основного интерфейса и написания программ на языке ассемблера, компании-производители калькуляторов (особенно Texas Instruments) начали поддерживать программирование в собственном режиме на аппаратном обеспечении своих калькуляторов, сначала раскрывая механизмы, позволяющие запускать такой код, а затем явно встраивая средства для обработки таких программ непосредственно из пользовательского интерфейса. В интернете можно найти множество программ, написанных для калькуляторов. Пользователи могут загружать программы на персональный компьютер, а затем передавать их в калькулятор с помощью специализированного соединительного кабеля, инфракрасного беспроводного соединения или через карту памяти. Иногда эти программы также можно запускать через эмуляторы на ПК. Программирование этих устройств можно осуществлять непосредственно на калькуляторе, на ПК с последующей загрузкой в виде исходного кода, либо компилировать на ПК и загружать, как это делается с Flash и некоторыми реализациями C/C++. Помимо компьютерных языковых пакетов, таких как tigcc, hpgcc и другие, программное обеспечение для подключения к ПК, доступное для калькуляторов TI, HP, Casio и Sharp, включает редакторы программ; также доступны SDK, эмуляторы и другие инструменты для использования на компьютере, а также инструменты от производителей и сторонних разработчиков, такие как редактор TI++. Программы, данные и так далее также могут обмениваться между аналогичными устройствами через те же порты калькулятора, которые используются для подключения к ПК. Встроенные инструменты программирования, использующие неродные языки, включают компилятор C для калькуляторов Casio серии fx и порт BBC Basic для TI 83. Одна из возможностей, вытекающих из вышесказанного, – это написание интерпретаторов, компиляторов и программ-трансляторов для дополнительных языков программирования этих устройств; BBC Basic уже был портирован на серии TI 83 и 84, а другие встроенные языки и инструменты программирования, которые часто обсуждаются, включают Fortran, awk, Pascal, Rexx, Perl, Common Lisp, Python, tcl и различные оболочки Unix. Обычно доступные программы для калькуляторов охватывают широкий спектр, от решателей математических и научных задач до видеоигр и так называемых демонстраций. Большая часть этого кода создается пользователями как бесплатное программное обеспечение или даже с открытым исходным кодом, хотя также доступно коммерческое программное обеспечение, особенно для образовательных и научно-инженерных рынков. Для программируемых калькуляторов существуют основные веб-сайты с информацией, документацией, форумами, инструментами для загрузки и другими полезными ресурсами. Основные сайты для калькуляторов каждого производителя поддерживаются третьими сторонами с разной степенью сотрудничества с самими компаниями: в частности, HPCalc.org, TICalc.org и CasioCalc.org (qqv.), а домен SharpCalc.org недавно был приобретен организацией, которая заявила о намерении создать сайт, аналогичный остальным трем, а также предоставить информацию о карманных компьютерах Sharp. Сами компании также имеют сайты, такие как TIEducation.com, с информацией и инструментами для своих устройств.

Программирование нажатиями клавиш

В первые дни большинство программируемых калькуляторов использовали очень упрощенный язык программирования, часто основанный либо на записи последовательности нажатий клавиш, либо на байт-коде, если нажатия клавиш были сжаты. Калькуляторы, поддерживающие такое программирование, становились полными по Тьюрингу, если они поддерживали как условные операторы, так и косвенное обращение к памяти. Яркими примерами калькуляторов, полных по Тьюрингу, были серии Casio FX 602P, HP 41 и TI 59. Программирование нажатиями клавиш до сих пор используется в калькуляторах среднего уровня, таких как HP 35s и HP 12C.

Основные

BASIC — широко распространенный язык программирования, обычно используемый на настольных и карманных компьютерах. Наиболее часто используемые языки в продвинутых калькуляторах — это проприетарные диалекты, основанные на BASIC, такие как Casio BASIC или BasicLike от Casio и TI BASIC от TI. Эти диалекты BASIC оптимизированы для использования в калькуляторах, сочетая преимущества BASIC и программирования нажатием клавиш. Они мало похожи на стандартный BASIC. Версия для Ti 89 и последующих моделей более функциональна и включает в себя полный набор функций и операторов для работы со строками и символами, как в стандартном Basic. В настоящее время доступен полный порт BBC Basic для калькуляторов семейства TI 83. Установка осуществляется через кабель или IrDA-соединение с компьютером.

RPL

RPL — это специализированный язык программирования, похожий на Forth, который Hewlett Packard использовала в своих устройствах высокого класса. Первым устройством, оснащенным калькулятором с RPL, был HP 28C, выпущенный в 1987 году. Язык PPL был представлен вместе с калькулятором HP Prime и во многом напоминает Pascal.

Сборка

В 2014 году был анонсирован и выпущен ассемблер, интегрированный в TI 89 и совместимые с ним калькуляторы. Программирование на машинном языке часто не приветствовалось на ранних моделях калькуляторов; однако, энтузиасты, специализирующиеся на взломе платформы, обнаружили способы обхода встроенных интерпретаторов на некоторых моделях и программирования калькулятора непосредственно на языке ассемблера – метод, впервые обнаруженный и примененный на TI 85 из-за программной ошибки в клавише переключения режимов. К моменту выхода TI 83 компании TI и HP осознали необходимость поддержки домашних разработчиков и начали предоставлять библиотеки языка ассемблера и документацию для потенциальных разработчиков. Программное обеспечение, особенно игры, теперь могло быть почти таким же быстрым и графически насыщенным, как и на Game Boy, а TI, в частности, позже официально включила поддержку программирования на ассемблере в пакеты приложений для будущих калькуляторов, таких как TI 83 Plus и TI 89; HP предоставила встроенную поддержку ассемблера на HP 50g, своей тогдашней флагманской модели. Программы и инструменты, позволяющие выполнять программирование, подобное ассемблеру (часто эмулирующие Intel 80x86, даже если фактический процессор в калькуляторе – совершенно другой, например, чип Zilog или Motorola), находятся в бета-тестировании как минимум в двух реализациях. Базовый вариант может быть расширен пользовательскими функциями и процедурами, а также ассемблерными и C-модулями, разработанными на компьютере и загруженными в калькулятор, что позволяет писать и запускать "псевдо-ассемблерные" программы, как и программы на Basic. Другие языки, такие как Rexx, awk, Perl и некоторые Unix-оболочки, также могут быть реализованы таким образом на многих калькуляторах этого типа.

Другие языки

Комплекс разработки GCC доступен для ряда моделей калькуляторов Casio, HP и TI, что позволяет использовать языки C, C++, Fortran 77 и встроенный ассемблер для разработки программ на компьютере с последующей загрузкой на калькулятор. Проекты, разрабатываемые сторонними разработчиками, включают в себя преобразователи, интерпретаторы, генераторы кода, макроассемблеры или компиляторы для Fortran, различных диалектов Basic, awk, C, Cobol, Rexx, Perl, Python, Tcl, Pascal, Delphi, а также оболочки операционных систем, такие как пакетные файлы DOS/Win95, пакетные файлы OS/2, оболочка WinNT/2000, оболочки Unix и DCL. Многие модели калькуляторов TI, Casio, Sharp и HP оснащены интерпретаторами Lua, которые входят в стандартную комплектацию или могут быть установлены дополнительно. Некоторые калькуляторы поддерживают подмножество Fortran 77, известное как Mini Fortran; компилятор находится непосредственно на калькуляторе, поэтому подключение к ПК для загрузки программ не требуется. Теперь доступен компилятор OnCalc C для серии Casio fx 9860. Карманный компьютер Sharp PC G850V имеет встроенный компилятор C, в дополнение к ассемблеру и интерпретатору Basic.

Постоянная память

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

Читатель / записыватель магнитных карт

Читатели магнитных карт были одними из первых доступных устройств для постоянной памяти. Введенные программы хранились на магнитных полосах. Их было легко транспортировать, а устройство чтения/записи было компактным. Однако как само устройство чтения/записи, так и магнитные полосы были довольно дорогими. Последними и наиболее известными устройствами, использовавшими магнитные полосы, были HP 41C и TI 59.

Непрерывная память

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

Кассеты

Компактные кассеты предлагали простое и недорогое решение по сравнению с магнитными картами. Как правило, для подключения калькулятора к обычному кассетному магнитофону использовался интерфейсный модуль, например Casio FA 1, а цифровые данные кодировались в виде аудиосигналов с частотной модуляцией. Sharp и Hewlett Packard также продавали специализированные микро- или мини-кассетные магнитофоны, подключаемые непосредственно к калькулятору. Эти системы, хотя и более удобные и надежные, стоили дороже.

Полунепрерывная память

По мере роста требований к объему памяти становилось все сложнее создавать действительно непрерывную память, и разработчики стали искать альтернативные решения. В случае полунепрерывной памяти содержимое сохранялось только при соблюдении определенных правил замены батарей. Наиболее распространенные правила заключались в следующем: специальная резервная батарея обеспечивала сохранность памяти во время замены основных батарей. Замена батарей должна была быть выполнена в относительно короткий промежуток времени. Например, в калькуляторе HP 35s замена батареи должна была быть завершена менее чем через 2 минуты после ее извлечения. Использовалось как минимум две основные батареи, которые можно было менять только по одной.

Подключение к ПК

Программы и данные передаются на персональный компьютер для хранения. Передача осуществляется следующими способами подключения (в хронологическом порядке появления): RS 232, IrDA и USB. Этот метод имеет преимущество – он очень экономичен и обычно быстрее, чем интерфейс кассетного накопителя. Однако эти преимущества компенсируются необходимостью использования персонального компьютера. Ранним примером подключения к ПК является калькулятор Casio FX 603P в сочетании с интерфейсом Casio FA 6. В этой конфигурации передача осуществлялась в виде простого текста, что позволяло сохранять и редактировать программу и данные с помощью стандартного текстового редактора.

Калькуляторы и карманные компьютеры с программируемым управлением

В течение 1980-х и начала 1990-х годов программируемые калькуляторы конкурировали с карманными компьютерами, а высококлассные калькуляторы имели с ними много общего. Например, оба типа устройств программировались на неструктурированном BASIC и, за редким исключением, оснащались клавиатурами QWERTY. Однако существовали и различия: программируемые калькуляторы BASIC часто имели дополнительную клавиатуру, похожую на калькуляторную, и специальный режим калькулятора, в котором система функционировала как научный калькулятор. Карманные компьютеры часто предлагали дополнительные языки программирования в качестве опции. Например, Casio PB 2000 поддерживал ANSI C, BASIC, Assembler и Lisp. Многие компании предлагали оба типа устройств в своем ассортименте. Casio, например, продавала некоторые программируемые калькуляторы BASIC в рамках своей серии "fx" (где "FX" печаталось заглавными буквами) и карманные компьютеры в отдельной серии "pb", в то время как Sharp позиционировала все программируемые устройства BASIC как карманные компьютеры.

Связанные инструменты

Некоторые программируемые калькуляторы имеют один или несколько способов подключения к ПК для обмена данными, программами и программным обеспечением. Эти методы включают IrDA, другие беспроводные соединения, последовательные порты, включая USB или RS 232 через штекеры для наушников диаметром 1/8 дюйма (3,25 мм) или другие аудиоразъемы, и т.д. Некоторые из последних программируемых калькуляторов содержат сотовые модемы как дополнительный канал связи. Программируемые калькуляторы во многих случаях могут через эти соединения использоваться с периферийными устройствами, такими как регистраторы данных и интерфейсы для приборов, таких как термометры, pH-метры, метеорологические инструменты всех видов, светометры, аудиозонды и микрофоны, динамометры, датчики давления, вольтметры, амперметры, омметры, приборы для измерения атмосферного электричества, ионные счетчики, счетчики Гейгера и сцинтилляторы, высотомеры, весы, акселерометры и многие другие. Некоторые устройства могут использоваться с осциллографами и их периферийными устройствами. Другие могут быть сконфигурированы, например, для сбора данных биологической обратной связи путем подключения устройств для измерения пульса, артериального давления, насыщения крови кислородом, кожно-гальванической реакции, температуры тела и даже ЭКГ и ЭЭГ-зондов к регистратору данных, который затем подключается к калькулятору, а затем или позже – к ПК. Программируемые калькуляторы HP и другие имеют интерфейс IrDA, который позволяет им взаимодействовать с принтерами, специально разработанными для калькуляторов, основными моделями лазерных принтеров HP, компьютерами, другими калькуляторами и другими устройствами. Также широко доступны от многих компаний небольшие принтеры, специально предназначенные для калькуляторов, которые обычно используют бумагу для кассовых аппаратов, порты и кабели для подключения калькуляторов к компьютеру и/или другому калькулятору, кассетные магнитофоны для записи программ и данных, дисплеи для проекторов и разъемы для вспомогательных устройств отображения. Более ранние программируемые калькуляторы, а также вышеупомянутые карманные компьютеры также имели такие устройства, как видеоинтерфейсы для телевизоров и композитных мониторов, мини-дисководы размером 2½ дюйма, считыватели штрих-кодов и стандартное подключение RS 232, которое обеспечивало возможность подключения модемов, внешних жестких дисков и многого другого. Выбор принтеров для карманных компьютеров был несколько шире, включая термопринтеры, ударные принтеры, матричные принтеры, принтеры с печатающей головкой, 4-цветные принтеры и принтеры, используемые в более простых печатных калькуляторах. Некоторые калькуляторы и карманные компьютеры имели внешние дискеты размером 3½ и 5¼ дюйма, кабели для подключения двух кассетных магнитофонов, док-станции, содержащие принтер и/или кассетный магнитофон, в которые вставлялось устройство, и так далее. Также можно подключить некоторые устройства к определенным электрическим пишущим машинам для использования в качестве принтера (пишущие машины также могут быть подключены к ПК для этой цели, и интерфейс обычно представляет собой стандартный RS 232 и/или DIN-разъем), а в некоторых случаях – получить доступ к дискетам или микродискетам пишущей машины.