REBOL 3: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Строка 46: Строка 46:
==== Блоки ====
==== Блоки ====
==== Значения ====
==== Значения ====
==== Разворачивание ====
==== Развертывание ====
==== Слова ====
==== Слова ====
==== Условия ====
==== Условия ====
==== Циклы ====
==== Циклы ====
==== Селекция ====
==== Селекция ====
==== Прекращение развертывания ====
==== Остановка разворачивания ====
==== Тестирование ====
==== Тестирование ====



Версия от 17:02, 26 мая 2009

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

Основные концепции

Тексты

   В русскоязычной литературе есть понятие "скриптов", переведенное со scripts, которое и используют разработчики языка. 

Но у слова script существует и редко используемое значение в смысле "текст". Скорее всего будет правильным понимать и говорить, и так и так. Разработчики, в принципе, не различают код и данные. В REBOL script может быть программой или данными. Причем под программой понимается "эволютный код" (evaluated code), что также можно толковать более определенно, как процесс "развертывания" переменных в значения. Но не будет преступлением привычно понимать под этим: вычисление, исполнение, выполнение или даже определение. Впрочем, сам язык, составляющий основу технологии REBOL, ее ядро - контекстно-зависимый, как и подобает быть "настоящему человеческому" языку и что позволяет назвать его метаязыком. Кстати, все остальное, что над ядром, являются его диалектами (dialects). Да и само ядро можно называть как языком, так и операционной системой внешнего типа (Экзоядро http://ru.wikipedia.org/wiki/Экзоядро). Но говорится, все-таки, о текстах, прежде всего, как о продуктах языка, а к ним относятся:

  • файлы REBOL
  • внедренные тексты в другие типы файлов (типа web-страницы)
  • источники ресурсов в сообщениях между системами
  • фрагменты текстов, такие как в документах.

Файловый суффикс

Структура

Заголовки

Аргументы

Опции программы

Исполнение

Загрузка

Сохранение

Хранилище данных

Комментарии

Оптимизация

Рекомендации по стилю

Внедрение

Выражения

Естественно, что в основе текстов лежат выражения (expressions), которые, в свою очередь, просто слова (words), разделяющиеся друг от друга пробелом и сгруппированные квадратными скобками в блоки (blocks). Слова есть "относительные выражения", поскольку в различных контекстах могут иметь разный смысл. Выражения обрабатываются прямо REBOL интерпретатором или косвенно скриптом. REBOL выражения основаны на концепции комбинирования значений и слов в блоки. "Внешние" квадратные скобки подразумеваются для скриптов, выражений командной строки и в сообщениях, посылаемых между компьютерами. Они являются блоками по умолчанию.

Блоки

Значения

Развертывание

Слова

Условия

Циклы

Селекция

Прекращение развертывания

Тестирование

Серии

Концепция series является фундаментальной в REBOL. Серия это частично упорядоченная последовательность значений. Эти значения могут быть символами строки или значениями, находящимися в блок серии. Любые типы серий есть просто строки и блоки.

Прохождение

Функции

Типы данных

Информация

Создание и копирование

Итерация

Поиск

Сортировка

Множество данных

Умножение переменных

Модификация параметров

Блоки

Из предыдущих замечаний следует и значимость концепции блоков (blocks). Блоки используются для одновременного содержания в текстах кода и данных. Очень важно знать как манипулировать с блоками.

Блоки блоков

Пути для гнездовых блоков

Массивы

Композиция блоков

Строка функций

Конвертация значений в строки

Файлы

Важный аспект REBOL - мощная манипуляция с файлами и директориями. REBOL обеспечивает широкий набор функций, предназначенных позволить операции систематизации, начиная от простого чтения файла до прямого доступа к файлам и директориям (См. "Порты").

Имена и пути

Чтение

Запись

Линейная конверсия

Блоки линий

Информация

Директории

Функции

REBOL обеспечивает функциями разного рода:

  • Native - функции, которые вычисляются прямо процессором (функции нижнего уровня языка).
  • Function - функции высокого уровня, определенные с помощью блока и вычисляемые развертыванием функций в блоке, также называемые user-defined функции
  • Mezzanine - имя для функций высокого уровня, которые являются стандартной частью языка, но они не "нативные"
  • Operator - функции, которые используются как "инфиксные" операторы
  • Routine - функции для вызова внешних библиотек функций (командные возможности)

Развертывание

Определение

Гнезда

Безымянные

Условные

Аттрибуты

Параметры

Раннее связывание

Видимость переменных

Онлайн помощь

Рекурсия

Просмотр кода

Объекты

REBOL поддерживает концепцию уникальности для объектов. Объекты группируют значения в общий контекст. Они могут включать скалярные значения, серии, функции и другие объекты. Объекты используются, чтобы иметь дело со сложными структурами. Они позволяют связанные данные и код инкапсулировать и обрабатывать как простое значение в функции.

Создание

Клонирование

Доступ

Функции

Прототипы

Обращение к себе

Инкапсуляция

Рефлексивные свойства

Модули

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

   Модули это только файлы и блоки, которые по умолчанию имеют собственное пространство имен!

Переменные, объявленные в модуле, даже верхнего уровня, не будут пересекаться с системными переменными или с переменными в других модулях. Они изолированы в их собственном специальном контексте (очень просто для объекта!).

Загрузка

Определение

Специальные замечания

Графика

Графика подразделяется на несколько категорий (подсистемы):

  • GUI - пользовательский графический интерфейс, слой высокого уровня, облегчающий генерацию и предоставление пользовательского интерфейса
  • View - оконная система, которая открывает окна и обрабатывает его события (высокий уровень) и может использоваться с GUI или напрямую
  • GOB - графические 2D объекты нижнего уровня. использующиеся для генерации, композиции и предоставления графики
  • Events - обработчик событий (как двигается мышка, кнопочные клики и нажатие ключей клавиатуры)
  • Draw - методы специальной скалярно-векторной графики (такие как линии, прямоугольники и другие специальные фигуры и изображения)
  • Richtext - текст-система (фонты и связанное с обработкой текстов)
  • Effects - специальный обработчик изображений типа окрашивания, масштабирования и смешивания отображений.

Диалект GUI

Основные идеи и понятия

Порты

Порты имеют доступ к внешним сериям, таким как файлы, сети, консоли, события, базы данных, кодеки и декодеры. Данные порта обрабатываются использованием стандартных функций для серий. Порты используются для ввода и вывода. Тип данных порта зависит от того, как порт открыт. Возможны три типа данных:

  • String - серия байтов, конвертируется по умолчанию с переносом линии
  • Binary - серия байтов без преобразования данных
  • Block - серия REBOL значений

Порт может быть открыт одним из двух промежуточных способов:

  • Buffered - данные удерживаются в памяти (по умолчанию)
  • Direct - данные не запоминаются

Наконец, порт может быть открыт с:

  • Wait - порт будет ожидать данные (по умолчанию)
  • No-wait - порт не будет ждать данные

Открытие

Закрытие

Чтение из порта

Запись в порт

Обновление

Ожидание

Другие моды

Файловые полномочия

Порты директории

Протоколы

REBOL включает несколько встроенных в него важных служебных интернет протоколов, которые легко использовать в ваших скриптах. Они не требуют внешних библиотек или включаемых файлов. Много полезных операций, которые можно делать только одной командной строкой. Поддерживаемые протоколы:

  • DNS - служба доменных имен (переводит имена компьютеров в адреса и адреса в имена)
  • Finger - получает информацию о пользователях из их профайла
  • Whois - получает информацию о зарегистрированных доменах
  • Daytime - сетевой протокол времени, получает время сервера
  • HTTP - гипертекстовый транспортный протокол, используемый для Web
  • SMTP - простой почтовый транспортный протокол для отсылки почты
  • POP - почтовый официальный протокол для обработки почты
  • FTP - протокол обмена файлами для обмена файлами с сервером
  • NNTP - сетевой протокол для обмена новостями (передача и чтение пользовательских новостей)
  • TCP - базисный интернет протокол
  • UDP - пользовательский протокол обмена данными (пакетная передача)

REBOL сетевой базис

Инициализация установки

Парсинг

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

parse series rules

Аргумент ввода, который требуется анализировать может быть строкой или блоком и соответственно анализируются символы или значения. Аргумент rules (правила) специфицирует каким образом анализировать и может быть строкой для простого типичного анализа или блоком для сложного. Функция также имеет два параметра:

  • /all - анализировать все символы в строке, включая "разделители", такие как пробелы, табуляция, новая линия, запятая и двоеточие
  • /case - строка основанная на переключателе (когда параметр не специфицирован, то верхний и нижний переключатели обрабатываются одинаково).

Анализ блоков и диалектов

Развертывание

Приведение типов

Правила рекурсии

Грамматические правила

Простое разложение

Нейтрализация ввода

Пробелы

Общие операции

Математика

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

Скалярные типы данных

Порядок вычислений

Стандартные функции и операторы

Типовая конверсия

Функции сравнения

Логарифмические функции

Тригонометрические функции

Логические функции

Ошибки

Ошибки

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

Категории

Обнаружение

Объект

Генерация

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