Jump to content

Ребол

(Перенаправлено с REBOL )

Ребол
Парадигма языково-ориентированное программирование , обмен данными , функциональное , прототипное , императивное
Разработано Карл Сассенрат
Разработчик РЕБОЛ Технологии
Впервые появился 1997 год ; 27 лет назад ( 1997 )
Стабильная версия
2.7.8 / Январь 2011 г .; 13 лет назад ( 2011-01 )
Предварительный выпуск
2.101.0 / декабрь 2012 г .; 11 лет назад ( 2012-12 )
Дисциплина набора текста динамичный , сильный
ТЫ кроссплатформенный
Лицензия 2.7.8 — свободно распространяемое программное обеспечение . [1] 2.101.0 имеет лицензию Apache 2.0. [2]
Расширения имен файлов .р, .реб [3]
Веб-сайт www .rebol
Под влиянием
Я , Форт , Лисп , Логотип [4]
Под влиянием
JSON , [5] Красный

Rebol ( / ˈ r ɛ b əl / REB -əl ; исторически REBOL ) — кроссплатформенный проект. [6] язык обмена данными и многопарадигмальный язык динамического программирования, разработанный Карлом Сассенратом для сетевых коммуникаций и распределенных вычислений . Он представляет концепцию диалектирования : небольшие, оптимизированные , предметно-ориентированные языки для кода и данных. [6] [7] что также является наиболее примечательным свойством языка, по мнению его создателя Карла Сассенрата :

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

Карл Сассенрат [8]

Дуглас Крокфорд , известный своим участием в разработке JavaScript , охарактеризовал Rebol как «более современный язык, но с некоторыми очень похожими на Lisp идеями, поскольку он построен на представлении данных, которые затем выполняются в виде программ» и как одно из . влияний JSON [5]

Первоначально язык и его официальная реализация были проприетарными и с закрытым исходным кодом, разработанными REBOL Technologies. После обсуждения с Лоуренсом Розеном , [9] Интерпретатор Rebol версии 3 был выпущен под лицензией Apache 2.0 12 декабря 2012 г. [10] Старые версии доступны только в двоичной форме, выпуск исходного кода для них не планируется.

Rebol использовался для программирования интернет- приложений (как клиентских , так и серверных ), баз данных приложений , утилит и мультимедийных приложений. [6]

Этимология

[ редактировать ]

Первоначально Rebol был аббревиатурой языка выражений заглавными , основанных на объектах, написанного буквами относительных . [6] [8] Чтобы соответствовать современным тенденциям в именовании языков, например, заменой исторического названия LISP на Lisp , программисты прекратили практику написания REBOL заглавными буквами. В конце концов Сассенрат вынес вопрос об названии на обсуждение сообщества в своем блоге. [11] В последующем написании Сассенрат принял соглашение о написании названия языка как Rebol . [12]

Впервые выпущенный в 1997 году, Rebol разрабатывался в течение 20 лет Карлом Сассенратом, архитектором и основным разработчиком AmigaOS , на основе его исследования денотационной семантики и использования концепций языков программирования Lisp , Forth , Logo и Self .

  1. REBOL Technologies была основана в 1998 году.
  2. REBOL 2 , интерпретатор, ставший основой расширенных редакций интерпретатора, был впервые выпущен в 1999 году.
    1. REBOL/Command , в который добавлено надежное шифрование и доступ ODBC , был выпущен в сентябре 2000 года.
    2. REBOL/View был выпущен в апреле 2001 года и добавил графические возможности в основной язык.
    3. REBOL/IOS , расширяемая среда для совместной работы, созданная с помощью REBOL, была выпущена в августе 2001 года.
    4. REBOL/SDK , предоставляющий выбор ядер для привязки, а также препроцессор, был выпущен в декабре 2002 года.
  3. Rebol 3 [R3], новейшая версия интерпретатора , имела альфа-версии, выпущенные REBOL Technologies с января 2008 года. С момента ее выпуска как проекта Apache 2 в декабре 2012 года она разрабатывается сообществом Rebol. [13]

Простота использования

[ редактировать ]

Один из принципов дизайна Rebol — «делать простые вещи простыми способами». [6] В следующем примере диалект визуального интерфейса используется для описания простой программы Hello world с графическим пользовательским интерфейсом:

view layout [text "Hello world!" button "Quit" [quit]]

Вот как аналогичный пример выглядит в R3-GUI:

view [text "Hello world!" button "Quit" on-action [quit]]

Пример R3-GUI Привет, мир

Диалекты

[ редактировать ]

Rebol Языки, специфичные для предметной области , называемые диалектами , представляют собой микроязыки, оптимизированные для определенной цели. Диалекты можно использовать для определения бизнес-правил, графических пользовательских интерфейсов или последовательности экранов во время установки программы. Пользователи могут определять свои собственные диалекты, повторно используя любое существующее слово Rebol и придавая ему определенное значение в этом диалекте. [6] Диалекты интерпретируются функциями, обрабатывающими блоки Rebol (или анализирующими строки) определенным образом.

Пример диалектных способностей Ребола можно увидеть на примере слова return. На диалекте обмена данными return это просто слово, не имеющее какого-либо конкретного значения. На до диалекте return глобальная переменная, ссылающаяся на встроенную функцию, передающую обратно значение результата функции. [4] В диалекте визуального интерфейса (VID ) return — это ключевое слово, заставляющее механизм компоновки имитировать возврат каретки , перемещая «перо рендеринга» вниз к началу следующей строки. [7]

Переводчик Rebol с графическими способностями должен понимать и интерпретировать многие диалекты. В таблице ниже перечислены наиболее важные из них в порядке значимости.

Название диалекта Интерпретировано Цель
Диалект обмена данными load функция представляет данные и метаданные; общая платформа для диалектов Ребола
Делать диалект do функция программирование
Разбор диалекта parse функция сопоставление с образцом
Диалект спецификации функции make функция функции определение ; функциональное программирование
Диалект спецификации объекта make функция объекта определение/наследование ; программирование на основе прототипов
Диалект визуального интерфейса (ВИД)
или
РебГИП
layout функция
или
display функция
определяет графический интерфейс пользователя
Рисовать диалект view функция определяет графические элементы (линии, полигоны и т. д.)
Диалект спецификации сценария do функция определение сценария
Диалект политики безопасности secure функция определяет политику безопасности

Синтаксис

[ редактировать ]

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

Синтаксические свойства разных диалектов могут различаться. Общей платформой для всех диалектов Ребола является диалект обмена данными ; от него обычно происходят другие диалекты. Помимо того, что диалект обмена данными является общей платформой для всех диалектов, он напрямую используется для представления данных и метаданных, заполнения структур данных, отправки данных через Интернет и сохранения их в хранилище данных.

В отличие от языков программирования, таких как C , диалект обмена данными не состоит из объявлений , операторов , выражений или ключевых слов. Действительный диалекта обмена данными текстовый поток — это древовидная структура данных , состоящая из блоков (корневой блок неявный, подблоки разделены круглыми квадратными скобками ), круглых скобок (ограниченных скобками ), строк (ограниченных двойными кавычками или фигурными скобками, подходящими для нескольких -строчные строки; обозначение курсора для непечатаемых символов используется ), URL-адреса , адреса электронной почты, файлы, пути или другие составные значения . В отличие от ALGOL блоков , блоки Rebol представляют собой составные значения, аналогичные s-выражениям в кавычках в Lisp . Тот факт, что код написан в виде блоков Rebol, делает язык гомоиконичным . [4]

Блоки, а также круглые скобки могут содержать другие составные значения (блок может содержать подблоки, круглые скобки, строки и т. д.) или скалярные значения, такие как слова, заданные слова (слова с суффиксом двоеточия ) , get-слова (слова с префиксом двоеточие), лит-слова (слова с префиксом апострофа ) , цифры, деньги, символы и т. д., разделенные пробелом . В словах допускаются специальные символы, поэтому a+b это слово, отличное от a + b, который представляет собой последовательность из трех слов, разделенных пробелами.

Комментарии могут появляться после точки с запятой до конца строки. Многострочные комментарии или комментарии, не игнорируемые лексическим анализатором, могут быть написаны с использованием «обычных» типов данных, таких как многострочные строки. [4]

Семантика

[ редактировать ]

Блоки, содержащие язык, специфичный для предметной области, могут быть переданы в качестве аргументов конкретным функциям оценки . [6]

Наиболее часто используемым оценщиком является do функция. По умолчанию он используется для интерпретации ввода текста в консоль переводчика .

Диалект до, интерпретируемый do Функция — это ориентированный на выражение подъязык диалекта обмена данными . Основной семантической единицей языка является выражение . В отличие от императивных языков программирования, произошедших от АЛГОЛА , диалект do не имеет ни ключевых слов, ни операторов.

Слова используются как регистронезависимые переменные . Как и во всех динамически типизированных языках , переменные не имеют связанного типа, тип связан со значениями. Результат, т.е. оценка слова, возвращается, когда слово встречается do функция. можно использовать словарную форму слова Для присваивания . Не имея операторов, присваивание вместе с функциями с побочными эффектами может использоваться для императивного программирования . [4]

Подблоки корневого блока оценивают сами себя. Это свойство используется для обработки блоков данных в структурированном программировании путем отправки блоков в качестве аргументов для управления , таких как функций if, either, loopи т. д., а также для диалектирования, когда блок передается определенной функции интерпретатора. [6]

Стоит отметить особую проблему: составные значения, присвоенные переменным, не копируются. Чтобы сделать копию, значение должно быть передано в copy функция. [4]

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

abs -2 + 3

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

2 + 3 * 4

возвращает 20, тогда как оценка, отдающая приоритет умножению, даст 14. Все операторы имеют версии префикса. Do обычно оценивает аргументы перед передачей их функции. Итак, выражение ниже:

сначала читает страницу Rebol в Википедии, а затем передает результат в print функция. Круглые скобки можно использовать для изменения порядка вычислений. Используя префиксную запись , можно избежать использования круглых скобок в выражениях. [4]

Простые правила приоритета являются преимуществом:

  • Нет необходимости «консультироваться» с таблицами приоритета при написании выражений.
  • Нет необходимости переписывать таблицы приоритетов при определении нового оператора.
  • Выражения можно легко транслитерировать из инфиксной записи в префиксную и наоборот.

а также недостаток:

  • Пользователи, привыкшие к более традиционным правилам приоритета, могут легко допустить ошибку. [6]

анализировать

[ редактировать ]

The parse Функция предпочтительно используется для определения, проверки, преобразования и интерпретации диалектов. Это достигается путем сопоставления выражений синтаксического анализа во время выполнения. [6]

Выражения синтаксического анализа записываются на диалекте синтаксического анализа , который, как и диалект do , является подъязыком, ориентированным на выражения, диалекта обмена данными . В отличие от диалекта do , диалект синтаксического анализа использует ключевые слова, представляющие операторы и наиболее важные нетерминалы , операторы инфиксного синтаксического анализа не имеют префиксных эквивалентов и используют правила приоритета ( последовательность имеет более высокий приоритет, чем выбор ). [6]

Также могут быть включены действия, которые необходимо предпринять в процессе синтаксического анализа, а также parse Функция может использоваться для обработки блоков или строк. На разбора строк уровне parse должен обрабатывать синтаксический анализ «низкого уровня», принимая во внимание символы и разделители. Анализ блоков — это более высокий уровень, обрабатывающий сканирование на уровне значений Rebol. [6]

Диалект синтаксического анализа принадлежит к семейству грамматик, представленных языком синтаксического анализа сверху вниз или грамматикой выражений синтаксического анализа (PEG). Основное сходство — наличие операторов последовательности и выбора , которые есть у всех членов семьи. Синтаксис диалекта синтаксического анализа и сходство между диалектом синтаксического анализа и PEG иллюстрируются этой транслитерацией примера PEG , который анализирует арифметическое выражение:

Digit: charset [#"0" - #"9"]
Value: [some Digit | "(" Expr ")"]
Product: [Value any [["*"| "/"] Value]]
Sum: [Product any [["+"| "-"] Product]]
Expr: Sum
parse/all "12+13" Expr

Реализации

[ редактировать ]

Официальная реализация Rebol 2.7.8 доступна в нескольких редакциях ( /Core , /View , /Command , /SDK и /IOS ). Редакции /Core и /View являются свободно распространяемым программным обеспечением . [1]

Среда выполнения хранится в одном исполняемом файле. Rebol/Core Размер консольной версии Rebol/View 2.7.8, версии с графическим пользовательским интерфейсом 2.7.8 составляет около 300 КБ, а размер , составляет около 650 КБ.

Rebol/View обеспечивает независимый от платформы доступ к графике и звуку, а также поставляется с собственным набором оконных инструментов и расширяемым набором стилей ( виджеты графического интерфейса ). Расширенные выпуски, такие как Rebol/Command 2.7.8 или Rebol/SDK 2.7.8, требуют платной лицензии; они добавляют такие функции, как доступ к данным ODBC и возможность создавать автономные исполняемые файлы. [ нужна ссылка ]

Наследие

[ редактировать ]
  • Rebol был назван Дугласом Крокфордом одним из вдохновителей нотации объектов JavaScript . [5]
  • Rebol вдохновил проект Orca с открытым исходным кодом, который представляет собой интерпретируемый язык, подобный Rebol. [14]
  • Boron — это интерпретируемый гомоиконный язык, вдохновленный Rebol и похожий на него, который предназначен для встраивания языков, специфичных для предметной области. Он реализован как библиотека C, лицензируемая на условиях LGPLv3.
  • Язык программирования Red был напрямую вдохновлен Rebol, однако варианты реализации Red были специально ориентированы на преодоление его предполагаемых ограничений. [15]

См. также

[ редактировать ]
  1. ^ Jump up to: а б РЕБОЛ Технологии. REBOL/View и REBOL/Core 2.7.8. Лицензия
  2. ^ Исходный код R3 на GitHub.
  3. ^ «Блог Карла REBOL — давайте перейдем на суффикс .reb» . Rebol.com. 18 августа 2013 года . Проверено 23 января 2014 г.
  4. ^ Jump up to: а б с д и ж г Гольдман Э., Блэнтон Дж. (2000). REBOL: Официальное руководство. Макгроу-Хилл Осборн Медиа. ISBN   0-07-212279-X .
  5. ^ Jump up to: а б с Крокфорд, Дуглас . The JSON Saga , jsonsaga.ppt. Архивировано из оригинала 4 октября 2012 г. на Wayback Machine.
  6. ^ Jump up to: а б с д и ж г час я дж к л Робертс, Ральф (2000). РЕБОЛ для чайников. Голодные умы. ISBN   0-7645-0745-1 .
  7. ^ Jump up to: а б Оверло, Оливье (2001). Программирование Rebol. Эйроль. ISBN   2-212-11017-0 .
  8. ^ Jump up to: а б Сассенрат, Карл (1 июля 2000 г.). «Внутри скриптового языка REBOL» . Журнал доктора Добба .
  9. ^ «REBOL станет открытым исходным кодом» . Rebol.com. 25 сентября 2012 года . Проверено 23 января 2014 г.
  10. ^ Сассенрат, Карл (12 декабря 2012 г.). «Комментарии: опубликован исходный код R3!» . Проверено 14 августа 2014 г. Вы, наверное, думали, что релиз исходного кода никогда не состоится? Я прав? Ну, теперь он есть на github по адресу github.com/rebol/rebol.
  11. ^ «Вызов РЕБОЛ Ребол?» . 14 декабря 2012. Архивировано из оригинала 3 декабря 2013 года . Проверено 2 декабря 2013 г.
  12. ^ Сассенрат, Карл. «Кросс-компиляция Rebol для вашей любимой встроенной платы» . Проверено 16 сентября 2016 г.
  13. ^ «Исходный код интерпретатора Rebol» . ребол/ребол GitHub . Проверено 14 марта 2017 г.
  14. ^ Проект rebol-orca в Freecode
  15. ^ Проект Red на GitHub.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cac0d88aaa14e5b14ae919ad8500efbb__1701953040
URL1:https://arc.ask3.ru/arc/aa/ca/bb/cac0d88aaa14e5b14ae919ad8500efbb.html
Заголовок, (Title) документа по адресу, URL1:
Rebol - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)