История проекта

править

См. 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 - Категории - Обнаружение - Объект - Генерация

Быстрый старт

править