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

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


Экраны ''Каллисто'' можно передавать на компьютер и распространять в файлах с расширением mkt. В дистрибутиве ''Каллисто'' есть исходный текст программы listmkt, которая позволяет преобразовывать файлы mkt в текстовые, которые человеку легко читать и редактировать.
Экраны ''Каллисто'' можно передавать на компьютер и распространять в файлах с расширением mkt. В дистрибутиве ''Каллисто'' есть исходный текст компьютерной программы listmkt, которая позволяет преобразовывать файлы mkt в текстовые, которые человеку легко читать и редактировать.


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

Версия от 07:16, 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, а также возможность написать собственный редактор экранов. Удобней всего использовать Каллисто с алфавитно-цифровой накладкой на клавиатуру («оверлеем») для быстрого посимвольного ввода команд и данных.

Экраны Каллисто можно передавать на компьютер и распространять в файлах с расширением mkt. В дистрибутиве Каллисто есть исходный текст компьютерной программы listmkt, которая позволяет преобразовывать файлы mkt в текстовые, которые человеку легко читать и редактировать.

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

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

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

Свободная лицензия Каллисто запрещает закрытие исходного текста транслятора. Для соблюдения этой лицензии при распространении вашего исполняемого кода предлагается включить в дистрибутив два дополнительных файла, технически не требующихся для запуска вашей программы на «Электронике»:

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

Всего получается пять обязательных файлов, которые для удобства предлагается упаковать в один архив дистрибутива — словно пять пальцев одной ладони складываются в кулак. В этот же архив можно добавить документацию на вашу программу и остальные файлы, которые вы сочтёте полезными для ваших пользователей.

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

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

Примечание

Ссылки