MOO (язык программирования) - MOO (programming language)
Эта статья нужны дополнительные цитаты для проверка.Март 2018 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Парадигма | мультипарадигма: структурированный, на основе прототипа |
---|---|
Разработано | Стивен Уайт |
Разработчик | Стивен Уайт и Павел Кертис |
Впервые появился | 1990 |
Стабильный выпуск | 1.8.1 / 10 января 2001 г. |
Печатная дисциплина | динамичный |
Основной реализации | |
MOO | |
Под влиянием | |
Алгол, Лисп, Схема, Болтовня, Себя, C, Ада, MUF | |
Под влиянием | |
CoolMUD, ColdC |
В Язык программирования MOO относительно простой язык программирования используется для поддержки MOO Сервер. это динамически типизированный и использует на основе прототипа объектно-ориентированный система, с синтаксис примерно получено из Ада школа языков программирования.
История
Стивен Уайт создал первый сервер MOO и язык в 1990 году, используя C. В течение года к проекту присоединился Павел Кертис, выпустив первую версию LambdaMOO Сервер. LambdaMOO управляется и поддерживается полностью на добровольной основе, и теперь у него есть собственный SourceForge проект. Хотя последний пакетный выпуск был выпущен в 2001 году, разработка продолжается в CVS проекта на Sourceforge.net. [1] Некоторый дополнительный код также доступен на Github.net.
Уайт описывает MOO как «мешанину из c-подобных операторов и структур управления, подобных Ada, в сочетании с одиночным наследованием в стиле прототипа».
Функции
В языке есть явные Обработка исключений поток управления, а также традиционные конструкции цикла. Иерархия глаголов и свойств предоставляет значения по умолчанию для объектов-прототипов, с преобладающими значениями ниже в иерархии. Эта иерархия объектов поддерживается посредством делегирования «родительскому» свойству объекта, что приводит к форме единственного наследования. Специальные связанные с безопасностью атрибуты объектов, команд и свойств включают владение, а также флаги чтения, записи и выполнения. Программы MOO компилируются в виде байтового кода с неявной декомпиляцией при редактировании, что обеспечивает каноническую форму программ.
Программы MOO ортогонально настойчивый через периодические контрольно-пропускные пункты. Объекты идентифицируются уникальным целочисленным идентификатором. Неиспользуемые данные программы удаляются через автоматический сбор мусора (реализовано подсчет ссылок ). Однако сами объекты MOO не собираются сборщиком мусора и вручную удаляются их владельцами или суперпользователями (также известными как мастера) в процессе, называемом «переработка».
MOO явно является многопользовательской системой, и программы (глаголы) создаются любым количеством подключенных пользователей. Различают «драйвер» (среда выполнения) и «ядро» (программы, написанные на языке MOO). Подавляющее большинство функций работающего MOO обрабатываются «внутри ядра».
Среда выполнения поддерживает многозадачность с использованием метода квантования времени на основе возмездия. Глаголы выполняются с монопольным доступом к базе данных, поэтому для поддержания синхронизации не требуется явной блокировки. Простой обмен сообщениями TCP / IP (совместимый с telnet) используется для связи с клиентскими сокетами, каждый из которых идентифицируется с помощью «игрока» в Виртуальная реальность система представительства.
Язык поддерживает слабые ссылки на объекты по номерам, а также на свойства и глаголы через строки. Существуют встроенные функции для получения списков свойств и глаголов, предоставляющие возможности языковой среды выполнения для отражение. Сервер также поддерживает сопоставление глаголов с подстановочными знаками, поэтому один и тот же код можно легко использовать для обработки нескольких команд с похожими именами и функциями.
Доступная последовательность типы в MOO есть списки и строки. Оба поддерживают произвольный доступ, а также операции головы и хвоста, аналогичные тем, которые доступны в Лисп. Все операции со списками и строками являются неразрушающими, и все типы данных, не являющиеся объектами, неизменяемы. Встроенные функции и библиотеки позволяют также использовать списки как ассоциативные массивы, а также упорядоченные и неупорядоченные наборы.
Синтаксис
Структуры управления
MOO имеет очень простой набор управляющих структур, причем for-in-list является единственной «необычной» функцией.
если еще
если (<expr>) <заявления>;elseif (<expr>) <заявления>;еще <заявления>;endif
за
за <Переменная> в [<номер>..<номер>] <заявления>;конец
за <Переменная> в (<значение списка>) <заявления>;конец
пока
пока (<выражение>) <заявления>;в конце концов
попробуй ... кроме
пытаться <заявления>;Кроме <Переменная> (<код ошибки>) <заявления>;Endtry
Примеры программ
Классический Программа Hello World можно записать в MOO как:
@программа привет:пробегигрок:рассказать("Привет миру MOO!");.
Более интересный пример:
@программная игрушка:ветер если (это.место расположения == игрок) если (это.ранить < это.максимум) это.ранить = это.ранить + 2; игрок:рассказать("Вы заводите", это.имя,"."); игрок.место расположения:объявить(игрок.имя, "закручивает", это.имя,"."); если (это.ранить >= это.максимум) игрок:рассказать(«Ручка останавливается во время завода».); endif еще игрок:рассказать("The",это.имя,"уже полностью намотан".); endif еще игрок:рассказать("Вы должны держать", это.имя,"."); endif .
Смотрите также
- MOO (игровая система)
- LPC (язык программирования)
- Pike (язык программирования)
- Язык сценариев Linden (LSL)
Рекомендации
дальнейшее чтение
- Стейси, Крис (1995). «14. Программирование MOO». В Бьюзи, Эндрю (ред.). Секреты мастеров MUD. Издательство SAMS. С. 307–369. ISBN 0-672-30723-5.
- Кертис, Павел (Май 2004 г.). "Руководство программиста LambdaMOO". Ресурсы сервера MOO.
- "Памятка по программированию MOO". ресурсы по программированию moo. 1999-01-10.
- "Неофициальное руководство по программированию MOO". ресурсы по программированию moo. 1994-01-10.