REBOL 3: различия между версиями
Oleg4280 (обсуждение | вклад) {{Темы|Языки программирования}} {{BookCat}} |
Oleg4280 (обсуждение | вклад) ссылки на подстраницы |
||
Строка 24: | Строка 24: | ||
* фрагменты текстов, такие как в документах. |
* фрагменты текстов, такие как в документах. |
||
'''В деталях [[Скрипты REBOL 3]] - Файловый суффикс - Структура - Заголовки - Аргументы - Опции программы - Выполнение - Загрузка - Сохранение - Хранилище данных - Комментарии - Оптимизация - Рекомендации по стилю - Внедрение''' |
'''В деталях [[/Скрипты REBOL 3/]] - Файловый суффикс - Структура - Заголовки - Аргументы - Опции программы - Выполнение - Загрузка - Сохранение - Хранилище данных - Комментарии - Оптимизация - Рекомендации по стилю - Внедрение''' |
||
=== Выражения === |
=== Выражения === |
||
Строка 34: | Строка 34: | ||
"Внешние" квадратные скобки подразумеваются для скриптов, выражений командной строки и в сообщениях, посылаемых между компьютерами. Они являются блоками по умолчанию. |
"Внешние" квадратные скобки подразумеваются для скриптов, выражений командной строки и в сообщениях, посылаемых между компьютерами. Они являются блоками по умолчанию. |
||
'''В деталях [[Выражения REBOL 3]] - Блоки - Значения - Развертывание - Слова - Условия - Циклы - Селекция - Прекращение развертывания - Тестирование''' |
'''В деталях [[/Выражения REBOL 3/]] - Блоки - Значения - Развертывание - Слова - Условия - Циклы - Селекция - Прекращение развертывания - Тестирование''' |
||
=== Серии === |
=== Серии === |
||
Строка 41: | Строка 41: | ||
Серия это частично упорядоченная последовательность значений. Эти значения могут быть символами строки или значениями, находящимися в блок серии. Любые типы серий есть просто строки и блоки. |
Серия это частично упорядоченная последовательность значений. Эти значения могут быть символами строки или значениями, находящимися в блок серии. Любые типы серий есть просто строки и блоки. |
||
'''В деталях [[Серии REBOL 3]] - Прохождение - Функции - Типы данных - Информация - Создание и копирование - Итерация - Поиск - Сортировка - Множество данных - Умножение переменных - Модификация параметров''' |
'''В деталях [[/Серии REBOL 3/]] - Прохождение - Функции - Типы данных - Информация - Создание и копирование - Итерация - Поиск - Сортировка - Множество данных - Умножение переменных - Модификация параметров''' |
||
=== Блоки === |
=== Блоки === |
||
Строка 48: | Строка 48: | ||
Блоки используются для одновременного содержания в текстах кода и данных. Очень важно знать как манипулировать с блоками. |
Блоки используются для одновременного содержания в текстах кода и данных. Очень важно знать как манипулировать с блоками. |
||
'''В деталях [[Блоки REBOL 3]] - Блоки блоков - Пути для гнездовых блоков - Массивы - Композиция - Строка функций - Конвертация значений в строке''' |
'''В деталях [[/Блоки REBOL 3/]] - Блоки блоков - Пути для гнездовых блоков - Массивы - Композиция - Строка функций - Конвертация значений в строке''' |
||
=== Файлы === |
=== Файлы === |
||
Строка 55: | Строка 55: | ||
REBOL обеспечивает широкий набор функций, предназначенных для операций систематизации, начиная от простого чтения файла до прямого доступа к файлам и директориям (См. "Порты"). |
REBOL обеспечивает широкий набор функций, предназначенных для операций систематизации, начиная от простого чтения файла до прямого доступа к файлам и директориям (См. "Порты"). |
||
'''В деталях [[Файлы REBOL 3]] - Имена и пути - Чтение - Запись - Линейная конверсия - Блоки линий - Информация - Директории''' |
'''В деталях [[/Файлы REBOL 3/]] - Имена и пути - Чтение - Запись - Линейная конверсия - Блоки линий - Информация - Директории''' |
||
=== Функции === |
=== Функции === |
||
Строка 66: | Строка 66: | ||
* '''Routine''' - функции для вызова внешних библиотек функций (командные возможности) |
* '''Routine''' - функции для вызова внешних библиотек функций (командные возможности) |
||
'''В деталях [[Функции REBOL 3]] - Развертывание - Определение - Гнезда - Безымянные - Условные - Аттрибуты - Параметры - Раннее связывание - Видимость переменных - Онлайн помощь - Рекурсия - Просмотр кода''' |
'''В деталях [[/Функции REBOL 3/]] - Развертывание - Определение - Гнезда - Безымянные - Условные - Аттрибуты - Параметры - Раннее связывание - Видимость переменных - Онлайн помощь - Рекурсия - Просмотр кода''' |
||
=== Объекты === |
=== Объекты === |
||
Строка 76: | Строка 76: | ||
Они позволяют связанные данные и код инкапсулировать и обрабатывать как простое значение в функциях. |
Они позволяют связанные данные и код инкапсулировать и обрабатывать как простое значение в функциях. |
||
'''В деталях [[Объекты REBOL 3]] - Создание - Клонирование - Доступ - Функции - Прототипы - Обращение к себе - Инкапсуляция - Рефлексивные свойства''' |
'''В деталях [[/Объекты REBOL 3/]] - Создание - Клонирование - Доступ - Функции - Прототипы - Обращение к себе - Инкапсуляция - Рефлексивные свойства''' |
||
=== Модули === |
=== Модули === |
||
Строка 87: | Строка 87: | ||
Они изолированы в их собственном специальном контексте (очень просто для объекта!). |
Они изолированы в их собственном специальном контексте (очень просто для объекта!). |
||
'''В деталях [[Модули REBOL 3]] - Загрузка - Определение - Специальные замечания |
'''В деталях [[/Модули REBOL 3/]] - Загрузка - Определение - Специальные замечания |
||
=== Графика === |
=== Графика === |
||
Строка 102: | Строка 102: | ||
=== Диалект GUI === |
=== Диалект GUI === |
||
'''В деталях [[GUI REBOL 3]] - Основные идеи и понятия''' |
'''В деталях [[/GUI REBOL 3/]] - Основные идеи и понятия''' |
||
=== Порты === |
=== Порты === |
||
Строка 121: | Строка 121: | ||
* '''No-wait''' - порт не будет ждать данные |
* '''No-wait''' - порт не будет ждать данные |
||
'''В деталях [[Порты REBOL 3]] - Открытие - Закрытие - Чтение из порта - Запись в порт - Обновление - Ожидание - Другие моды - Файловые полномочия - Порты директории''' |
'''В деталях [[/Порты REBOL 3/]] - Открытие - Закрытие - Чтение из порта - Запись в порт - Обновление - Ожидание - Другие моды - Файловые полномочия - Порты директории''' |
||
=== Протоколы === |
=== Протоколы === |
||
Строка 141: | Строка 141: | ||
* '''UDP''' - пользовательский протокол обмена данными (пакетная передача) |
* '''UDP''' - пользовательский протокол обмена данными (пакетная передача) |
||
'''В деталях [[Протоколы REBOL 3]] - REBOL сетевой базис - Инициализация установки''' |
'''В деталях [[/Протоколы REBOL 3/]] - REBOL сетевой базис - Инициализация установки''' |
||
=== Парсинг === |
=== Парсинг === |
||
Строка 156: | Строка 156: | ||
* '''/case''' - строка основанная на переключателе (когда параметр не специфицирован, то верхний и нижний переключатели обрабатываются одинаково). |
* '''/case''' - строка основанная на переключателе (когда параметр не специфицирован, то верхний и нижний переключатели обрабатываются одинаково). |
||
'''В деталях [[Парсинг REBOL 3]] - Анализ блоков и диалектов - Развертывание - Приведение типов - Правила рекурсии - Грамматические правила - Простое разложение - Нейтрализация ввода - Пробелы - Общие операции''' |
'''В деталях [[/Парсинг REBOL 3/]] - Анализ блоков и диалектов - Развертывание - Приведение типов - Правила рекурсии - Грамматические правила - Простое разложение - Нейтрализация ввода - Пробелы - Общие операции''' |
||
=== Математика === |
=== Математика === |
||
Строка 164: | Строка 164: | ||
Некоторые из таких типов данных могут даже смешиваться или приводиться. |
Некоторые из таких типов данных могут даже смешиваться или приводиться. |
||
'''В деталях [[Математика REBOL 3]] - Скалярные типы данных - Порядок вычислений - Стандартные функции и операторы - Типовая конверсия - Функции сравнения - Логарифмические функции - Тригонометрические функции - Логические функции - Ошибки''' |
'''В деталях [[/Математика REBOL 3/]] - Скалярные типы данных - Порядок вычислений - Стандартные функции и операторы - Типовая конверсия - Функции сравнения - Логарифмические функции - Тригонометрические функции - Логические функции - Ошибки''' |
||
=== Ошибки === |
=== Ошибки === |
||
Строка 175: | Строка 175: | ||
Ошибки могут возникать в функциях, возвращаться из них и объявляться переменными. |
Ошибки могут возникать в функциях, возвращаться из них и объявляться переменными. |
||
'''В деталях [[Ошибки REBOL 3]] - Категории - Обнаружение - Объект - Генерация''' |
'''В деталях [[/Ошибки REBOL 3/]] - Категории - Обнаружение - Объект - Генерация''' |
||
== Быстрый старт == |
== Быстрый старт == |
Версия от 13:24, 28 мая 2015
История проекта
См. REBOL
Основные концепции языка
Тексты
В русскоязычной литературе есть понятие "скриптов", переведенное со scripts, которое и используют разработчики языка. Но у слова script существует и редко используемое значение в смысле "текст". Скорее всего будет правильным понимать и говорить, и так и так. Разработчики, в принципе, не различают код и данные. В REBOL script может быть программой или данными. Причем под программой понимается "эволютный код" (evaluated code), что также можно толковать более определенно, как процесс "развертывания" переменных в значения. Но не будет преступлением привычно понимать под этим: вычисление, исполнение, выполнение или даже определение. Впрочем, сам язык, составляющий основу технологии REBOL, ее ядро - контекстно-зависимый, как и подобает быть "настоящему человеческому" языку. И это позволяет назвать его метаязыком. Кстати, все остальное, что над ядром, являются его диалектами (dialects). Да и само ядро можно называть как языком, так и операционной системой внешнего типа w:ru:Экзоядро. Но говорится, все-таки, о текстах, прежде всего, как о продуктах языка, а к ним относятся:
- файлы REBOL
- внедренные тексты в другие типы файлов (типа web-страницы)
- источники ресурсов в сообщениях между системами
- фрагменты текстов, такие как в документах.
В деталях Скрипты REBOL 3 - Файловый суффикс - Структура - Заголовки - Аргументы - Опции программы - Выполнение - Загрузка - Сохранение - Хранилище данных - Комментарии - Оптимизация - Рекомендации по стилю - Внедрение
Выражения
Естественно, что в основе текстов лежат выражения (expressions), которые, в свою очередь, просто слова (words), разделяющиеся друг от друга пробелом и сгруппированные квадратными скобками в блоки (blocks). Слова есть "относительные выражения", поскольку в различных контекстах могут иметь разный смысл. Выражения обрабатываются прямо REBOL интерпретатором или косвенно скриптом. REBOL выражения основаны на концепции комбинирования значений и слов в блоки. "Внешние" квадратные скобки подразумеваются для скриптов, выражений командной строки и в сообщениях, посылаемых между компьютерами. Они являются блоками по умолчанию.
В деталях Выражения REBOL 3 - Блоки - Значения - Развертывание - Слова - Условия - Циклы - Селекция - Прекращение развертывания - Тестирование
Серии
Концепция series является фундаментальной в REBOL. Серия это частично упорядоченная последовательность значений. Эти значения могут быть символами строки или значениями, находящимися в блок серии. Любые типы серий есть просто строки и блоки.
В деталях Серии REBOL 3 - Прохождение - Функции - Типы данных - Информация - Создание и копирование - Итерация - Поиск - Сортировка - Множество данных - Умножение переменных - Модификация параметров
Блоки
Из предыдущих замечаний следует и значимость концепции блоков (blocks). Блоки используются для одновременного содержания в текстах кода и данных. Очень важно знать как манипулировать с блоками.
В деталях Блоки REBOL 3 - Блоки блоков - Пути для гнездовых блоков - Массивы - Композиция - Строка функций - Конвертация значений в строке
Файлы
Важный аспект REBOL - мощная манипуляция с файлами и директориями. REBOL обеспечивает широкий набор функций, предназначенных для операций систематизации, начиная от простого чтения файла до прямого доступа к файлам и директориям (См. "Порты").
В деталях Файлы REBOL 3 - Имена и пути - Чтение - Запись - Линейная конверсия - Блоки линий - Информация - Директории
Функции
REBOL обеспечивает функциями разного рода:
- Native - функции, которые вычисляются прямо процессором (функции нижнего уровня языка).
- Function - функции высокого уровня, определенные с помощью блока и вычисляемые развертыванием функций в блоке, также называемые user-defined функции
- Mezzanine - имя для функций высокого уровня, которые являются стандартной частью языка, но они не "нативные"
- Operator - функции, которые используются как "инфиксные" операторы
- Routine - функции для вызова внешних библиотек функций (командные возможности)
В деталях Функции REBOL 3 - Развертывание - Определение - Гнезда - Безымянные - Условные - Аттрибуты - Параметры - Раннее связывание - Видимость переменных - Онлайн помощь - Рекурсия - Просмотр кода
Объекты
REBOL поддерживает концепцию уникальности для объектов. Объекты группируют значения в общий контекст. Они могут включать скалярные значения, серии, функции и другие объекты. Объекты используются, чтобы иметь дело со сложными структурами. Они позволяют связанные данные и код инкапсулировать и обрабатывать как простое значение в функциях.
В деталях Объекты REBOL 3 - Создание - Клонирование - Доступ - Функции - Прототипы - Обращение к себе - Инкапсуляция - Рефлексивные свойства
Модули
Один из главных принципов REBOL - простота. Смысл REBOL проектирования, чтобы программам, в основном, не требовалось загрузка внешних модулей, библиотек или включенных файлов. Почти все важные возможности и функции включены по умолчанию. Однако когда программа получается большой или требует много специальных возможностей, тогда полезно разделить программу на маленькие куски - модули.
Модули это только файлы и блоки, которые по умолчанию имеют собственное пространство имен!
Переменные, объявленные в модуле, даже верхнего уровня, не будут пересекаться с системными переменными или с переменными в других модулях. Они изолированы в их собственном специальном контексте (очень просто для объекта!).
В деталях Модули REBOL 3 - Загрузка - Определение - Специальные замечания
Графика
Графика подразделяется на несколько категорий (подсистемы):
- GUI - пользовательский графический интерфейс, слой высокого уровня, облегчающий генерацию и предоставление пользовательского интерфейса
- View - оконная система, которая открывает окна и обрабатывает события (высокий уровень) и может использоваться с GUI или напрямую
- GOB - графические 2D объекты нижнего уровня. использующиеся для генерации, композиции и предоставления графики
- Events - обработчик событий (как двигается мышка, кнопочные клики и нажатие ключей клавиатуры)
- Draw - методы специальной скалярно-векторной графики (такие как линии, прямоугольники и другие специальные фигуры и изображения)
- Richtext - текст-система (фонты и все прочее, связанное с обработкой текстов)
- Effects - специальный обработчик изображений типа окрашивания, масштабирования и смешивания отображений.
Диалект GUI
В деталях GUI REBOL 3 - Основные идеи и понятия
Порты
Порты имеют доступ к внешним сериям, таким как файлы, сети, консоли, события, базы данных, кодеки и декодеры. Данные порта обрабатываются использованием стандартных функций для серий. Порты используются для ввода и вывода. Тип данных порта зависит от того, как порт открыт. Возможны три типа данных:
- String - серия байтов, конвертируется по умолчанию с переносом линии
- Binary - серия байтов без преобразования данных
- Block - серия REBOL значений
Порт может быть открыт одним из двух промежуточных способов:
- Buffered - данные удерживаются в памяти (по умолчанию)
- Direct - данные не запоминаются
Наконец, порт может быть открыт с:
- Wait - порт будет ожидать данные (по умолчанию)
- No-wait - порт не будет ждать данные
В деталях Порты REBOL 3 - Открытие - Закрытие - Чтение из порта - Запись в порт - Обновление - Ожидание - Другие моды - Файловые полномочия - Порты директории
Протоколы
REBOL включает несколько встроенных в него важных служебных интернет протоколов, которые легко использовать в ваших скриптах. Они не требуют внешних библиотек или включаемых файлов. Много полезных операций, которые можно делать только одной командной строкой. Поддерживаемые протоколы:
- DNS - служба доменных имен (переводит имена компьютеров в адреса и адреса в имена)
- Finger - получает информацию о пользователях из их профайла
- Whois - получает информацию о зарегистрированных доменах
- Daytime - сетевой протокол времени, получает время сервера
- HTTP - гипертекстовый транспортный протокол, используемый для Web
- SMTP - простой почтовый транспортный протокол для отсылки почты
- POP - почтовый официальный протокол для обработки почты
- FTP - протокол обмена файлами для обмена файлами с сервером
- NNTP - сетевой протокол для обмена новостями (передача и чтение пользовательских новостей)
- TCP - базисный интернет протокол
- UDP - пользовательский протокол обмена данными (пакетная передача)
В деталях Протоколы REBOL 3 - REBOL сетевой базис - Инициализация установки
Парсинг
Парсинг расщепляет последовательность символов или значений на маленькие части. Это может использоваться для распознавания символов или значений, расположенных в определенном порядке. Наконец, чтобы обеспечить мощный, читабельный и в основном обрабатывающий паттерны регулярных выражений процесс, парсинг позволяет вам создавать собственные языки для специальных целей. Функция-анализатор имеет общий вид:
parse series rules
Аргумент ввода, который требуется анализировать может быть строкой или блоком и соответственно анализируются символы или значения. Аргумент rules (правила) специфицирует каким образом анализировать и может быть строкой для простого типичного анализа или блоком для сложного. Функция также имеет два параметра:
- /all - анализировать все символы в строке, включая "разделители", такие как пробелы, табуляция, новая линия, запятая и двоеточие
- /case - строка основанная на переключателе (когда параметр не специфицирован, то верхний и нижний переключатели обрабатываются одинаково).
В деталях Парсинг REBOL 3 - Анализ блоков и диалектов - Развертывание - Приведение типов - Правила рекурсии - Грамматические правила - Простое разложение - Нейтрализация ввода - Пробелы - Общие операции
Математика
REBOL обеспечивает всестороннее множество математических и тригонометрических операций. Многие из этих операторов могут обрабатывать множество типов данных, включая целые, десятичные, валюту, картеж, время и дату. Некоторые из таких типов данных могут даже смешиваться или приводиться.
В деталях Математика REBOL 3 - Скалярные типы данных - Порядок вычислений - Стандартные функции и операторы - Типовая конверсия - Функции сравнения - Логарифмические функции - Тригонометрические функции - Логические функции - Ошибки
Ошибки
Ошибка это исключение, которое происходит, когда нарушены определенные правила. Условно можно синтаксические ошибки в файлах отделить от ошибок доступа к сети. Ошибки обрабатываются в системе как значения типа данных error!. Ошибка - это объект, который если происходит развертывание, то выдаст сообщение и прервет его. Вы можете также перехватить ошибку и подставить свой скрипт. Ошибки могут возникать в функциях, возвращаться из них и объявляться переменными.
В деталях Ошибки REBOL 3 - Категории - Обнаружение - Объект - Генерация