Каллисто: различия между версиями
AtH (обсуждение | вклад) |
AtH (обсуждение | вклад) |
||
Строка 43: | Строка 43: | ||
Свободная лицензия ''Каллисто'' запрещает закрытие исходного текста транслятора. Поэтому при распространении исполняемого кода рекомендуется включить в дистрибутив два других файла: | Свободная лицензия ''Каллисто'' запрещает закрытие исходного текста транслятора. Поэтому при распространении исполняемого кода рекомендуется включить в дистрибутив два других файла: | ||
* исходный | * исходный текст использованной версии ''Каллисто'', содержащий все внесённые вами изменения (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) распространяется только на сам транслятор ''Каллисто'' и любые программы, использующие его код, защищённый законами об авторском праве. | ||
== Примечание == | == Примечание == |
Версия от 06:49, 23 апреля 2016
Каллисто — компактный диалект языка Форт с элементами 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 Каллисто использует более простой и быстрый цикл FOR…NEXT из colorForth, а стек данных содержит привычные 12-разрядные десятичные числа ЭКВМ. Для представлений значений истины и лжи используются числа -1 и 0 соответственно. Для входных значений любые числа, отличные от нуля, считаются истиной.
Помимо стандартных для Форта операций деления с остатком, Каллисто использует традиционное для ПМК деление с десятичной плавающей запятой. Как и ПМК, Каллисто использует десятичную запятую. Сохранены традиционные для ПМК обозначения операций умножения, подъёма стека, обмена двух чисел на вершине стека, математических функций, а также русскоязычные операции ПМК — ЗН , СЧ и т.д.
Простые вычисления для «Электроники МК-61» и «Электроники МК-161» можно набивать и выполнять в строке Каллисто без изменений, только добавьте точку в конце для вывода результата.
Предусмотрены слова ИП и П для обращение к функциональным и другим регистрам ЭКВМ по их привычным номерам. В названиях слов Каллисто русские буквы можно использовать наряду с английскими, причём заглавные и строчные буквы считаются одинаковыми.
В Каллисто используется единая адресация, объединяющая разрозненные адресные пространства ЭКВМ. При этом размер адресуемой единицы памяти зависит от адреса и может колебаться от 1 байта до восьми (12-разрядные десятичные числа). Беззнаковые 16-битные целые считываются в стек из двух последовательных ячеек (байт) памяти с помощью слова U@. Как принято в ЭКВМ, старший байт идёт по младшему адресу. Первые 10000 адресов памяти представляют из себя память программ, в которой находится исполняемый код Каллисто на ЯМК. Каждый из этих 10 тысячи адресов содержит 1 байт, доступный только для чтения. Из-за невозможности исполнять код МК-161 из области данных при написании порождающих слов вместо конструкции CREATE…DOES> используется более древний, но не менее мощный механизм <BUILDS … DOES>
После нажатия клавиши ВВОД введённые слова либо исполняются сразу, либо компилируются в словарь, находящийся в области двоичных данных. В этой же области располагается стек возвратов — растущий «вниз», навстречу словарю. «Бесконечный» стек данных располагается в области десятичных регистров. Навстречу десятичному стеку растёт десятичный словарь, где хранятся значения десятичных литералов и удобных переменных типа VALUE.
Из-за ограничений платформы буфер в Каллисто только один, а размер загружаемого в него блока составляет 3 Кбайта.
Исходный текст программ на Каллисто
Помимо ввода с клавиатуры, исходный текст на языке Каллисто может располагаться на электронном диске в виде экрана, в пронумерованном блоке (текстовом файле).
В отличии от ранних диалектов Форта экран Каллисто содержит 48 строк, занимает 3 Кб и при интерпретации считывается из буфера, расположенного в области текста. Из-за того, что строка экрана занимает традиционные 64 символа, использование встроенного в ЭКВМ редактора является затруднительным. Программистам Каллисто предлагает строковый редактор EDIT, а также возможность написать собственный редактор экранов. Удобней всего использовать Каллисто с алфавитно-цифровой накладкой на клавиатуру («оверлеем») для быстрого посимвольного ввода команд и данных.
При разработке Каллисто учитывались черновики готовящегося стандарта Forth 200x — например, с помощью стандартных префиксов Форта для каждого числа можно индивидуально задавать систему счисления. Также в Каллисто можно обнаружить наследие Форта ИТЭФ (московской версии fig-Форта), от исходного текста которого отталкивались первые наброски Каллисто. Несмотря на явное влияние стандартов языка Форт, при разработке Каллисто приоритет отдавался удобству и скорости работы на ЭКВМ — вообще говоря, не предназначенной разработчиками из Новосибирска для алгоритмических языков высокого уровня.
Исполняемый код программ на Каллисто
Откомпилированные программы хранятся в памяти ЭКВМ и сохраняются на её электронный диск с помощью слова SAVE"
Исполняемый код представляет из себя два файла, содержащих образы двоичных и десятичных регистров сразу после компиляции вашей программы. Для запуска такой программы требуется ровно та версия Каллисто, на которой произведена эта компиляция. Поэтому удобней всего хранить исполняемый код в виде пакета из трёх файлов с одним именем, включающего переименованный исполняемый файл Каллисто (Callisto.mkp).
Свободная лицензия Каллисто запрещает закрытие исходного текста транслятора. Поэтому при распространении исполняемого кода рекомендуется включить в дистрибутив два других файла:
- исходный текст использованной версии Каллисто, содержащий все внесённые вами изменения (Callisto.mkl)
- текст свободной лицензии, по которой распространяется эта версия Каллисто, например PRAVO.TXT
Включать в дистрибутив исходный текст ваших программ не обязательно и зависит от того, какую лицензию вы выбрали для распространения ваших авторских материалов. Защита от закрытия исходного кода («авторское лево», англ. copyleft) распространяется только на сам транслятор Каллисто и любые программы, использующие его код, защищённый законами об авторском праве.
Примечание
Ссылки
- См. Список стандартных слов Каллисто, Слова Каллисто по категориям и Палитра Каллисто
- См. также учебную статью Первое знакомство с Каллисто
- Обсуждение Каллисто в Контакте, в живом журнале и на сайте Арбинады
- Каллисто v0.8б, последняя актуальная версия Каллисто
- Видеообзор Каллисто v0.8б на YouTube
- Языки Форт и colorFORTH, а также Обратная польская запись в Википедии
- Каллисто в Википедии — спутник Юпитера, в честь которого назван язык Каллисто
- Форум по Форту и более мелкий форум на Авиабазе
- Л.Броуди «Начальный курс программирования на языке Форт» (Leo Brodie Starting Forth)
- Л.Броуди «Способ мышления — Форт» (Leo Brodie Thinking Forth)
- Баранов С.Н. «Язык Форт в СССР и России»
- Статья «Русский язык и программирование» на compiler.su
- Семёнов Ю.А. Программирование на языке ФОРТ. - М.: Радио и связь, 1991. — В этой московской книге Юрий Алексеевич опубликовал исходный код Форта ИТЭФ на макроассемблере IBM PC, сильно повлиявший на разработку Каллисто. Всем энтузиастам Каллисто рекомендую разыскать эту интересную книгу и использовать её в качестве учебника с «Электроникой МК-161» в руках.