Открыть главное меню

Изменения

Inform

15 154 байта добавлено, 22:44, 18 января 2008
Нет описания правки
'''Inform''' - одна из самых популярных платформ (по общему количеству программ, созданных на этой основе, она явно может претендовать на мировое лидерство). Распространяется как [[freeware]].

==Разработка и поддержка==
Язык Inform в 1993 г. создал [[Нельсон, Грэхем|Грэхем Нельсон]] (Graham Nelson). Помимо него, к созданию технологии приложили усилия еще многие: компания [[Infocom]] (оригинальный формат Z-файлов), группа [[InfoTaskForce]] (его последующая «расшифровка»), [[Плоткин, Эндрю|Эндрю Плоткин]] (Andrew Plotkin) — технологии [[Glk]], [[Glulx]] и [[Blorb]]. В настоящее время, поддержкой и развитием технологии занимается группа, которую возглавляет [[Фирт, Роджер|Роджер Фирт]] (Roger Firth).

==Принципы технологии==
Компилируемый язык программирования. Файлы с исходным кодом (обычно имеющие расширение .inf) обрабатываются компилятором Информ, поддерживающим две целевых платформы — [[Z-code]] и [[Glulx]].

Файлы первого типа имеют расширения типа .Z# (# — цифра, номер версии Z-формата) и содержат исполняемый код 16-битовой виртуальной [[Z-машина|Z-машины]]. С помощью Inform обычно создаются программы ее пятой (.Z5, до 256 Kb) и восьмой (.Z8, до 512 Kb) версий. Конечно, для их выполнения требуется Z-интерпретатор — наиболее популярен [[Frotz]], имеющий много портов и модификаций. Замечу, что поскольку этот Z-формат отсчитывает свою историю от той самой [[Infocom]], то все Z-интерпретаторы также выполняют большинство классических игр этой фирмы (хотя они созданы не с помощью Inform).

Файлы Glulx (имеют расширение .ULX) содержат 32-битовый виртуальный код. Для их выполнения требуется свой интерпретатор (обычно он называется Glulxe, или наподобие этого). Размер Glulx-игр практически не ограничен, отсутствуют также многие внутренние лимиты, характерные для Z-кода.

==Переносимость==
Технология доступна очень широко. Вот список (не самый свежий) платформ, где компилятор Inform доступен: Acorn RISC OS, BeOS, Macintosh, Atari ST (версия 5.4), Amiga, MS-DOS (также версия для GO32), Linux, OS/2, UNIX, VMS (DEC VAX или Alpha) и EPOC (Psion 5/Revo/7), Windows. Z-интерпретаторы доступны еще шире — в частности, есть для большинства маломощных устройств, вроде наладонников. Glulx-интерпретаторы пока распространены меньше, но для Windows, Linux (консольный и X) и MacOS X имеются.

==Основные возможности==
Inform - полнофункциональный объектно-ориентированный язык программирования, во многом похожий на C и SmallTalk. Он позволяет описывать игру в виде иерархии объектов с определенными свойствами и атрибутами; поддерживаются классы и наследование, в т.ч. множественное. Системный [[парсер]] весьма развит и соответствует стандартам лучших продуктов от [[Infocom]]. По умолчанию поддерживается около полусотни стандартных глаголов; можно легко определять новые глагольные фразы (с альтернативными вариантами синтаксиса), равно как и замещать или переопределять стандартные.

Платформе присуща очень открытая архитектура — Inform в значительной степени реализован на себе самом. Например, [[парсер]] реализован в виде набора Inform-[[подпрограмма|подпрограмм]], что позволяет легко изменять любые его модули; то же справедливо для библиотеки стандартных глаголов. В языке также имеется специальное средство для «замещения» стандартных подпрограмм на определенные пользователем. Имеется более сотни дополнительных модулей и полезных расширений для стандартных библиотек. Имеются даже полные альтернативы стандартным библиотекам — например, пакет [[Platypus]].

Отдельного отладчика для Inform не предусмотрено — зато предусмотрен специальный отладочный режим [[компиляция|компиляции]] игры. В нем доступно большое количество дополнительных отладочных глаголов, позволяющих следить за работой парсера и внутренними процессами игры, просматривать структуру объектного дерева и свойства отдельных объектов, мгновенно переместиться в любую [[локация|локацию]] и заполучить любой [[объект]] и т.п. Еще более мощных дополнительным средством является встроенный отладчик “Infix“, позволяющий произвольно менять переменные игры и атрибуты объектов и понимающий выражения с Inform-подобным синтаксисом.

Компилятор поддерживает множество дополнительных опций, включая выдачу разнообразных листингов и дампов создаваемой программы в «читаемом» виде, выдачу статистики (например, общий объем текста в исходном коде) и пр. Для Z-формата доступно много дополнительных инструментов — декодеры и дисассемблеры (TXD, InfoDump), верификаторы целостности Z-файла и пр. Имели место даже попытки (пока, правда, не слишком удачные) создать дисассемблеры, автоматически восстанавливающие Z-файл до исходного кода на Информе.

Оригинальный формат Z-кода предлагал весьма ограниченные (и плохо совместимые с новыми [[интерпретатор|интерпретаторами]]) возможности для управления цветом и стилями текста, деления экрана на окна и вывода графики. Новый формат, Glulx, призван исправить этот недостаток. Glulx-программы могут открывать и использовать произвольное количество неперекрывающихся окон (причем их размеры и расположение можно менять при выполнении программы), управлять стилями и форматированием выводимого текста, выводить графические изображения в отдельные окна или встраивать их в текст, внедрять в текст гиперссылки, воспроизводить музыку и звуковые эффекты по нескольким каналам, работать с произвольными внешними файлами и пр. Glulx-программы управляются событиями, позволяющими асинхронно обрабатывать ввод от клавиатуры, мыши и таймера. Стандартные Информ-библиотеки теперь расширены таким образом, что программист может создавать Glulx-игры с поддержкой графики, аудио, мыши и т.п. ничего в них не меняя — надо лишь подключить собственные обработчики к заложенным в библиотеку «переходникам». Новым стандартным форматом для хранения графики и мультимедиа является Blorb (расширение .BLB). В файлы этого формата могут упаковываться графические изображения (в форматах JPEG и PNG), музыка и звуки (в форматах MOD, SONG, AU, RIFF/WAV и OGG) и собственно программа (как Z-code, так и Glulx), что дает возможность распространять программу в одном BLB-файле вместе со всеми мультимедиа-ресурсами.

С использованием этих технологий есть возможность создавать [[ИЛ]]-игры, дополняющие стандартный парсер мощным Legend-подобным многооконным интерфейсом. Более того, уже появились библиотечные пакеты, помогающие это делать (например, GWindows).

==Интернационализация и русская версия==
Inform — одна из самых широко локализованных систем ИЛ, причем возможность локализации заложена непосредственно в стандартные библиотеки. Все языково-специфичные детали (сообщения, грамматика, союзы и служебные слова и пр.) изолированы от прочего кода, собраны в двух библиотечных файлах (English.h и Grammar.h), и в принципе достаточно правильно перевести их содержимое для локализации всей системы. Хотя изначально система создавалась для такого грамматически простого языка, как английский, в ней предусмотрено многие понятия (концепции рода и числа, различные артикли и их contraction forms и пр.), также необходимые для европейских языков. Механизм предпарсерной обработки командной строки позволяет справиться со многими языково-специфичными трудностями. Уже имеются переводы на немецкий, французский, испанский, итальянский, шведский, искусственные языки эсперанто и lojban; в процессе перевод еще на несколько языков — португальский, финский, польский. В спецификации Z-форматов сейчас заложена полная поддержка набора символов Unicode.

Русская версия системы ([[RInform]]) активно разрабатывается с 2003 года по настоящее время. Основной ее разработчик — автор этого документа (dgaev%mail!ru). Состояние — «стабильная бета» (версия 0.80 готовится к выходу), принципиальных изменений не ожидается. Система самостоятельно умеет генерировать падежные формы для имен объектов (достаточно выделить падежные окончания существительных и прилагательных, например «массивн/ая стальн/ая двер/ь», присвоив соответствующему объекту правильные род и число), и распознавать падежные формы в командах (и «открыть дверь ключом», и «открыть ключом дверь» понимаются правильно). Также распознается большое число дополнительных глагольных форм с приставками.

К сожалению, сейчас Glulx не поддерживается в качестве выходной платформы для [[RInform]], т.к. в спецификации этого формата поддержка наборов символов, отличных от Latin-1, не заложена вообще! К счастью, это будет исправлено. Кроме того, не все Z-интерпретаторы правильно поддерживают Unicode — под Windows рекомендуется использовать [[WinFrotz]] 2002.

==Ссылки==
[http://www.inform-fiction.org официальная страница проекта Информ]

[[Категория:Платформы]] [[Категория:Парсерные платформы]]
202
правки