Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2015, 23:27   #1
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию SCOL - перевод учебника на русский

В данной теме постепенно буду выкладывать перевод на русский язык учебника по малоизвестному языку программирования SCOL. На этом языке, в частности, написан основной функционал трёхмерного движка-конструктора OpenSpace3D.
По данному движку в этой ветке форума также есть тема http://www.programmersforum.ru/showthread.php?t=282034

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

В качестве оригинала для перевода использую этот документ (с официального сайта SCOL) http://redmine.scolring.org/projects...alLanguage.pdf

Документацию по библиотечным функциям (API) языка тоже взялся переводить, обновляющиеся версии таких переводов в формате chm будут выкладываться на этом же форуме в теме http://www.programmersforum.ru/showthread.php?t=282024

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

Последний раз редактировалось Avatar-Z; 03.09.2015 в 23:40.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 11:05   #2
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

Так как перевожу учебник по языку SCOL одновременно с туториалом по движку OpenSpace3D, то хотелось бы описать принципы взаимосвязи технологий. Чтобы не копировать эти принципы (как я их понимаю), привожу просто ссылку на сообщение соседней темы http://www.programmersforum.ru/showp...89&postcount=2
Читаем, и сразу возвращаемся обратно.

Далее. В учебнике перед основной информацией идёт оглавление (содержание). На форуме у меня нет возможности постепенно привязывать ссылками строки из оглавления к конкретной главе, поэтому в следующем сообщении (или нескольких, как получится) выложу переведённое оглавление, просто для ознакомления. А когда переведу учебник полностью, в конце темы уже сделаю нормальное оглавление со ссылками.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 11:18   #3
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

СОДЕРЖАНИЕ

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

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

Последний раз редактировалось Avatar-Z; 06.09.2015 в 11:48.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 11:44   #4
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

СОДЕРЖАНИЕ (продолжение)

8. Bignum-программирование [программирование с использованием больших чисел (на основе библиотеки 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. Примеры

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. Примеры

Последний раз редактировалось Avatar-Z; 06.09.2015 в 11:50.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 12:38   #5
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

1. Описание

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

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

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

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

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

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

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



В правой части окна исполняемый файл Scol.exe , запускающий машину - выделен. Слева, если вы заметили, среди прочих каталогов располагается папка Moya_pervaya_programma. Там находятся файлы с кодом первой программы на языке SCOL, которую скоро и рассмотрим.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 13:10   #6
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

1.2. Связь между виртуальной машиной SCOL и файлами на вашем компьютере

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

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

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

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

[Перед тем, как перейти к главе 1.3 - выложу сведения, собранные мной на основе нескольких источников и с учётом собственных наблюдений.]

1. Итак, язык SCOL был создан французской компанией Cryo Networks. Расшифровывается аббревиатура языка так: Standard Cryo On Line. Деятельность компании направлена исключительно на разработку и публикацию онлайн-приложений, в том числе [или только?] многопользовательских 3D-игр, в числе которых такие как Deo Gratias, FireTeam,Treasure Hunt 2001, Mankind и Scotland Yard.

Пока не могу сказать с уверенностью, но похоже, что компания приказала долго жить, так как на их официальном сайте http://cryo-networks.com новости последний раз обновлялись где-то в сентябре прошлого (2014) года. Может это и не так, но ссылка на виртуальную машину с языком SCOL у них больше не работает. Точнее внешние ссылки, ведущие на загрузку машины с их сайта приводят к надписи, что информация not found. Но язык, а соответственно и виртуальная машина постоянно обновляется и выкладывается сюда http://www.scolring.org/rsc/scol_plugin.exe

А это скорее всего означает, что у языка теперь другие хозяева, либо I-maginer (компания-разработчик движка OpenSpace3D), либо свободное сообщество почитателей языка, либо кто-то ещё.

2. На будущее (для чистового перевода). Любая программа на SCOL должна находиться там, где находится виртуальная машина SCOL.
А точнее по этому пути C:\Program Files\Scol Voyager\Partition_LockedApp При этом диск не обязательно должен быть C:\ и не обязательно системный.
Также можно расположить программу ещё в этой папке C:\Users\Имя_пользователя\Documents \Scol Voyager\Partition_LocalUsr
Здесь диск тоже не обязательно должен быть C:\ но обязательно системный

[точно не знаю, позволяет ли виртуальная машина при установке создавать дополнительный каталог не в папке Документы, а где либо ещё. Пока такой возможности не нашёл. Также не знаю, позволяет ли Windows переназначить путь папки Документы на несистемный диск.]


3. Также, виртуальная машина SCOL имеет ещё одну папку. Вот по этому пути C:\Users\Имя_пользователя\AppData\L ocal\Scol Voyager

Там и сохраняются логи и что-то ещё. Пока не могу понять, эта папка была изначально, или появилась после запуска одного из виртуальных миров, на который я наткнулся совершенно случайно, побродив вот по этому ресурсу http://www.arkeon.be/skin1/products....e=projets_scol
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 22:11   #7
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

1.3. Настройка окружения

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


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

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

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

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

-- Запустите виртуальную машину
-- В трее появится значок машины

-- Жмём правой кнопкой по этой иконке
-- Выбираем Advanced... > expert Mode
-- Появится окно, в котором строку "echo 0" надо заменить на "#echo 0" (символ # используется для добавления комментариев к строке). Также замените строку с "log no" на "log yes". На скрине получившиеся строки выделены. Жмите Ок.


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

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

Для разработки программ в виртуальной машине SCOL потребуется какой-либо внешний текстовый редактор для ввода кода. Можно пользоваться обычным встроенным в Windows блокнотом, но лучше если редактор будет более продвинутый с возможностью использовать подсветку и отступы для разных языков программирования. Если редактор позволяет - выберите в его настройках отображение синтаксиса языка С.
Я буду использовать Notepad++. Чтобы там выбрать нужный синтаксис, выбираем в меню Синтаксисы > C > C
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 22:30   #8
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

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

Теперь даём одинаковые имена получившимся файлам. Я назвал их 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. В итоге откроется вот такое консольное окно:



Внизу консольного окна виден результат работы программы. Программа напечатала строку >>>>>>>>>>>> Hello Mir!
Содержимое окна консоли также тесно связано с сообщениями, записываемыми в лог-файлы.
Также хочу заметить, что логи и многое другое хранится на диске C в папке с документами по этому пути C:\Users\имя_пользователя\Documents
После установки движка OpenSpace3D и SCOL-машины, там появятся две папки с названиями OpenSpace3D и Scol Voyager. Такое задание - каждый пусть самостоятельно откроет эти папки и просмотрит всё что там находится.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 23:09   #9
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

Разберёмся с написанным кодом.
Команда _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 очень редко приходится вручную определять тип функции а также типы её аргументов и возвращаемых значений. Виртуальная машина обычно делает это за программиста.
Avatar-Z вне форума Ответить с цитированием
Старый 06.09.2015, 23:26   #10
Avatar-Z
Пользователь
 
Аватар для Avatar-Z
 
Регистрация: 03.09.2015
Сообщений: 63
По умолчанию

2.2. Вторая версия

Теперь давайте немного перепишем код в обоих файлах.

Открываем файл Hello_mir.scol с помощью текстового редактора, и вносим туда небольшие изменения - добавляем во вторую строку слово "Test" вместе с кавычками.
В итоге весь код в scol-файле будет выглядеть так:
Код:
_load "Moya_pervaya_programma/Hello_mir.pkg"
main "Test"
Сохраняем, закрываем.
Теперь откроем таким же образом файл Hello_mir.pkg. Туда уже вносим существенные изменения. В итоге код должен получиться таким:
Код:
/* Hello_Mir.pkg */

fun end(a,b,r)=
_closemachine;;

fun main(title)=
_DLGrflmessage
(_DLGMessageBox _channel nil title "Hello Mir!" 0)
@end 0;;
На сей раз результат работы программы отобразится не в консольном, а в диалоговом окне.



При нажатии на кнопку Ок окно закроется. Вместе с виртуальной машиной SCOL.

Программа имеет ряд особенностей:
-- из scol-файла в функцию main передаётся аргумент, несущий информацию о названии самой программы. В данном случае, можно заметить, что в заголовке диалогового окна появилось название Test. Чтобы функция main "поняла", что принять нужно именно название окна заголовка, а не что-то иное, в файле Hello_Mir.pkg это надо прописать явным образом. Смотрим на эту строку:
Код:
fun main(title)=
Видно, что функция main должна принять аргумент "Test" в параметр, имеющий имя title. Имея в скобках такой параметр, функция будет знать, что всё, что записано в scol-файле после названия функции (main), должно отображаться в заголовке окна.

-- Тело функции main в pkg-файле хотя и записано в трёх строках, но имеет всего лишь одно выражение (один оператор). Для наглядности можно записать функцию вот в таком виде:
Код:
fun main (title) =
_DLGrflmessage(_DLGMessageBox _channel nil title "Hello Mir!" 0) @end 0;;
Разберём этот оператор. Сначала вызывается библиотечная функция _DLGrflmessage, принимающая три параметра.
[рекомендую для ознакомления с библиотечными функциями, их действием и принимаемыми параметрами, зайти на эту страницу http://www.scolring.org/files/doc_ht..._language.html
Данная документация тоже будет со временем переведена.
Разбираемая сейчас функция описана здесь http://www.scolring.org/files/doc_ht...flmessage.html ]

О том, что это за функция, _DLGrflmessage, и какие параметры она имеет, я попытаюсь рассказать более подробно, чем это написано в учебнике. Непонятные моменты, и что-либо, требующее повышенного внимания, как обычно, буду выделять красным цветом.
Avatar-Z вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод ячейки на Русский Юнлинг Microsoft Office Excel 7 04.10.2015 20:16
OpenSpace3D - перевод хэлпа на русский Avatar-Z Софт 18 06.09.2015 23:51
Перевод программы на русский язык. shivo Фриланс 1 05.01.2011 15:20
перевод на русский Ensoph Общие вопросы Delphi 3 19.05.2008 09:09