# Инструментарий виртуальных миров и OMeta: совместное программирование распределенных объектов с помощью создаваемых пользователем языков [2014]

Исследовательская работа проекта Крестьянство SDK была представлена на семинаре по будущему программирования [Future Programming Workshop](http://www.future-programming.org) в рамках крупнейшей международной конференции [SPLASH 2014](http://2014.splashcon.org), Портленд (Орегон, США). Полная программа семинара на английском доступна [здесь](http://www.future-programming.org/program.html)


<iframe src="//player.vimeo.com/video/106690115" width="600" height="337" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p></p>

[Работающий прототип](http://vle.krestianstvo.org/adl/sandbox/world/OlxOHOzdn4yU10yn)

[Исходный код](https://github.com/NikolaySuslov/Sandbox-VLE/tree/vle-sandbox)


Инструментарий виртуальных миров (VWF) представляет собой синхронизированую совместную 3Д среду внутри Веб браузера. Продолжая исследования, начатые в проекте OpenCroquet,  связанные с понятием виртуального времени, инструментарий виртуальных миров позволяет легко создавать приложения и предоставляет упрощенный интерфейс для взаимодействия нескольких пользователей с одним состоянием приложения, которое синхронизировано у всех участников соединения. Приложение, созданное с испоьзованием инструментария виртуальных миров, состоит из компонентов, которые запрограммированы на языке JavaScript, что позволяет разделенному коду, обеспечивающему распределенные вычисления, модифицироваться непосредственно во время работы прилржения. OMeta это новый объектно-ориентированный язык программирования сопоставлений с образцами. Он базируется на варианте (PEGs) грамматик, разбирающих выражения, которые были расширены до поддержки обработки произвольных типов данных. Общие функции OMeta по сопоставлению с образцом обеспечивают естественный и удобный способ программистам для реализации анализаторов, посетителей, трансформаторов деревьев и т.д.

Представленное объединение позволит определить на любом компоненте инструментария виртуальных миров свою собственную граматику языка и реплицировать ее всем экземплярам приложения. Затем, уже запускать скрипты, использующие эту грамматику для этого же компонента. Например, можно реализовать все возможные языки, начиная с "рисующей черепашки" до языка программирования Smalltalk, сделав их доступными для программирования компонентов виртуального мира непосредственно в Веб браузере.

Демонстрация содержит примеры совместного программирования распределенных объектов с помощью созданных пользователем грамматик. Эти объекты могут сосуществовать друг с другом в одном реплицируемом виртуальном мире. И будучи запрограммированными на разных языках, объекты участвуют в вычислениях, поддерживаемых одну общую симуляцию.

![poster](../images/projects/fpw/poster-fpw.jpg "FPW")
