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

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


Свободная лицензия ''Каллисто'' запрещает закрытие исходного текста транслятора. Поэтому при распространении исполняемого кода рекомендуется включить в дистрибутив два других файлов:
Свободная лицензия ''Каллисто'' запрещает закрытие исходного текста транслятора. Поэтому при распространении исполняемого кода рекомендуется включить в дистрибутив два других файла:
* исходный код использованной версии ''Каллисто'' (Callisto.mkl)
* исходный код использованной версии ''Каллисто'', содержащий все внесённые вами изменения (Callisto.mkl)
* текст свободной лицензии, по которой распространяется ''Каллисто'' (PRAVO.TXT)
* текст свободной лицензии, по которой распространяется ваша версия ''Каллисто'', например PRAVO.TXT


Включать в дистрибутив исходный код ваших программ не обязательно и зависит от того, какую лицензию вы выбрали для распространения ваших авторских материалов. Защита от закрытия исходного кода ([https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BB%D0%B5%D1%84%D1%82 «авторское лево»], ''англ.'' copyleft) распространяется только на сам транслятор ''Каллисто'' и любые программы, использующие его код, защищённый законами об авторском праве.
Включать в дистрибутив исходный код ваших программ не обязательно и зависит от того, какую лицензию вы выбрали для распространения ваших авторских материалов. Защита от закрытия исходного кода ([https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BF%D0%B8%D0%BB%D0%B5%D1%84%D1%82 «авторское лево»], ''англ.'' copyleft) распространяется только на сам транслятор ''Каллисто'' и любые программы, использующие его код, защищённый законами об авторском праве.

Версия от 06:44, 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

Включать в дистрибутив исходный код ваших программ не обязательно и зависит от того, какую лицензию вы выбрали для распространения ваших авторских материалов. Защита от закрытия исходного кода («авторское лево», англ. copyleft) распространяется только на сам транслятор Каллисто и любые программы, использующие его код, защищённый законами об авторском праве.

Примечание

Ссылки