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

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Строка 119: Строка 119:
* '''Wait''' - порт будет ожидать данные (по умолчанию)
* '''Wait''' - порт будет ожидать данные (по умолчанию)
* '''No-wait''' - порт не будет ждать данные
* '''No-wait''' - порт не будет ждать данные

==== Открытие ====
'''В деталях [[Порты REBOL 3]] - Открытие - Закрытие - Чтение из порта - Запись в порт - Обновление - Ожидание - Другие моды - Файловые полномочия - Порты директории'''
==== Закрытие ====
==== Чтение из порта ====
==== Запись в порт ====
==== Обновление ====
==== Ожидание ====
==== Другие моды ====
==== Файловые полномочия ====
==== Порты директории ====


=== Протоколы ===
=== Протоколы ===

Версия от 18:23, 26 мая 2009

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

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

Тексты

   В русскоязычной литературе есть понятие "скриптов", переведенное со 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 сетевой базис

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

Парсинг

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

parse series rules

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

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

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

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

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

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

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

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

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

Пробелы

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

Математика

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

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

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

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

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

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

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

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

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

Ошибки

Ошибки

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

Категории

Обнаружение

Объект

Генерация

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