Каллисто: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 36: Строка 36:


При разработке ''Каллисто'' учитывались черновики готовящегося стандарта [http://www.forth200x.org/forth200x.html Forth 200x] — например, с помощью [[Префиксы чисел|стандартных префиксов Форта]] для каждого числа можно индивидуально задавать систему счисления. Также в ''Каллисто'' можно обнаружить наследие Форта ИТЭФ (московской версии fig-Форта), от исходного текста которого отталкивались первые наброски ''Каллисто''. Несмотря на явное влияние стандартов языка Форт, при разработке ''Каллисто'' приоритет отдавался удобству и скорости работы на [[ЭКВМ]] — вообще говоря, не предназначенной разработчиками из Новосибирска для алгоритмических языков высокого уровня.
При разработке ''Каллисто'' учитывались черновики готовящегося стандарта [http://www.forth200x.org/forth200x.html Forth 200x] — например, с помощью [[Префиксы чисел|стандартных префиксов Форта]] для каждого числа можно индивидуально задавать систему счисления. Также в ''Каллисто'' можно обнаружить наследие Форта ИТЭФ (московской версии fig-Форта), от исходного текста которого отталкивались первые наброски ''Каллисто''. Несмотря на явное влияние стандартов языка Форт, при разработке ''Каллисто'' приоритет отдавался удобству и скорости работы на [[ЭКВМ]] — вообще говоря, не предназначенной разработчиками из Новосибирска для алгоритмических языков высокого уровня.
== Исполняемый код программ на Каллисто ==
Откомпилированные программы хранятся в памяти ЭКВМ и сохраняются на её электронный диск с помощью слова [[SAVE"]]
Исполняемый код представляет из себя два файла, содержащие образы двоичных и десятичных регистров. Для запуска такой программы нужно использовать ту версию Каллисто, которая использовалась для компиляции. Поэтому логичней всего распространять подобные программы в виде пакета из трёх файлов, включающего исполняемый файл ''Каллисто'' (Callisto.mkp).
В большинстве случаев свободная лицензия ''Каллисто'', запрещающая закрытие исходного текста транслятора, также требует включения в дистрибутив двух других файлов:
* исходный код использованной версии ''Каллисто'' (Callisto.mkl)
* текст свободной лицензии, по которой распространяется ''Каллисто'' (PRAVO.TXT)


== Примечание ==
== Примечание ==

Версия от 06:32, 23 апреля 2016

Каллисто, запущенная на «Электронике МК-161» с накладной клавиатурой.

Каллисто — компактный диалект языка Форт с элементами colorForth, написанный для «Электроники МК-161» на РЯМК и предназначенный для программирования «на борту» (без использования компьютера).

В настоящее время Каллисто проходит бета-тестирование, релиз 1.0 назначен на лето 2016 года. Актуальная версия Каллисто — 0.8б.

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

Краткая история Форта

Интересно, что разработка Форта началась в 1958 году, когда Смитсоновская астрофизическая обсерватория наняла Чака Мура, студента МТИ, для расчёта на IBM EDPM 704 орбиты и оптического отслеживания советского Спутника, запущенного 4 октября 1957 года абсолютно неожиданно для США.[1]

Уже в 1976 году Форт был принят Международным Астрономическим Союзом, как стандартный язык. Первые влиятельные стандарты Форта появились в 1979 и 1984 годах. В 1980-90'ых годах Форт начал широко распространяться в СССР — одновременно с ПМК, но независимо от них. Тогда же появились первые советские реализации Форта, из которых на Каллисто сильнее всего повлияли ФОРТ-ЕС (Ленинград, 1986) и FORTH ИТЭФ (Москва, 1988), чьи исходные тексты были опубликованы в СССР их авторами.

Сейчас общепринятым в России и зарубежом является международный стандарт Форта, принятый в 1994 году на основе американского стандарта ANS Forth. Ему на смену активно готовится новый стандарт Форта (условно называемый Форт-2012), также учтённый при разработке Каллисто. Продолжателем Форта, повлиявшим на Каллисто, является и язык colorForth, развиваемый Чаком Муром в одиночку.

Основные отличия Каллисто от Форта

Вместо фортовского цикла DO…LOOP Каллисто использует более простой и быстрый цикл FORNEXT из colorForth, а стек данных содержит привычные 12-разрядные десятичные числа ЭКВМ. Для представлений значений истины и лжи используются числа -1 и 0 соответственно. Для входных значений любые числа, отличные от нуля, считаются истиной.

Помимо стандартных для Форта операций деления с остатком, Каллисто использует традиционное для ПМК деление с десятичной плавающей запятой. Как и ПМК, Каллисто использует десятичную запятую. Сохранены традиционные для ПМК обозначения операций умножения, подъёма стека, обмена двух чисел на вершине стека, математических функций, а также русскоязычные операции ПМК — ЗН , СЧ и т.д.

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

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

В Каллисто используется единая адресация, объединяющая разрозненные адресные пространства ЭКВМ. При этом размер адресуемой единицы памяти зависит от адреса и может колебаться от 1 байта до восьми (12-разрядные десятичные числа). Беззнаковые 16-битные целые считываются в стек из двух последовательных ячеек (байт) памяти с помощью слова U@. Как принято в ЭКВМ, старший байт идёт по младшему адресу. Первые 10000 адресов памяти представляют из себя память программ, в которой находится исполняемый код Каллисто на ЯМК. Каждый из этих 10 тысячи адресов содержит 1 байт, доступный только для чтения. Из-за невозможности исполнять код МК-161 из области данных при написании порождающих слов вместо конструкции CREATE…DOES> используется более древний, но не менее мощный механизм <BUILDSDOES>

После нажатия клавиши ВВОД введённые слова либо исполняются сразу, либо компилируются в словарь, находящийся в области двоичных данных. В этой же области располагается стек возвратов — растущий «вниз», навстречу словарю. «Бесконечный» стек данных располагается в области десятичных регистров. Навстречу десятичному стеку растёт десятичный словарь, где хранятся значения десятичных литералов и удобных переменных типа VALUE.

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

Исходный текст программ на Каллисто

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

В отличии от ранних диалектов Форта экран Каллисто содержит 48 строк, занимает 3 Кб и при интерпретации считывается из буфера, расположенного в области текста. Из-за того, что строка экрана занимает традиционные 64 символа, использование встроенного в ЭКВМ редактора является затруднительным. Программистам Каллисто предлагает строковый редактор EDIT, а также возможность написать собственный редактор экранов. Удобней всего использовать Каллисто с алфавитно-цифровой накладкой на клавиатуру («оверлеем») для быстрого посимвольного ввода команд и данных.

При разработке Каллисто учитывались черновики готовящегося стандарта Forth 200x — например, с помощью стандартных префиксов Форта для каждого числа можно индивидуально задавать систему счисления. Также в Каллисто можно обнаружить наследие Форта ИТЭФ (московской версии fig-Форта), от исходного текста которого отталкивались первые наброски Каллисто. Несмотря на явное влияние стандартов языка Форт, при разработке Каллисто приоритет отдавался удобству и скорости работы на ЭКВМ — вообще говоря, не предназначенной разработчиками из Новосибирска для алгоритмических языков высокого уровня.

Исполняемый код программ на Каллисто

Откомпилированные программы хранятся в памяти ЭКВМ и сохраняются на её электронный диск с помощью слова SAVE"

Исполняемый код представляет из себя два файла, содержащие образы двоичных и десятичных регистров. Для запуска такой программы нужно использовать ту версию Каллисто, которая использовалась для компиляции. Поэтому логичней всего распространять подобные программы в виде пакета из трёх файлов, включающего исполняемый файл Каллисто (Callisto.mkp).

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

  • исходный код использованной версии Каллисто (Callisto.mkl)
  • текст свободной лицензии, по которой распространяется Каллисто (PRAVO.TXT)

Примечание

Ссылки