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

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
Строка 40: Строка 40:
* [https://vk.com/topic-10838600_30361028 Обсуждение Каллисто в Контакте], [http://mk-152.livejournal.com/53935.html в живом журнале] и [http://arbinada.com/pmk/ru/node/1195 на сайте Арбинады]
* [https://vk.com/topic-10838600_30361028 Обсуждение Каллисто в Контакте], [http://mk-152.livejournal.com/53935.html в живом журнале] и [http://arbinada.com/pmk/ru/node/1195 на сайте Арбинады]
* [http://the-hacker.ru/2016/Callisto-0.8b.zip Каллисто v0.8б], последняя актуальная версия ''Каллисто''
* [http://the-hacker.ru/2016/Callisto-0.8b.zip Каллисто v0.8б], последняя актуальная версия ''Каллисто''
* [https://www.youtube.com/watch?v=YPBFf55AAD4 Видеообзор Каллисто v0.8б] на YouTube
* Языки [https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Форт] и [https://ru.wikipedia.org/wiki/ColorForth colorFORTH], а также [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C Обратная польская запись] в Википедии
* Языки [https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D1%80%D1%82_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29 Форт] и [https://ru.wikipedia.org/wiki/ColorForth colorFORTH], а также [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C Обратная польская запись] в Википедии
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_%28%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%29 Каллисто в Википедии] — спутник Юпитера, в честь которого назван ''язык Каллисто''
* [https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BB%D0%BB%D0%B8%D1%81%D1%82%D0%BE_%28%D1%81%D0%BF%D1%83%D1%82%D0%BD%D0%B8%D0%BA%29 Каллисто в Википедии] — спутник Юпитера, в честь которого назван ''язык Каллисто''

Версия от 07:05, 1 апреля 2016

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

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

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

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

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

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

Вместо фортовского цикла 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-Форта), от исходного текста которого отталкивались первые наброски Каллисто. Несмотря на явное влияние стандартов языка Форт, при разработке Каллисто приоритет отдавался удобству и скорости работы на ЭКВМ — вообще говоря, не предназначенной разработчиками из Новосибирска для алгоритмических языков высокого уровня.

Примечание

Ссылки