REBOL 3
История проекта
[править]См. 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 - Категории - Обнаружение - Объект - Генерация