Алексей Чепыженко рассказывал об архитектуре своего многостекового процессора. Насколько я понял, имеется несколько одинаковых устройств и имеется возможность подключения выхода одного устройства ко входу другого. Я не очень понимаю в архитектуре, так что было бы лучше, если бы Алексей сам описал свою технологию в одном-двух абзацах. А пока что можно предложить сходить на его страницу.
Алексей Бурцев рассказал о методе реализации обработчиков прерывания. Предложенный метод заключается в том, что адрес NEXT хранится в регистре и в случае прерывания подменяется. Смысл - исполнение CODE-определения не может быть прервано где попало. Обработка прерывания выполняется только в момент, когда обработка одного примитива уже закончилась, а другого - не началась.
Anton Ertl в своей очередной работе решил на самом деле проверить, правда ли то, что фортовские программы более компактны. Измерялось количество строк кода для написанных на разных языках parser generators (систем построения парсеров), имеющихся в сети Internet. Оказалось, что для этого класса задач программы на Форте значительно короче.
Михаил Гасаненко рассказал о формализации механизма исполнения Форта. Очередная формальная модель построена на основе лямбда-исчисления. Она дает ответы на два вопроса: "Что вообще такое манипуляции со стеком возвратов, только, пожалуйста, в нормальных математических терминах, потому что понятие функции не предполагает существование адреса возврата", и "А как вы будете это компилировать?" Помимо того, эта модель позволяет рассуждать о свойствах фрагментов шитого кода. Интересно, что ответа на вопрос "а как мы можем использовать манипуляции с адресми возвратов?" этот формализм не дает. К сожалению, на два различные вопроса в общем случае нужны два различные ответа. Однако как этим пользоваться уже известно, см. статью про BacFORTH.
Во втором своем докладе Михаил Гасаненко рассказал о динамически
структурируемых кодах. Важно не то, что код порождается или изменяется во
время исполнения, а структура. Была описана предложенная Тузовым методика
исполнения данных (в основе - представление данных в виде кода)
и были представлены два ее усовершенствования:
применение бэктрекинга для исполнения данных (вообще говоря, подбор наиболее
адекватного метода исполнения), и применение совместной компиляции двух
наборов данных вместо параллельного исполнения этих двух наборов.
Аудитория почему-то более всего отреагировала на
: ROT-TASKS R> R> R> ROT >R >R >R ;
(это перелючение между тремя задачами, причем состояние задачи описывается
единственным адресом возврата: вызовов процедур нет --
такова особенность функционального представления данных).
Третий метод -- DCCH1 (Dynamic Construction of Call Hierarchy, v.1 --
динамическое построение иерархии вызовов) - предлагается применять
для весьма ограниченного класса задач (обработка записей сложного формата).
Главным результатом является сокращение числа типов зависимостей между
кодом анализирующим и кодом обрабатывающим с трех (один тип полезный
-- управление напрямую, и два типа бесполезных -- зависимости из-за
использования одних и тех же потока управления и структур данных) до
одного (модифицированный полезный тип зависимости -- косвенное управление).
Peter Knaggs рассказал о предложении по интернационализации стандарта ANS Forth. Это называется LOCALE word set. Основная идея - набор литер разработчика может отличаться от набора литер пользователя по всем параметрам (язык (множество символов), размер и может быть что-то еще; про кодировку они забыли). Наиболее удачное слово - L" - задает строку на языке разработки, которую можно перевести (не изменяя кода программы) на другие языки. Соавторами статьи являются отсутствовавшие на конференции S.Pelc, W.Botha, N.Nelson.
Peter Knaggs рассказал о предложении по поддержке широких литер в ANS Forth'е. Суть предложения - введение типа widechar и измерение длины в байтах, а не литерах неизвестного размера - разумеется, при сохранении совместимости.
Михаил Милендорф (ранее - Годин, наш бывший соотечественник) из фирмы SUN рассказал про dropin modules. Dropin - это пакет, изначально размещавшийся в PROM. Он может содержать код и/или данные в любом формате. Цель - поддержка слегка различных машин через один и тот же OpenBoot binary image. Производитель совместимого оборудования может написать dropin для тех железок, которые есть только у него. Лицензия ему нужна не на исходники OpenBoot, а на двоичный образ. К тому же, при такой постановке дела случается меньше ошибок, чем при изменении исходников всей системы. Вторая область применения dropin'ов - поддержка устройств (plug-in), на которых не установлен PROM с кодом драйвера. Сейчас SUN расширило концепцию dropin'ов на другие (нежели чем PROM) типы устройств хранения информации (flashprom, дискеты, сеть).
Михаил Колодин представил доклад "Perspective MetaFORTHness". Я затрудняюсь перевести эту конструкцию, что-то вроде "Перспективы метаФОРТовости". Под метаФОРТовостью понимается способность воспроизводить себя. Докладчик предложил классификацию метасистем. Он обеспокоен тем, что Форт-системы стали реализовываться на Си и более неспособны к самовоспроизводству. Докладчик не смог ответить на вопрос, зачем именно Форту метаФОРТовость. По моему мнению, способность воспроизвести себя - это хороший показатель выразительной силы, однако неясно, почему отсутствие этого признака свидетельствует о недостатке и почему наличие его полезно в любой проблемной области. Если у кого появятся идеи на этот счет - пишите.
Михаил Колодин представил также доклад на тему "Форт в России: состояние на сегодня и усилия по стандартизации". Полезная для соотечественников информация: следует дать толкование терминам АНСИ и закончить перевод стандарта. Мой комментарий: переводить стандарт сейчас не имеет смысла, т.к. выходит новый стандарт. Для меня оказалось сюрпризом то, что я считаюсь "ассистентом координатора".
Сергей Сидоров рассказал о подходе к построению ассемблеров и отладчиков. Зашиваемые в ПЗУ программы включают встроенный отладчик и ассемблер. Автор подчеркивает использование синтаксиса фирменных ассемблеров. Предложена трехуровневая архитектура: уровень элементов кода машинной команды; уровень машинных команд; уровень программы вцелом. Так как команды любых процессоров устроены одинаково (изменяются смысл и размер битовых полей, но битовые поля остаются битовыми полями), а на уровне программы вцелом встречаются одни и те же операции (ORG, DW, команды), то зависимым от архитектуры целевого процессора является средний уровень. [Мой комментарий: это очень необычно, т.к. системно-зависимыми оказываются, как правило, нижние уровни. Объяснение этого мы находим в том, что в случае целевого ассемблера имеется ввиду зависимость не от архитектуры на которой строится система (такая архитектура всегда находится как минимум уровнем ниже, чем ПО), а от архитектуры для которой строится система. Зависимость от формата команд целевого процессора - это зависимость от формата входных и выходных данных.] Главным результатом является возможность повторного использования кода: предложенную архитектуру легко адаптировать к любой системе команд.
Reuben Tomas (Рубин - имя, Томас - фамилия) рассказал про Machine Forth for the ARM processor. Moore и Fox предложили новую виртуальную машину - Machine Forth. Утверждается, что ее легко адаптировать к любому аппаратному обеспечению и можно получать разумно эффективный код, не спускаясь до уровня ассемблера. Предполагается, что это будет прекрасная платформа для Форт-компиляторов. (Поясняю: они предложили стек-ориентированный язык-вместо-ассемблера, несколько поассемблернее Форта, и несколько машинно-понезависимее ассемблера.) Докладчик составил для себя такое мнение о Machine Forth: он попадает между двумя стульями. Высокоуровневый код лучше писать на Форте, а низкоуровневый - со всей мощью настоящего фортовского ассемблера. Однако, у Machine Forth есть несколько хороших команд.
Reuben Tomas рассказал также про ТП-Форт. Самая интересная вещь в ТП-Форте - это лицензия. Разработка ТП-Форта начата маленькой фирмой, которая одна, разумеется, не может угнаться за Микрософтом и проч. Решение -- создание продукта силами сообщества. Компания может или платить или деньгами, или по бартеру (созданием новых средств). Допускается бесплатное личное пользование. Новый продукт был нужен т.к. лицензия - новая.
Peter Knaggs: Комитет ANS Forth решил более не поддерживать ниббловые машины (1 nibble = 4 bits = 0.5 байта). Человек, которого это беспокоило, ушел из комитета, а более никто этим не интересуется. Если кто-то заинтересован в поддержке ниббловых (nibble) машин -- дайте мне знать, я постараюсь оказать воздействие. В противном случае поддержка ниббловости может войти в противоречие с поддержкой широких литер в рамках интернационализации.
Михаил Милендорф: cтандарт Open Boot разросся, все время изменяется, к нему принимаются поправки. Вносить изменения в текст самого стандарта они, однако, не хотят - возиться лень, а делать деньги это не помогает. Так что распространяемый на бумаге текст стандарта Open Boot устарел.
Peter Knaggs решил создать европейское отделение Института фортовских приложений и исследований (Institute of Forth Application and Research). Я отметил, что слово институт имеет несколько иной смысл в английском языке - у нас это или НИИ, или образовательная организация, а у них - нечто другое. Peter определил институт как insane asylum. Я так и не понял, то ли это приют умалишенных, то ли психа-одиночки. Peter собирается читать курсы по Форту и утверждает, что можно найти покупателей на такой товар. Я сказал, что в плохие новости мы поверить готовы, а вот хорошие надо доказывать. Питер ответил, что покупателем таких курсов может оказаться фирма Сименс и рассказал следующую историю, которая только подтверждает то, что оптимист - это плохо осведомленный пессимист.
Peter Knaggs: Фирма Сименс спровоцировала банкротство компании Дельта-Т. Клаус Шляйсиек делал Форт-процессоры, и это было воспринято Сименсом как угроза. Я выразил надежду, что Сименс не присылал мафию толковать с Клаусом. Питер сообщил, что Клаус уехал в Америку.
Итак, компания Сименс увидела в технологии компании Дельта-Тэ угрозу, а то, в чем они видят угрозу, они изучают. Видимо, по принципу "я барахла не ем".
Кто-то: Чарльз Мур никогда не делает архивных копий. Он не может вернуться к предыдущей версии.
Практика показала, что три человека не могут говорить про объекты даже если четвертый по-видимому спит. Одному из троих обязательно станет скучно и он уведет разговор в сторону.
Интернациональное произношение. Я в свое время предлагал определить рекомендуемое произношение для тех, кто не знает английского настолько, чтобы правильно произнести слово QUIT. Питер вспомнил про этот вопрос (я поднимал его в comp.lang.forth), и я напомнил результат того обсуждения. Наилучшие результаты дает латинское чтение, например, read-file читается как реад-филэ. (Я не предлагал в том разговоре для упомянутого выше конкретного случая читать qu как ку, но, в общем, вы меня поняли).
Reuben Tomas: Удачный синтаксис (notation) способствует написанию хорошего кода. Я: удачный синтаксис надо сначала изобрести. Изобрести адекватную запись означает понять, что должно считать хорошим стилем.
Фотоснимки от 19 сентября 1999 г.
История документа:
28.09.99 -- набран
29.09.99 -- публикация на www.forth.org.ru и затем небольшие изменения
12.10.99 -- добавлена ссылка на фотографии