Из Википедии, свободной энциклопедии
  (Перенаправлено из HP RPL )
Перейти к навигации Перейти к поиску

RPL [1] - это операционная система портативного калькулятора и язык прикладного программирования, используемый в калькуляторах RPN (обратной польской нотации) Hewlett-Packard для построения научных графиков серий HP 28 , 48 , 49 и 50 , но его также можно использовать и на других устройствах. Калькуляторы RPN, например серии 38 , 39 и 40 .

RPL - это структурированный язык программирования, основанный на RPN, но в равной степени способный обрабатывать алгебраические выражения и формулы, реализованный как поточный интерпретатор . [2] RPL во многом похож на Forth , оба языка основаны на стеке , а также на LISP на основе списков . В отличие от предыдущих калькуляторов HP RPN, которые имели фиксированный четырехуровневый стек , стек, используемый RPL, ограничен только доступной оперативной памятью калькулятора .

RPL возникла в 1984 году в центре разработки HP в Корваллисе, штат Орегон , как замена предыдущей практики реализации операционных систем калькуляторов на языке ассемблера . [3] Последний карманный калькулятор с поддержкой RPL, HP 50g, был снят с производства в 2015 году. [4] [5] [6] Однако существует несколько эмуляторов, которые могут эмулировать калькуляторы HP RPL, которые работают в различных операционных системах и устройствах. , включая смартфоны iOS и Android.

Варианты [ править ]

Внутренний низко- и среднеуровневый вариант RPL, называемый System RPL (или SysRPL ), используется в некоторых более ранних калькуляторах HP, а также в вышеупомянутых калькуляторах как часть языка реализации их операционных систем . В серии HP 48 этот вариант RPL недоступен пользователю калькулятора без использования внешних инструментов, но в серии HP 49/50 есть встроенный в ПЗУ компилятор для использования SysRPL. При кодировании в SysRPL можно вызвать серьезный сбой, поэтому при его использовании следует соблюдать осторожность. Пользовательский RPL высокого уровня (или UserRPL) версия языка доступна на указанных графических калькуляторах для разработки текстовых, а также графических прикладных программ. Все программы UserRPL внутренне представлены как программы SysRPL, но используют только безопасное подмножество доступных команд SysRPL. Однако проверка ошибок, которая является частью команд UserRPL, делает программы UserRPL заметно медленнее, чем эквивалентные программы SysRPL. Команда UserRPL SYSEVAL указывает калькулятору обрабатывать определенные части программы UserRPL как код SysRPL.

Блоки управления [ править ]

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

Условные утверждения [ править ]

IF / THEN / ELSE / END [ редактировать ]

RPL поддерживает базовое условное тестирование через структуру IF / THEN / ELSE. Базовый синтаксис этого блока:

 IF условие THEN if-true [ELSE if-false] END

В следующем примере проверяется, является ли число внизу стопки «1», и если да, то оно заменяется на «Равно единице»:

 «ЕСЛИ 1 == ТО« Равно единице »КОНЕЦ»

Конструкция IF оценивает условие, а затем проверяет результат в нижней части стека. В результате RPL может дополнительно поддерживать блоки IF в стиле FORTH, позволяя определять условие перед блоком. Если оставить условие пустым, оператор IF не будет вносить никаких изменений в стек во время выполнения условия и будет использовать существующий результат в нижней части стека для теста:

 «1 == ЕСЛИ ТО« Равно единице »КОНЕЦ»

IFT / IFTE [ править ]

Условное тестирование Postfix может выполняться с помощью функций IFT («если-то») и IFTE («если-то-еще»).

IFT и IFTE извлекают из стека две или три команды соответственно. Самое верхнее значение оценивается как логическое, и, если оно истинно, второе верхнее значение помещается обратно в стек. IFTE допускает третье значение «else», которое будет помещено обратно в стек, если логическое значение ложно.

В следующем примере функция IFT используется для извлечения объекта из нижней части стека и, если он равен 1, заменяет его на «One»:

 «1 ==« Один »IFT»

В следующем примере функция IFTE используется для извлечения объекта из нижней части стека и, если он равен 1, заменяет его на «One». Если он не равен 1, он заменяет его строкой «Not one»:

 «1 ==« Один »« Ни один «IFTE»

IFT и IFTE будут оценивать программный блок, указанный в качестве одного из его аргументов, что позволяет использовать более компактную форму условной логики, чем структура IF / THEN / ELSE / END. В следующем примере объект извлекается из нижней части стека и заменяется на «Один», «Меньше» или «Больше», в зависимости от того, равно ли он, меньше или больше 1.

 « ДУП 1 == «ДРОП« Единый »» «1 <« Меньше »« Больше «IFTE» IFTE »

CASE / THEN / END [ редактировать ]

Для поддержки более сложной условной логики RPL предоставляет структуру CASE / THEN / END для обработки нескольких эксклюзивных тестов. Будет выполнена только одна из ветвей в операторе CASE. Базовый синтаксис этого блока:

 КЕЙС  condition_1 THEN if-condition_1 END  ... condition_n THEN if-condition_n END если-нет КОНЕЦ

Следующий код иллюстрирует использование блока CASE / THEN / END. Если в конце стека находится буква, она заменяет ее строковым эквивалентом или «Неизвестной буквой»:

 «  КЕЙС  DUP "A" == THEN "Alpha" END DUP "B" == THEN "Beta" END DUP "G" == THEN "Gamma" END «Неизвестное письмо» КОНЕЦ SWAP DROP @ Избавьтесь от исходного письма »

Этот код идентичен следующему вложенному эквиваленту блока IF / THEN / ELSE / END:

 « ЕСЛИ ДУП "А" == ПОТОМ "Альфа" ЕЩЕ  ЕСЛИ DUP "B" == ТО "Бета" ЕЩЕ  ЕСЛИ DUP "G" == ТО "Гамма" ЕЩЕ «Неизвестное письмо» КОНЕЦ КОНЕЦ  КОНЕЦ SWAP DROP @ Избавьтесь от исходного письма »

Циклические утверждения [ править ]

FOR / NEXT [ править ]

RPL предоставляет оператор FOR / NEXT для перехода от одного индекса к другому. Индекс цикла хранится во временной локальной переменной, к которой можно получить доступ в цикле. Синтаксис блока FOR / NEXT:

index_from index_to FOR имя_переменной выражение_цикла NEXT

В следующем примере цикл FOR используется для суммирования чисел от 1 до 10. Переменной индекса цикла FOR является «I»:

 «  0 @ Начать с нуля в стеке 1 10 @ Цикл от 1 до 10 FOR I @ "I" - это локальная переменная I + @ Добавить "I" к промежуточной сумме ДАЛЕЕ @ Повторить ... »

НАЧАЛО / ДАЛЕЕ [ редактировать ]

Блок START / NEXT используется для простого блока, который выполняется от начального индекса до конечного индекса. В отличие от цикла FOR / NEXT, переменная цикла недоступна. Синтаксис блока START / NEXT:

 index_from index_to START loop_statement NEXT

FOR / STEP и START / STEP [ редактировать ]

И FOR / NEXT, и START / NEXT поддерживают определяемое пользователем приращение шага. При замене завершающего ключевого слова NEXT на инкремент и ключевое слово STEP переменная цикла будет увеличиваться или уменьшаться на другое значение, отличное от значения по умолчанию +1. Например, следующий цикл отступает от 10 до 2, уменьшая индекс цикла на 2:

 «10 2 СТАРТ -2 ШАГ»

WHILE / REPEAT / END [ редактировать ]

Блок WHILE / REPEAT / END в RPL поддерживает неопределенный цикл с проверкой условия в начале цикла. Синтаксис блока WHILE / REPEAT / END:

 WHILE условие REPEAT loop_statement END

DO / UNTIL / END [ править ]

Блок DO / UNTIL / END в RPL поддерживает неопределенный цикл с проверкой условий в конце цикла. Синтаксис блока DO / UNTIL / END:

 DO loop_statement UNTIL условие END

Заметки [ править ]

1. ^ «RPL» является производным от Reverse Polish Lisp в соответствии с его первоначальными разработчиками, [7] [8] [9] [10] [11] [12], в то время как в течение короткого времени в 1987 году отдел маркетинга HP пытался придумать бэкроним. Процедурный язык на основе ПЗУ . [1] [12] [13] Кроме того, инициалы RPL иногда интерпретируются как обратная польская логика или обратный польский язык, но эти названия не являются официальными. [14]

См. Также [ править ]

  • Язык программирования (APL)
  • ФОКУСНОЕ программирование нажатия клавиш
  • Язык высокой производительности (HPL)
  • Триграфы HP
  • Основной язык программирования (PPL)
  • Набор символов RPL

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

  1. ^ a b Паттон, Чарльз М. (август 1987 г.). «Вычисления для портативных калькуляторов» (PDF) . Журнал Hewlett-Packard . Пало-Альто, Калифорния, США: Компания Hewlett-Packard . 38 (8): 21–25 . Проверено 12 сентября 2015 .
  2. ^ Хорн, Джозеф К. "Что такое RPL?" . Архивировано 17 сентября 2017 года . Проверено 17 сентября 2017 .
  3. ^ Hewlett-Packard . «RPLMan с диска вкусностей (RPLMAN.ZIP) . Проверено 12 сентября 2015 .
  4. ^ Kuperus, Клаас (2015-03-04). «HP 50g: конец эпохи» . Моравия. Архивировано из оригинала на 2015-04-02.
  5. ^ Куперус, Клаас (2015-03-06). "HP 50g - не очень хорошие новости?" . Моравия . Проверено 1 января 2016 .
  6. ^ Вессман, Тимоти Джеймс (2015-12-26). «Windows 10 не позволяет устанавливать драйверы HP 50g USB» . Музей HP . Проверено 1 января 2016 .
  7. ^ Wickes, Уильям С. (1988). RPL: математический язык управления . Труды Четвертой конференции Рочестера по средам программирования . Рочестер, Нью-Йорк, США: Институт прикладных исследований Forth, Inc., стр. 27–32. Было рассмотрено несколько существующих операционных систем и языков, но ни одна из них не смогла удовлетворить все проектные задачи. Поэтому была разработана новая система, которая объединяет многопоточную интерпретацию Forth с функциональным подходом Lisp . Получившаяся в результате операционная система, неофициально известная как RPL (от Reverse-Polish Lisp), впервые появилась в июне 1986 года в калькуляторе HP-18C Business Consultant.
  8. ^ Wickes, Уильям С. (1991-03-11). «RPL означает обратный польский лисп» . www.hpcalc.org . Проверено 12 сентября 2015 . RPL расшифровывается как Reverse Polish Lisp. На заре разработки РПЛ мы устали называть неназванную систему «новой системой», и один из разработчиков придумал «РПЛ», как игру на «РПН», которую любили / ненавидели. отличительная черта HP исчисляется навсегда, и как точное указание на происхождение языка от Forth и Lisp . RPL никогда не задумывался как публичный термин; во время публикации статьи HP Journal (август 1987 г.) о HP 28C
    была попытка создать менее причудливое название - отсюда «процедурный язык на основе ПЗУ», который сохранил инициалы, но имел более достойное звучание. Команда разработчиков никогда не называет это иначе, кроме (инициалов) РПЛ. Вы можете выбрать любую из двух версий с полным текстом, которые вам больше нравятся. Или как насчет «языка богатых людей»? Билл Уикс, HP Corvallis.
  9. ^ Schoorl, Андре (2000-04-04) [1997]. «Список часто задаваемых вопросов о HP48» . Архив калькулятора HP. п. 69 . Проверено 12 сентября 2015 .
  10. ^ «Я слышал названия RPL, Saturn, STAR, GL и т.д ... Какие они? - RPL» . FAQ: 2 из 4 - Оборудование, программы и программирование . 4.62. comp.sys.hp48. 2000-04-14. 8.1 . Проверено 12 сентября 2015 .
  11. ^ Нельсон, Ричард Дж. (2012-04-04). "HP RPN Evolves" (PDF) . HP Решить . Hewlett-Packard (27): 30–32 . Проверено 12 сентября 2015 .
  12. ^ a b Mier-Jedrzejowicz, Włodek AC (июль 1991 г.). Руководство по портативным калькуляторам и компьютерам HP (5-е изд.). HHC 2011. ISBN 978-1888840308. 1888840307. RPL означает Reverse Polish Lisp - он объединил язык калькулятора RPN более ранних моделей с функциями языков программирования Lisp и Forth . Какое-то время HP объясняла буквы RPL аббревиатурой от «процедурного языка на основе ПЗУ».
  13. ^ «HP празднует 35-летие инноваций в области портативных калькуляторов» . Hewlett-Packard Development Company, LP 2007. Архивировано из оригинала на 2007-03-17 . Проверено 13 сентября 2015 . 1987: HP-28C : Первый полноценный калькулятор RPL: ​​В конце 1980-х HP разработала новый язык программирования для своей новой серии чрезвычайно мощных калькуляторов. Объединив элементы RPN, Lisp и Forth , HP создала язык под названием RPL (или процедурный язык на основе ROM).
  14. ^ Рехлин, Эрик; Марангон, Карлос. «HPedia: Энциклопедия калькулятора HP» . www.hpcalc.org . Проверено 20 апреля 2020 .

Дальнейшее чтение [ править ]

  • Серия HP 48G - Руководство пользователя (8-е изд.). Hewlett-Packard . Декабрь 1994 [1993]. HP 00048-90126, (00048-90104). Архивировано 6 августа 2016 года . Проверено 6 сентября 2015 . [2]
  • Серия HP 48G - Справочное руководство для расширенных пользователей (AUR) (4-е изд.). Hewlett-Packard . Декабрь 1994 [1993]. HP 00048-90136, 0-88698-01574-2. Архивировано 6 августа 2016 года . Проверено 6 сентября 2015 . [3]
  • Руководство пользователя графического калькулятора HP 50g (1-е изд.). Hewlett-Packard . Апрель 2006 г. HP F2229AA-90006 . Проверено 6 сентября 2015 .
  • Расширенное руководство пользователя графического калькулятора HP 50g / 49g + / 48gII (AUR) (2-е изд.). Hewlett-Packard . 2009-07-14 [2005]. HP F2228-90010 . Проверено 6 сентября 2015 .
  • Калиновски, Эдуардо де Маттос; Доминик, Карстен (2002-04-24) [1998-07-12]. Программирование в Системе РПЛ (PDF) (2-е изд.). Архивировано (PDF) из оригинала на 14 января 2016 года . Проверено 16 августа 2016 .(Старая версия: [4] )
  • Доннелли, Джеймс (2009-03-01). Рехлин, Эрик (ред.). Введение в HP 48 System RPL и программирование на языке ассемблера . Проверено 7 сентября 2015 .

Внешние ссылки [ править ]

  • Рехлин, Эрик (2015) [1997]. «Файлы документации по программированию HP 49/50» . Архив калькулятора HP . Проверено 12 сентября 2015 .
  • Рехлин, Эрик (2015) [1997]. «Файлы документации по программированию HP 48» . Архив калькулятора HP . Проверено 12 сентября 2015 .
  • Хикс, Дэвид Г. (2013) [1995]. «РПЛ» . Музей калькуляторов HP (MoHPC) . Проверено 12 сентября 2015 .
  • Бертран, Жоэль (2015) [2009]. «РПЛ / 2 - новый обратный польский лисп» . Проверено 12 сентября 2015 . (клон RPL под лицензией GPL)
  • Лапилли, Клаудио Даниэль (2014-01-03). «новыйРПЛ» . Проверено 12 сентября 2015 . [5] (производная RPL с открытым исходным кодом для HP 50g и HP 49g +, а также для HP 40gs , HP 39gs и hp 39g + )
  • Рубет, Луи (2017-07-01). «rpn - реализация RPL с открытым кодом» . Проверено 12 сентября 2015 . (Реализация RPL с открытым исходным кодом с произвольной точностью)
  • Суарес, Альваро Херардо (01.05.2018). «MyRPL - Союз языков HP41 и HP48» . Проверено 4 мая 2018 . (Смешанный язык RPL (HP48) и FOCAL (HP41))