PDA

Просмотр полной версии : SCOL - черновик хэлпа


TEST

Оlеg75
02.08.2015, 16:02
В этой теме буду записывать копию перевода с английского языка учебника по языку программирования SCOL. Этот язык подходит для скриптования событий на движке OpenSpace3D. Переводить буду медленно, так как качество дороже, да и долго придётся править выданное гугл-переводчиком. Сначала перевод записываю сюда http://n-vr.forumbook.ru/t32-topic#63

SCOL - это свободный, функциональный, интерпретируемый язык высокого уровня. В основном он используется для создания многопользовательских 3D-приложений режима реального времени.

SCOL находится в стадии разработки и стремится быть мультиплатформенным. Его новый 3D-движок полностью базируется на Ogre3D со множеством расширений.

Кроме некоторых специфических функций, код, написанный на SCOL будет прочитан и выполнен на всех поддерживаемых платформах.

Оlеg75
02.08.2015, 16:03
СОДЕРЖАНИЕ (Постепенно будет в виде гиперссылок).

1. Описание
1.1. Описание виртуальной машины SCOL
1.2. Связь между виртуальной машиной SCOL и файлами на вашем компьютере
1.3. Реализация окружения
1.3.1. Установка SCOL
1.3.2. Специальная конфигурация
1.3.3. Девелопинг (развитие)

2. Hello World
2.1. Первая версия
2.2. Вторая версия
2.3. Третья версия

3. Принципы программирования на SCOL
3.1. Среды и каналы
3.1.1. Среды
3.1.2. Каналы
3.1.3. Запуск SCOL-машины: инициализация
3.2. Функциональное программирование
3.3. Типы и типизация
3.3.1. Введение в типы
3.3.2. Синтаксис типов SCOL
3.3.3. Дополнительная информация о типах
3.4. Синтаксис языка SCOL
3.5. Основные конструкции
3.5.1. Главные элементы
3.5.2. Использование кортежей
3.5.3. Применение списков
3.5.4. Использование таблиц
3.5.5. Дополнительно о некоторых основных конструкциях
3.5.6. Использование структур
3.5.7. Использование конструкторов типов
3.5.8. Использование функций
3.5.9. Переопределение функций
3.5.10. Новые примеры
3.5.11. Стандартная библиотека
3.6. Глобальные переменные SCOL-машины

4. Каналы и [серверы, коммуникации, связи?]
4.1. Манипуляция каналами
4.1.1. Манипуляции API каналов
4.1.2. Среда управления API
4.1.3. Создание и уничтожение каналов
4.1.4. Создание и уничтожение сервера
4.1.5. Дополнительные функции управления кеаналом
4.1.6. Синтаксис сценария
4.2. Коммуникации в SCOL
4.2.1. Управление соединениями: [частные, конкретные, определённые] события
4.2.2. Отправка сообщения с помощью _onfunction
4.2.3. Управление очередями сообщений
4.2.4. Отправка UDP-сообщений
4.2.5. Другое применение конструкторов коммуникаций
4.3. Методология сетевого программирования в SCOL

Оlеg75
02.08.2015, 16:05
5. Управление файлами
5.1. COL - разделы
5.2. Типы файлов
5.2.1. Нормальные файлы [?]
5.2.2. Подписанные файлы [?]
5.3. Файлы управления API [?]
5.4. Расширения файлов с функцией чтения [?]
5.5. Файлы выбора интерфейса

6. События - [driven (?)] и программирование графического интерфейса
6.1. Основные принципы
6.1.1. Частные каналы [?]
6.1.2. Управление событиями
6.2. Примеры
6.2.1. Окна
6.2.2. Таймеры

7. 3D - программирование
7.1. Основные концепции 3D
7.1.1. Сцена
7.1.2. Сессия
7.1.3. Материал
7.1.4. Производительность
7.1.5. Характеристики SCOL 3D Voy@ger
7.2. 3D-формат файлов [?]
7.3. Манипуляции с 3D API
7.3.1. Новые типы
7.3.2. Сессия
7.3.3. Общее управление объектами
7.3.4. Управление материалами
7.3.5. Управление текстурами
7.3.6. Управление рендерингом и связь с 2D - интерфейсом
7.4. Управление столкновениями
7.4.1. Принципы
7.4.2. API

8. [Bignum (?)] программирование
8.1. Введение
8.2. API
8.3. Пример

9. SQL
9.1. Введение
9.2. API
9.2.1. Подключение созданной функции
9.2.2. Отключение функции
9.2.3. Запрос функции
9.3. Примеры

Оlеg75
02.08.2015, 16:05
10. Интерфейс HTTP
10.1. HTTP-сервер
10.1.1. Принципы
10.1.2. Некоторые советы
10.2. HTTP клиент
10.2.1. Принципы
10.2.2. Метод POST

11. Программирование мультимедиа
11.1. API RealPlayer
11.2. API Quicktime
11.3. API базового мультимедиа
11.4. Аудио API
11.4.1. Запись / воспроизведение (моно)
11.4.2. Компрессия / Декомпрессия аудио
11.4.3. Микширование с 3D-звуком
11.5. Видео API
11.6. Печать

12. SCOL-машина: Start-up, запуск, стандартный клиент и сервер
12.1. SCOL Voy@ger: супервизор
12.2. Запуск супервизора
12.3. Старт SCOL-машины путём запуска скрипта
12.3.1. Запуск скрипта
12.3.2. Права на операции (?)
12.3.3. Память
12.4. Запуск другой машины или другого процесса из SCOL-машины
12.5. Связь между SCOL-машиной и супервизором
12.6. Стандартные клиент и сервер
12.6.1. Общие замечания по интерфейсу SCOL-машины
12.6.2. Стандартный сервер третьей версии

13. Возможности интеграции
13.1. Взаимодействие с помощью обмена файлами
13.2. Взаимодействие с помощью базы данных: SQL библиотеки
13.3. Взаимодействие через HTTP: библиотеки HTTP клиента и сервера
13.4. Интеграция в веб-страницы
13.4.1. Простое взаимодействие
13.4.2. Сложное взаимодействие

14. DMS (?) программирование: распределённая модульная система
14.1. Описание
14.2. Определение
14.3. Принципы
14.3.1. Архитектура модулей
14.3.2. Дерево документов
14.3.3. Инкапсуляция
14.3.4. Ссылки и связи между модулями
14.3.5. Динамическая активация
14.3.6. Пользователи и пользовательские экземпляры
14.3.7. Редактор сайта SCS
14.4. Загрузка ресурсов
14.5. DMS сайта - определение файлов [?]
14.5.1. Файлы DMS: распространённые классы модулей
14.5.2. Файлы DMS
14.6. API
14.6.1. API севера
14.6.2. API клиента
14.6.3. Редактор API
14.7. Пример 1: Модуль работает только на сервере
14.8. Пример 2: Распространение модуля и управление зоной
14.9. Пример 3: Распределённый модуль и модуль внутри сообщения
14.10. Модуль C3d3 и плагины
14.10.1. Концепция 3D API
14.10.2. Анкоры (якоря)
14.10.3. Плагины
14.10.4. Примеры

Оlеg75
02.08.2015, 16:06
1. Описание

Данная глава, включающая описание SCOL, поможет вам сделать первые шаги в этой среде программирования.

1.1. Описание виртуальной машины SCOL

[Внимание! Некоторые главы мне придётся переработать с учётом той версии виртуальной машины, которая установлена у меня на компьютере. Так как в данном (вольном) переводе документации многое в основном будет привязываться именно к программированию в среде движка OpenSpace3D, то я иногда буду отступать от основного текста оригинала, и дополнять его необходимыми на мой взгляд сведениями. Большие отступления от основного текста постараюсь выделять цитатой и иногда зелёным цветом. Качество самого хэлпа думаю от этого не пострадает :)]

Виртуальная машина SCOL - это программа, основанная на технологии SCOL. Виртуальная машина создаёт виртуальную версию "идеальной" машины со следующими характеристиками:
-- Автоматическое управление памятью. Разработчики не должны сами заботиться о резервировании и об освобождении памяти.
-- "Машинным языком" этой виртуальной машины является язык SCOL
-- В виртуальную машину встроено полное управление сетью, [маскируемое (?)] языком SCOL
-- Есть много библиотек, позволяющих подключать к виртуальной машине графические, звуковые, и другие интерфейсы пользователя, о которых будет в дальнейшем рассказано в этой документации.

Виртуальная машина SCOL считается универсальной, так как это краеугольный камень любой системы, основанной на технологии SCOL. Любая такая система может состоять из разного числа SCOL-машин, сообщающихся друг с другом. Также отметим, что на одном компьютере может работать сразу несколько виртуальных машин.


Windows-версия виртуальной машины, которая называется Scol Voy@ger (на данный момент последняя её версия - 6.4.5 от марта 2015 года), при установке размещается по пути C:\Program Files (x86)\Scol Voyager для 64-битных систем и C:\Program Files\Scol Voyager для 32-битных систем. В моём случае SCOL-машина установилась автоматически при установке движка OpenSpace3D. При этом нужно явно указать, что хотите дополнительно её скачать. Весит она примерно 70 мегабайт. Можно также SCOL Voy@ger 6.4.5 скачать и отдельно по этой ссылке http://www.scolring.org/rsc/scol_plugin.exe
В этом случае SCOL-машину можно без проблем использовать даже без установки OpenSpace3D.

А вот структура файлов и каталогов виртуальной машины, автоматически (вместе с OpenSpace3D) установленной на моём компьютере:

http://i18.servimg.com/u/f18/19/26/23/10/dddddu11.png

В правой части окна исполняемый файл Scol.exe , запускающий машину - выделен. Слева, если вы заметили, среди прочих каталогов располагается папка Moya_pervaya_programma. Там находятся файлы с кодом первой программы на языке SCOL, которую скоро и рассмотрим.

Оlеg75
02.08.2015, 16:08
1.2. Связь между виртуальной машиной SCOL и файлами на вашем компьютере

Как и любая другая машина, SCOL-машина использует общую память для хранения как программ, так и данных. Соответственно, машина может читать и записывать файлы, что как правило считается специалистами серьёзной угрозой безопасности. Ведь SCOL-приложения часто подключены к интернету, поэтому нельзя, чтобы содержание файлов с пользовательских компьютеров неконтролируемо распространялось по сети.

Учитывая всё это, система управления файлами SCOL-машины была разработана таким образом, чтобы, с одной стороны, отделить друг от друга приложения, использующие SCOL от приложений, не использующих эту технологию. А с другой стороны, система управления файлами изолирует также друг от друга и приложения, написанные на SCOL. Такая система, позже рассматриваемая более подробно, основана на концепции SCOL-разделов.

SCOL-машина использует SCOL-разделы в том порядке, в котором они определены. Если файл не найден в первом разделе - он будет искаться во втором, и так далее.

[далее идёт пока непонятная краткая информация про кэш и разделы в структуре каталогов виртуальной машины. По причине несоответствия путей и названий каталогов на моём компьютере - пока эту информацию пропущу]

1.3. Реализация окружения

1.3.1. Установка SCOL [Информация скорее всего устарела]


1.3.2. Специальная конфигурация

SCOL-машина может создавать специальные лог-файлы, позволяющие отслеживать её работу. Но создание таких файлов может замедлять работу машины, поэтому логи по умолчанию не создаются.

Тем не менее логи могут быть полезны разработчикам. В частности, они указывают на ошибки синтаксиса или на ошибки компиляции в целом. Кроме того, некоторые функции языка SCOL во время выполнения программы могут быть записаны в лог-файл. Часто это помогает эффективно отладить программу.

Теперь посмотрим как настроить машину на создание лог-файлов.

-- Запустите виртуальную машину
-- В трее появится значок машины
http://i18.servimg.com/u/f18/19/26/23/10/screen10.png
-- Жмём правой кнопкой по этой иконке
-- Выбираем Advanced... > expert Mode
-- Появится окно, в котором строку "echo 0" надо заменить на "#echo 0" (символ # используется для добавления комментариев к строке). Также замените строку с "log no" на "log yes". На скрине получившиеся строки выделены. Жмите Ок.
http://i18.servimg.com/u/f18/19/26/23/10/1110.jpg

Теперь система готова для написания вашей первой программы. Если захотите отключить функцию записи логов в журнал - просто восстановите эти две строки.

1.3.3. Девелопинг (развитие)

Для разработки программ в виртуальной машине SCOL потребуется какой-либо внешний текстовый редактор для ввода кода. Можно пользоваться обычным встроенным в Windows блокнотом, но лучше если редактор будет более продвинутый с возможностью использовать подсветку и отступы для разных языков программирования. Если редактор позволяет - выберите в его настройках отображение синтаксиса языка С.

Я буду использовать Notepad++. Чтобы там выбрать нужный синтаксис, выбираем в меню Синтаксисы > C > C

Оlеg75
02.08.2015, 16:09
2. Hello World

Начнём с самой известной программы, которая выводит на экран сообщение Hello World! (Привет мир), и сделаем три версии этой программы. Если в этой главе что-то останется непонятным, будьте терпеливы - в следующих главах всё будет подробно объяснено.

2.1. Первая версия


Итак, первым делом открываем корневой каталог виртуальной машины SCOL C:\Program Files (x86)\Scol Voyager
Пока не будет сказано иное - все наши программы размещаем в папке с названием Partition_LockedApp. Открываем её и внутри создаём папку с названием Moya_pervaya_programma. Внутри уже этой программы создаём два файла. Поступаем просто - правой кнопкой мыши на свободном пространстве и выбираем Создать > Текстовый документ. Когда два текстовых файла созданы, меняем их расширения с txt на pkg и scol. Будьте внимательны, в Windows должно быть включено отображение расширений файлов, иначе если добавите к имени точку и расширения то файлы всё равно останутся текстовыми.

Чтобы настроить отображение расширений в Windows 8 нужно в проводнике выбрать меню Вид > Параметры. Откроется окно, в котором выбираем вкладку Вид. Далее в списке Файлы и папки ищем строку Скрывать расширения для зарегистрированных типов файлов и снимаем слева галочку. После - жмём Ок.

Теперь даём одинаковые имена получившимся файлам. Я назвал их Hello_mir
Всё, заготовка у нас есть. Осталось вписать в эти файлы нужные коды. Принцип тут такой - файл с расширением scol будет содержать команды для запуска файла с расширением pkg. А в последнем, в свою очередь, будет уже записана сама программа.

Открываем файл с расширением scol с помощью Notepad++. Если этот редактор у вас не портативный, а установлен в системе, то достаточно кликнуть правой кнопкой мыши по файлу и выбрать в контекстном меню команду "Edit with Notepad++" Далее, если этого ещё не сделали, выбираем в Нотепад++ синтаксис языка Си. И пишем код.

Код будет таким:



_load "Moya_pervaya_programma/Hello_mir.pkg"
main

Сохраняем код, закрываем редактор. Открываем таким же образом файл с расширением pkg. Вписываем туда следующие строки:



/* commentary */
fun main()=
_showconsole;
_fooS ">>>>>>>>>>>> Hello Mir!";;

Сохраняем. Закрываем редактор.
Пришло время запустить нашу программу. Для этого запускаем двойным кликом файл с расширением scol. В итоге откроется вот такое консольное окно:

http://i18.servimg.com/u/f18/19/26/23/10/210.png

Внизу консольного окна виден результат работы программы. Программа напечатала строку >>>>>>>>>>>> Hello Mir!
Содержимое окна консоли также тесно связано с сообщениями, записываемыми в лог-файлы.
Также хочу заметить, что логи и многое другое хранится на диске C в папке с документами по этому пути C:\Users\имя_пользователя\Documents
После установки движка OpenSpace3D и SCOL-машины, там появятся две папки с названиями OpenSpace3D и Scol Voyager. Такое задание - каждый пусть самостоятельно откроет эти папки и просмотрит всё что там находится.

Оlеg75
02.08.2015, 16:10
Разберёмся с написанным кодом.
Команда _load в файле сценария запуска с расширением scol указывает, что нужно запустить файл программы с расширением pkg, находящемуся по указанному пути.

В нашем случае виртуальная машина автоматически распознала путь C:\Program Files (x86)\Scol Voyager\Partition_LockedApp , а потом перешла уже по дальнейшему пути к нужному файлу "Moya_pervaya_programma/Hello_mir.pkg"
Вторая строка скрипта, где написана команда main приказывает программе запустить главную функцию fun main()

Программа, написанная на языке SCOL может содержать следующие виды определений:
-- def - определение функций
-- var и typeof - с этих ключевых слов начинаются определения переменных
-- typedef и struct - определения новых типов
-- И так далее...

Каждое определение заканчивается двойной точкой с запятой ";;". Такой способ записи взят из языка Caml, который был разработан в 1985 году в Национальном научно-исследовательском институте Франции (INRIA).

Комментарии записываются как в языке Си - между символами /* и */
Но в отличии от языка Си, комментарии можно делать многоуровневыми (древовидными), что является более практичным.

Итак, в нашей программе у нас есть главная функция "main", за которой следует пара скобок. Между скобками ничего нет - это значит, что функция не принимает никакие аргументы (параметры). За знаком равно "=" следует тело функции, которое может состоять из множества операторов. Каждый оператор (выражение) заканчивается точкой с запятой, а каждое определение, как было сказано выше - двойной точкой с запятой. В нашем примере тело функции имеет два оператора
_showconsole;
_fooS ">>>>>>>>>>>> Hello Mir!";;

Чтобы указать, что _fooS ">>>>>>>>>>>> Hello Mir!" является последним оператором в теле функции, он закрывается двойной точкой с запятой. показывая таким образом виртуальной машине, что определение функции закончено.
Выражение _showconsole; указывает, что консольное окно нужно отобразить на экране. В противном случае консоль окажется скрытой.

Проще говоря - это окно вообще не покажется на экране, ни в развёрнутом, ни в свёрнутом виде.
Второе выражение позволяет напечатать нужную нам строку в консоли.


_showconsole и _fooS это библиотечные функции (то есть заранее записанные и встроенные в виртуальную машину) языка.
_fooS требует принятия аргументов типа "строка" (типы изучим позже), затем отображая эту строку в консоли.
В языке SCOL аргументы функций записываются не в скобках, как в языке Си. Они следуют сразу за именем функции. Также аргументы не разделяются запятыми как в Си, а пишутся друг за другом через пробел.

Если вы захотите всё же использовать скобки, то нужно заключать в них либо аргумент, либо полностью запись "функция+аргумент"
Следующие три выражения равнозначны и полностью корректны:
_fooS (">>>>>>>>>>>> Hello World»)
(_fooS ">>>>>>>>>>>> Hello World")
(_fooS (">>>>>>>>>>>> Hello World"))

Позднее мы вернёмся к этому важному моменту.
Обратите внимание - если вам не нравится использовать круглые скобки, можете писать вместо них фигурные скобки. Они работают точно таким же образом (используются для той же цели).

Виртуальная машина работает до тех пор, пока не закрыто окно консоли. Как только вы закроете это окно - машина тоже прекратит работу. Это, кстати, один из способов прекращения работы SCOL-машины.

Что касается вывода нашей программы в консоль, заметьте, что перед выводом на печать строки Hello Mir! чуть выше появляется строка fun main : fun [] S
Эта надпись очень важна - она говорит о том, что виртуальная машина успешно скомпилировала функцию main, дав ей нужный тип. Машина поняла, что функция не принимает никаких значений (параметров, аргументов), и возвращает тип "строка".

Обратите внимание, что в SCOL очень редко приходится вручную определять тип функции а также типы её аргументов и возвращаемых значений. Виртуальная машина обычно делает это за программиста.

Оlеg75
07.08.2015, 07:18
Внимание! OpenSpace3D обновился до версии 1.9.0, а виртуальная машина Scol Voy@ger - до версии 6.5.0. Обновления вышли 4 августа этого (2015) года. Поэтому в дальнейшем переводы документации по OpenSpace3D и языку программирования SCOL будут основываться уже на этих версиях.

Наиболее заметные изменения в OpenSpace3D:
-- Теперь можно выбрать, чтобы интерфейс программы был на русском языке.
-- Внедрена поддержка экспорта проекта на Android (правда почему-то опция неактивна)
-- Поддержка Ogre 3D версии 1.10
-- Поддержка последней версии физического движка Newton

Оlеg75
07.09.2015, 00:04
Внимание!

Все переводы документации по языку программирования SCOL и движку OpenSpace3D теперь буду записывать только на форуме Клуб Программистов в этих темах:
1. OpenSpace3D - перевод хэлпа на русский http://www.programmersforum.ru/showthread.php?t=282034
2. SCOL - перевод учебника на русский http://www.programmersforum.ru/showthread.php?t=282035
3. Обсуждение технологии и выкладывание новых версий перевода документации по API ("Неведомые" язык SCOL и движок OpenSpace3D) http://www.programmersforum.ru/showthread.php?t=282024

TAG.Hosting — Хостинг сайтов и Регистрация Доменов