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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м бот: замена странного кода на шаблон:IPA
 
(не показано 16 промежуточных версий 8 участников)
Строка 1: Строка 1:
{{плохое оформление}}
{{плохое оформление}}
{{Карточка языка программирования
{{Карточка языка программирования
|name = REBOL
| name = REBOL
|logo =
| logo =
|semantics = [[Модуль (программирование)|модульный]], [[Файл|файл-ориентированный]], [[Язык разметки|блочно-структурный]], [[Сокет (программный интерфейс)|порт-протокол]], [[конвертация данных]], [[парсинг]]
| semantics = [[Модуль (программирование)|модульный]], [[Файл|файл-ориентированный]], [[Язык разметки|блочно-структурный]], [[Сокет (программный интерфейс)|порт-протокол]], [[парсинг]]
|paradigm = [[Мультипарадигмальный язык программирования|мульти-концептуальный]], [[Императивный язык программирования|императивный]], [[:en:Dialecting|диалектный]], [[:en:Dynamic programming language|динамический]], [[обмен сообщениями]], [[Аспектно-ориентированное программирование|контекстно-зависимый]], [[Прототипное программирование|объектный]], [[Функциональное программирование|функциональный]], [[Распределённые вычисления|распределённый]], [[Сетевое соединение|сетевой]], [[ML]], [[Предметно-ориентированный язык программирования|DSL]]
| paradigm = [[Мультипарадигмальный язык программирования|мульти-концептуальный]], [[Императивный язык программирования|императивный]], [[:en:Dialecting|диалектный]], [[:en:Dynamic programming language|динамический]], [[обмен сообщениями]], [[Аспектно-ориентированное программирование|контекстно-зависимый]], [[Прототипное программирование|объектный]], [[Функциональное программирование|функциональный]], [[Распределённые вычисления|распределённый]], [[Сетевое соединение|сетевой]], [[ML]], [[Предметно-ориентированный язык программирования|DSL]]
|class = [[интерпретатор]], [[виртуальная машина]]
| class = [[интерпретатор]], [[виртуальная машина]]
|year = [[1997]]
| year = [[1997]]
|designer = [http://www.sassenrath.com/ Карл Сассенрат]
| designer = [http://www.sassenrath.com/ Карл Сассенрат]
|latest_release_version = [http://www.rebol.com/r3/downloads.html февраль 2010]
| latest_release_version = [http://www.rebol.com/r3/downloads.html февраль 2011]
|latest_test_version = [http://www.rebol.com/r3/docs/ REBOL 3]
| latest_test_version = [http://www.rebol.com/r3/docs/ REBOL 3]
|typing = [[Сильная типизация|сильная]], [[Динамическая типизация|динамическая]], [[Транслятор|раннее и позднее связывание]]
| typing = [[Сильная типизация|сильная]], [[Динамическая типизация|динамическая]], [[Транслятор|раннее и позднее связывание]]
|implementations = [[Кроссплатформенность|кросс-платформенный]], [[Экзоядро|внешнее ядро]], [[диалект]]ы, [[плагины]], [[Сервер (программное обеспечение)|сервер]], [[Smart client|смарт-клиент]], [[P2P]], [[Веб-служба|сервисы]], [http://www.rebol.net/wiki/Cookbooks библиотека образцовых скриптов], [http://www.rebol.org/script-index.r библиотека всех скриптов]
| implementations = [[Кроссплатформенность|кросс-платформенный]], [[Экзоядро|внешнее ядро]], [[диалект]]ы, [[плагины]], [[Сервер (программное обеспечение)|сервер]], [[Smart client|смарт-клиент]], [[P2P]], [[Веб-служба|сервисы]], [http://www.rebol.net/wiki/Cookbooks библиотека образцовых скриптов], [http://www.rebol.org/script-index.r библиотека всех скриптов]
|dialects = [http://www.rebol.net/wiki/Draw Draw], [http://www.rebol.net/wiki/Script_Writing_With_The_Visual_Interface_Dialect VID], [http://www.rebol.net/wiki/The_Graphical_User_Interface GUI], [http://www.rebol.net/wiki/Make_GOBs Make-GOB], [http://www.rebol.net/wiki/DOC_Rich_Text_Markup Richtext], [http://www.rebol.net/wiki/Effect Effectt], [http://www.rebol.net/wiki/Words_secure Secure], [http://www.rebol.net/wiki/DevBase DevBase], [http://www.rebol.net/wiki/Rebcode_Overview Rebcode], [http://www.rebol.net/wiki/Parse_Project Parse], [http://www.rebol.net/wiki/Wiki_Tools_Documentation MediaWiki Dialect]
| dialects = [http://www.rebol.net/wiki/Draw Draw], [http://www.rebol.net/wiki/Script_Writing_With_The_Visual_Interface_Dialect VID], [http://www.rebol.net/wiki/The_Graphical_User_Interface GUI], [http://www.rebol.net/wiki/Make_GOBs Make-GOB], [http://www.rebol.net/wiki/DOC_Rich_Text_Markup Richtext], [http://www.rebol.net/wiki/Effect Effectt], [http://www.rebol.net/wiki/Words_secure Secure], [http://www.rebol.net/wiki/DevBase DevBase], [http://www.rebol.net/wiki/Rebcode_Overview Rebcode], [http://www.rebol.net/wiki/Parse_Project Parse], [http://www.rebol.net/wiki/Wiki_Tools_Documentation MediaWiki Dialect]
|influenced_by = [[Fortran]], [[Lisp]], [[Лого (язык программирования)|Лого]], [[Си (язык программирования)|Си]], [[Forth]], [[Prolog]], [[REXX]], [[Smalltalk]], [[Self]], [[Tcl]], [[Lua]], [[Limbo]]
| influenced_by = [[Fortran]], [[Lisp]], [[Лого (язык программирования)|Лого]], [[Си (язык программирования)|Си]], [[Forth]], [[Prolog]], [[REXX]], [[Smalltalk]], [[Self]], [[Tcl]], [[Lua]], [[Limbo]]
}}
}}
'''REBOL''' (произносится как {{IPA|['reb`yell]}}) — контекстно-зависимый объектный [[язык программирования]], созданный специально для [[Распределённые вычисления|распределённых вычислений]] в [[Всемирная паутина|Web]]. Аббревиатура '''REBOL''': Relative Expression Based Object Language.
'''REBOL''' (произносится как {{IPA|['rɛbəl]}} – '''Рэбл''') — контекстно-зависимый объектный [[язык программирования]], созданный специально для [[Распределённые вычисления|распределённых вычислений]] в [[Всемирная паутина|Web]]. Аббревиатура '''REBOL''': Relative Expression Based Object Language.


Автор позиционирует REBOL как язык обмена сообщениями:
Автор позиционирует REBOL как язык обмена сообщениями:
{{Начало цитаты}}
{{Начало цитаты}}
* Сила REBOL состоит в уникальном объединении концепции языка программирования и языка метаданных.
* Сила REBOL состоит в уникальном объединении концепции языка программирования и языка метаданных.
* Основная отличительная черта REBOL — предоставление архитектуры, позволяющей хранить, обмениваться, и преобразовывать информацию между любыми устройствами, соединенными через Internet
* Основная отличительная черта REBOL — предоставление архитектуры, позволяющей хранить, обмениваться, и преобразовывать информацию между любыми устройствами, соединенными через Интернет.
* REBOL обеспечивает создание легковесных предметно-ориентированных под-языков (диалектов) и микроформатов. Это больше, чем язык и скорее маленькая быстрая платформа для Интернет приложений.
* REBOL обеспечивает создание легковесных предметно-ориентированных под-языков (диалектов) и микроформатов. Это больше, чем язык и скорее маленькая быстрая платформа для Интернет приложений.
{{Конец цитаты}}
{{Конец цитаты}}


== История ==
== История ==
[[Сассенрат, Карл|Карл Сассенрат]] ([[:en:Carl Sassenrath|en]]), архитектор («слов и концептов языка») до организации компании [[REBOL Technologies]]<ref>[http://www.rebol.com REBOL Language<!-- Заголовок добавлен ботом -->]</ref> был основным разработчиком [[AmigaOS]]. Ещё раньше он работал в [[Apple|Apple Computer]] и [[Hewlett Packard]], где получил опыт разработки операционных систем, файловой системы и сформулировал собственную концепцию [[микроядро|микроядра]] для компьютерной операционной среды.
{{нп5|Сассенрат, Карл|Карл Сассенрат|en|Carl Sassenrath}}, архитектор («слов и концептов языка») до организации компании [[REBOL Technologies]]<ref>{{Cite web |url=http://www.rebol.com/ |title=REBOL Language<!-- Заголовок добавлен ботом --> |access-date=2009-06-04 |archive-date=2008-11-07 |archive-url=https://web.archive.org/web/20081107235139/http://www.rebol.com/ |deadlink=no }}</ref> был основным разработчиком [[AmigaOS]]. Ещё раньше он работал в [[Apple|Apple Computer]] и [[Hewlett Packard]], где получил опыт разработки операционных систем, файловой системы и сформулировал собственную концепцию [[микроядро|микроядра]] для компьютерной операционной среды.


Начал работать с 13 лет в телевизионной компании, где в 14 был техническим директором ежедневной новостной программы. Закончил [[Калифорнийский университет в Дэвисе]], специализируясь в [[Операционная среда|операционных системах]], [[Параллельные вычислительные системы|параллельных процессах]], языках программирования и [[Нейрофизиология|нейрофизиологии]].
Начал работать с 13 лет в телевизионной компании, где в 14 был техническим директором ежедневной новостной программы. Закончил [[Калифорнийский университет в Дэвисе]], специализируясь в [[Операционная система|операционных системах]], [[Параллельные вычислительные системы|параллельных процессах]], языках программирования и [[Нейрофизиология|нейрофизиологии]].


Его проект сразу стал вызовом, в первую очередь, поставив точку в развитии языков разметки. Но фирма продолжает удивлять своими решениями, взяв курс на выбор сбалансированных концепций программирования и тщательную реализацию. Первый продукт компании — это уже вторая версия языка (1998 год). Сразу же стали возникать модификации ядра с диалектами:
Его проект сразу стал вызовом, в первую очередь, поставив точку в развитии языков разметки. Но фирма продолжает удивлять своими решениями, взяв курс на выбор сбалансированных концепций программирования и тщательную реализацию. Первый продукт компании — это уже вторая версия языка (1998 год). Сразу же стали возникать модификации ядра с диалектами:
Строка 39: Строка 39:
В настоящее время создана и тестируется третья версия.
В настоящее время создана и тестируется третья версия.


12 декабря 2012 г. [[Сассенрат, Карл|Карл Сассенрат]] объявил<ref>[http://www.rebol.com/article/0519.html R3 Source Code Released!]</ref> об открытии исходных текстов REBOL 3 под [[Apache Software License|лицензией Apache]].
12 декабря 2012 г. [[Сассенрат, Карл|Карл Сассенрат]] объявил<ref>{{Cite web |url=http://www.rebol.com/article/0519.html |title=R3 Source Code Released! |access-date=2012-12-13 |archive-date=2012-12-14 |archive-url=https://web.archive.org/web/20121214222129/http://www.rebol.com/article/0519.html |deadlink=no }}</ref> об открытии исходных текстов REBOL 3 под [[Apache Software License|лицензией Apache]].


== Язык ==
== Язык ==
Строка 51: Строка 51:
REBOL является динамическим, и динамически типизированным (значения со строгим контролем типов, переменные — нет). Он использует сборку «мусора» при управлении памятью, поддерживает обработку исключений и динамическое разрешение имен (через вычисленное связывание).
REBOL является динамическим, и динамически типизированным (значения со строгим контролем типов, переменные — нет). Он использует сборку «мусора» при управлении памятью, поддерживает обработку исключений и динамическое разрешение имен (через вычисленное связывание).


И при всем при этом, язык сохраняет статус микросистемы, постоянно наращивая свою функциональную мощь. Так например, его конкурент по поставленным задачам (быть посредником '''X-Internet''' или как сейчас модно говорить [[Web 3.0]]) [[Curl (язык программирования)|curl]] требует в сотни раз больше памяти (!) и, фактически, проиграл в концепции за эффективность, несмотря на участие в нём таких монстров, как бывший глава IBM Instruments Роберт Янг и отец-основатель интернета [[Тим Бернерс-Ли]]<ref>См. [http://www.osp.ru/pcworld/2002/01/162736/ X Internet, или «Яблоко сфинкса]»</ref>.
И при всем при этом, язык сохраняет статус микросистемы, постоянно наращивая свою функциональную мощь. Так например, его конкурент по поставленным задачам (быть посредником '''X-Internet''' или как сейчас модно говорить [[Web 3.0]]) [[Curl (язык программирования)|curl]] требует в сотни раз больше памяти (!) и, фактически, проиграл в концепции за эффективность, несмотря на участие в нём таких монстров, как бывший глава IBM Instruments Роберт Янг и отец-основатель интернета [[Тим Бернерс-Ли]]<ref>См. [http://www.osp.ru/pcworld/2002/01/162736/ X Internet, или «Яблоко сфинкса] {{Wayback|url=http://www.osp.ru/pcworld/2002/01/162736/ |date=20150922022452 }}»</ref>.


=== Определение данных и обмен ===
=== Определение данных и обмен ===
Строка 62: Строка 62:


Как язык данных, REBOL поддерживает строго типизированные значения — около 60 родных типов данных. Как во многих языках программирования, есть основные типы — подобно целым числам, десятичным числам и строкам. REBOL расширяет диапазон типов данных, идентифицируя их лексической формой так, чтобы включать сами значения типа:
Как язык данных, REBOL поддерживает строго типизированные значения — около 60 родных типов данных. Как во многих языках программирования, есть основные типы — подобно целым числам, десятичным числам и строкам. REBOL расширяет диапазон типов данных, идентифицируя их лексической формой так, чтобы включать сами значения типа:
* [[Адрес электронной почты|адресов электронной почты]] (name@host.dom), URL (http://www.rebol.com),
* [[Адрес электронной почты|адресов электронной почты]] (name@host.сom), URL (http://www.rebol.com),
* теги разметки (&lt;b&gt;, &lt; размер шрифта = «2» цвет = «синий»&gt;),
* теги разметки (<nowiki><b></nowiki>, &lt; размер шрифта = «2» цвет = «синий»&gt;),
* денежные единицы (100.00 $, USD$25.25),
* денежные единицы (100.00 $, USD$25.25),
* даты (30-Nov-2005, 1-Dec-2005/10:30-7:00),
* даты (30-Nov-2005, 1-Dec-2005/10:30-7:00),
Строка 78: Строка 78:
'''Исходный код''' REBOL-интерпретатора распространяется свободно и не требует инсталляции. Свободно доступен также REBOL/View. Расширенные версии, такие как REBOL/Pro требуют оплаты лицензии, они добавляют такие возможности как доступ к БД, способность использовать динамически загружаемые библиотеки и возможность создания автономных (выполняемых) программ, для разработчиков (н. п. .exe for Win). В третьей версии планируется открыть весь интерфейс.
'''Исходный код''' REBOL-интерпретатора распространяется свободно и не требует инсталляции. Свободно доступен также REBOL/View. Расширенные версии, такие как REBOL/Pro требуют оплаты лицензии, они добавляют такие возможности как доступ к БД, способность использовать динамически загружаемые библиотеки и возможность создания автономных (выполняемых) программ, для разработчиков (н. п. .exe for Win). В третьей версии планируется открыть весь интерфейс.


'''Среда выполнения''' в настоящее время хранится в единственном исполняемом файле. REBOL/Core, консольная версия, занимает приблизительно '''300 КБ'''. REBOL/View, версия с поддержкой GUI (графического пользовательского интерфейса), имеет размер приблизительно '''600 КБ'''. Прикладные программы, иногда называемые сценариями, что для данного языка не совсем правильно — редко больше, чем несколько килобайтов. Так что Вы можете поместить интерпретатор и исполняемый файл (код) даже на один гибкий диск (даже не говоря об USB-512-й флешке) и послать его по электронной почте, или выполнить непосредственно из Internet.
'''Среда выполнения''' в настоящее время хранится в единственном исполняемом файле. REBOL/Core, консольная версия, занимает приблизительно '''300 КБ'''. REBOL/View, версия с поддержкой GUI (графического пользовательского интерфейса), имеет размер приблизительно '''600 КБ'''. Прикладные программы, иногда называемые сценариями, что для данного языка не совсем правильно — редко больше, чем несколько килобайтов. Так что Вы можете поместить интерпретатор и исполняемый файл (код) даже на один гибкий диск (даже не говоря об USB-512-й флешке) или послать его по электронной почте, или выполнить непосредственно из Интернета.


Среда выполнения включает в себя поддержку многих протоколов Internet, облегчая создание Internet-приложений типа агентов электронной почты или Web-приложений, и вообще клиент-серверных приложений любого масштаба.
Среда выполнения включает в себя поддержку многих протоколов Internet, облегчая создание Internet-приложений типа агентов электронной почты или Web-приложений, и вообще клиент-серверных приложений любого масштаба.
Строка 92: Строка 92:
В консоли Вы просто пишете:
В консоли Вы просто пишете:


<nowiki>print "Hello World!"</nowiki>
print "Hello World!"


Создадим графический интерфейс, независимый от платформы:
Создадим графический интерфейс, независимый от платформы:


<nowiki>REBOL [
REBOL [
Title: "Hello World in a Window"
Title: "Hello World in a Window"
File:%hello-view.r
File:%hello-view.r
Date: 12-January-2002
Date: 12-January-2002
]
]

view layout [
view layout [
text "Hello world!"
text "Hello world!"
button "Quit" [quit]
button "Quit" [quit]
]
]</nowiki>


А здесь элементарная интернет-программа, которая использует [[HTTP]] и [[SMTP]]:
А здесь элементарная интернет-программа, которая использует [[HTTP]] и [[SMTP]]:


<nowiki>REBOL [
REBOL [
Title: "Web Page Emailer"
Title: "Web Page Emailer"
File: %sendwebpage.r
File: %sendwebpage.r
Date: 12-January-2002
Date: 12-January-2002
Purpose: "Get an HTML document from the web and send it through e-mail"
Purpose: "Get an HTML document from the web and send it through e-mail"
]
]

send branko@collin.example read http://www.rebol.com</nowiki>
send branko@collin.example read <nowiki>http://www.rebol.com</nowiki>


Каждая программа на REBOL должна содержать секцию заголовка, которая начинается со слова REBOL, чтобы интерпретатор знал, где начинается код. Заголовок должен обязательно содержать только <code>REBOL []</code>; однако хорошей практикой является подробный заголовок, как в примере выше.
Каждая программа на REBOL должна содержать секцию заголовка, которая начинается со слова REBOL, чтобы интерпретатор знал, где начинается код. Заголовок должен обязательно содержать только <code>REBOL []</code>; однако хорошей практикой является подробный заголовок, как в примере выше.
Строка 126: Строка 126:
== REBOL-подобные языки ==
== REBOL-подобные языки ==


'''ORCA'''<ref>[http://freshmeat.net/projects/rebol-orca/ ORCA REBOL language clone]</ref> — это встраиваемый [[интерпретатор]] REBOL-подобного языка, реализованный в виде библиотеки на языке [[C (язык программирования)|C]], и распространяемый на условиях [[LGPL]]. При компиляции используется интерпретатор REBOL или ORCA.
'''ORCA'''<ref>{{Cite web |url=http://freshmeat.net/projects/rebol-orca/ |title=ORCA REBOL language clone |access-date=2010-02-02 |archive-date=2009-12-07 |archive-url=https://web.archive.org/web/20091207134331/http://freshmeat.net/projects/rebol-orca/ |deadlink=no }}</ref> — это встраиваемый [[интерпретатор]] REBOL-подобного языка, реализованный в виде библиотеки на языке [[C (язык программирования)|C]], и распространяемый на условиях [[LGPL]]. При компиляции используется интерпретатор REBOL или ORCA.


'''Boron'''<ref>[http://urlan.sourceforge.net/boron/ boron]</ref> — ещё один интерпретатор REBOL-подобного языка, написанный на Си. Предназначен для встраивания в приложения. Распространяется на условиях [[GNU General Public License|GPL 3]]
'''Boron'''<ref>{{Cite web |url=http://urlan.sourceforge.net/boron/ |title=boron |access-date=2013-05-26 |archive-date=2013-05-15 |archive-url=https://web.archive.org/web/20130515235230/http://urlan.sourceforge.net/boron/ |deadlink=no }}</ref> — ещё один интерпретатор REBOL-подобного языка, написанный на Си. Предназначен для встраивания в приложения. Распространяется на условиях [[GNU General Public License|GPL 3]].


'''RebGUI'''<ref>[http://www.dobeash.com/rebgui.html RebGUI]</ref> — Альтернатива REBOL/View VID.
'''RebGUI'''<ref>{{Cite web |url=http://www.dobeash.com/rebgui.html |title=RebGUI |access-date=2013-05-26 |archive-date=2013-05-14 |archive-url=https://web.archive.org/web/20130514194542/http://www.dobeash.com/rebgui.html |deadlink=no }}</ref> — Альтернатива REBOL/View VID.


=== Компилятор Red ===
=== Компилятор Red ===
{{main|Red (язык программирования)}}
{{main|Red (язык программирования)}}
В феврале 2011 года на конференции REBOL & Boron в [[Нидерланды|Нидерландах]]<ref>[http://www.red-lang.org/2011/02/journey-begins.html The Journey Begins!], Red Programming Language, 27 февраля 2011 года</ref> французский программист Ненад Ракоцевич (''Nenad Rakocevic'') представил публике альфа версию языка '''Red''', основанного на REBOL<ref>[http://www.red-lang.org/ Red Programming Language]</ref><ref>[http://www.osnews.com/story/24798/New_Red_Programming_Language_Gets_Syllable_Backend New Red Programming Language Gets Syllable Backend], OSNews</ref>. Это достаточно простой и низкоуровневый, расширяемый язык [[системное программирование|системного программирования]], позволяющий определять различные [[Предметно-ориентированный язык программирования|DSL]], предназначенные для применения в широкой области задач. Реализация языка представляет собой [[компилятор]] в [[машинный код]] и распространяется на условиях [[Лицензия BSD|лицензии BSD]]<ref>[https://github.com/dockimbel/Red Red programming language] на [[GitHub]]</ref>. При начальной компиляции использует интерпретатор REBOL. В настоящее время он работает под управлением ОС [[Windows]], [[Linux]] и [[Syllable]]. На начало 2013 года проект Red Programming Language продолжает активно развиваться.
В феврале 2011 года на конференции REBOL & Boron в [[Нидерланды|Нидерландах]]<ref>[http://www.red-lang.org/2011/02/journey-begins.html The Journey Begins!] {{Wayback|url=http://www.red-lang.org/2011/02/journey-begins.html |date=20110709104143 }}, Red Programming Language, 27 февраля 2011 года</ref> французский программист Ненад Ракоцевич (''Nenad Rakocevic'') представил публике альфа версию языка '''Red''', основанного на REBOL<ref>{{Cite web |url=http://www.red-lang.org/ |title=Red Programming Language |access-date=2011-06-22 |archive-date=2011-06-23 |archive-url=https://web.archive.org/web/20110623225532/http://www.red-lang.org/ |deadlink=no }}</ref><ref>[http://www.osnews.com/story/24798/New_Red_Programming_Language_Gets_Syllable_Backend New Red Programming Language Gets Syllable Backend] {{Wayback|url=http://www.osnews.com/story/24798/New_Red_Programming_Language_Gets_Syllable_Backend |date=20110623210933 }}, OSNews</ref>. Это достаточно простой и низкоуровневый, расширяемый язык [[системное программирование|системного программирования]], позволяющий определять различные [[Предметно-ориентированный язык программирования|DSL]], предназначенные для применения в широкой области задач. Реализация языка представляет собой [[компилятор]] в [[машинный код]] и распространяется на условиях [[Лицензия BSD|лицензии BSD]]<ref>[https://github.com/dockimbel/Red Red programming language] на [[GitHub]]</ref>. При начальной компиляции использует интерпретатор REBOL. В настоящее время он работает под управлением ОС [[Windows]], [[Linux]] и [[Syllable]]. На начало 2013 года проект Red Programming Language продолжает активно развиваться.


== Примечания ==
== Примечания ==
Строка 141: Строка 141:
== Ссылки ==
== Ссылки ==
{{Викиучебник}}
{{Викиучебник}}
* [http://www.rebol.com REBOL Technologies] — официальный сайт REBOL
* [http://www.rebol.com REBOL Technologies] {{Wayback|url=http://www.rebol.com/ |date=20081107235139 }} — официальный сайт REBOL
* [http://www.rebol.org REBOL Script Library] — библиотека программ (скриптов) на REBOL
* [http://www.rebol.org REBOL Script Library] {{Wayback|url=http://www.rebol.org/ |date=20090220154344 }} — библиотека программ (скриптов) на REBOL
* [https://web.archive.org/web/20091025140737/http://www.rebol.net/wiki/Main_Page REBOL DocBase] — документация REBOL
* [https://web.archive.org/web/20091025140737/http://www.rebol.net/wiki/Main_Page REBOL DocBase] — документация REBOL
* [https://web.archive.org/web/20070228191223/http://www.rebol.net/blog/carl.html Carl Sassenrath’s REBOL blog] — for developer notes and development plans
* [https://web.archive.org/web/20070228191223/http://www.rebol.net/blog/carl.html Carl Sassenrath’s REBOL blog] — for developer notes and development plans
* [https://github.com/rebol/r3 Репозиторий исходного кода] Rebol3
* [https://github.com/rebol/r3 Репозиторий исходного кода] Rebol3
* [http://babelserver.org/rix RIX — the Rebol IndeXer] — a search engine registering only sites containing the word «rebol»
* [http://babelserver.org/rix RIX — the Rebol IndeXer] {{Wayback|url=http://babelserver.org/rix |date=20060805082911 }} — a search engine registering only sites containing the word «rebol»
* [https://web.archive.org/web/20090221215758/http://rebol.ru/ Сообщество REBOL программистов]  — русскоязычное сообщество
* [https://web.archive.org/web/20090221215758/http://rebol.ru/ Сообщество REBOL программистов]  — русскоязычное сообщество
* [https://web.archive.org/web/20091014163424/http://rebol.in.russia.googlepages.com/home REBOLюция в России] — история упоминаний REBOL на русском языке
* [https://web.archive.org/web/20091014163424/http://rebol.in.russia.googlepages.com/home REBOLюция в России] — история упоминаний REBOL на русском языке
* [http://ru.rebol.wikia.com/wiki/REBOLution_in_RUSSIA REBOLution in Russia Wiki]
* [http://ru.rebol.wikia.com/wiki/REBOLution_in_RUSSIA REBOLution in Russia Wiki] {{Wayback|url=http://ru.rebol.wikia.com/wiki/REBOLution_in_RUSSIA |date=20100726143704 }}
<!--* [http://rebol.org.ua/ REBOL: рабочие материалы] — рабочие материалы и авторские статьи о REBOL-- сайт «расположен на парковой странице сервера компании New Generation Networks.»-->
<!--* [http://rebol.org.ua/ REBOL: рабочие материалы] — рабочие материалы и авторские статьи о REBOL-- сайт «расположен на парковой странице сервера компании New Generation Networks.»-->
* [http://community.livejournal.com/ru_rebol/ REBOLюционная газета] — живой журнал
* [http://community.livejournal.com/ru_rebol/ REBOLюционная газета] {{Wayback|url=http://community.livejournal.com/ru_rebol/ |date=20110312113254 }} — живой журнал
* [https://web.archive.org/web/20081011120940/http://erlang.dmitriid.com/news/item/273 Erlbol: Erlang + REBOL GUI] — эксперимент
* [https://web.archive.org/web/20081011120940/http://erlang.dmitriid.com/news/item/273 Erlbol: Erlang + REBOL GUI] — эксперимент
* [http://tryrebol.esperconsultancy.nl/ tryrebol] — Попробовать REBOL, не загружая (Веб-демонстрация)
* [http://tryrebol.esperconsultancy.nl/ tryrebol] {{Wayback|url=http://tryrebol.esperconsultancy.nl/ |date=20091125153916 }} — Попробовать REBOL, не загружая (Веб-демонстрация)
* [https://archive.is/20130417051041/http://habrahabr.ru/post/133283/ REBOL за 10 шагов] — Перевод на русский статьи [http://www.rebol.com/rebolsteps.html REBOL in Ten Steps], описание основных концепция языка
* [https://archive.today/20130417051041/http://habrahabr.ru/post/133283/ REBOL за 10 шагов] — Перевод на русский статьи [http://www.rebol.com/rebolsteps.html REBOL in Ten Steps] {{Wayback|url=http://www.rebol.com/rebolsteps.html |date=20111126052147 }}, описание основных концепция языка


[[Категория:Скриптовые языки]]
[[Категория:Скриптовые языки]]

Текущая версия от 20:41, 16 апреля 2024

REBOL
Изображение логотипа
Семантика модульный, файл-ориентированный, блочно-структурный, порт-протокол, парсинг
Класс языка мульти-концептуальный, императивный, диалектный, динамический, обмен сообщениями, контекстно-зависимый, объектный, функциональный, распределённый, сетевой, ML, DSL
Тип исполнения интерпретатор, виртуальная машина
Появился в 1997
Автор Карл Сассенрат
Расширение файлов .reb
Выпуск февраль 2011
Тестовая версия REBOL 3
Система типов сильная, динамическая, раннее и позднее связывание
Основные реализации кросс-платформенный, внешнее ядро, диалекты, плагины, сервер, смарт-клиент, P2P, сервисы, библиотека образцовых скриптов, библиотека всех скриптов
Диалекты Draw, VID, GUI, Make-GOB, Richtext, Effectt, Secure, DevBase, Rebcode, Parse, MediaWiki Dialect
Испытал влияние Fortran, Lisp, Лого, Си, Forth, Prolog, REXX, Smalltalk, Self, Tcl, Lua, Limbo
Лицензия Apache License 2.0 и лицензия Apache[1]
Сайт rebol.com (англ.)
rebol.com

REBOL (произносится как ['rɛbəl]Рэбл) — контекстно-зависимый объектный язык программирования, созданный специально для распределённых вычислений в Web. Аббревиатура REBOL: Relative Expression Based Object Language.

Автор позиционирует REBOL как язык обмена сообщениями:

  • Сила REBOL состоит в уникальном объединении концепции языка программирования и языка метаданных.
  • Основная отличительная черта REBOL — предоставление архитектуры, позволяющей хранить, обмениваться, и преобразовывать информацию между любыми устройствами, соединенными через Интернет.
  • REBOL обеспечивает создание легковесных предметно-ориентированных под-языков (диалектов) и микроформатов. Это больше, чем язык и скорее маленькая быстрая платформа для Интернет приложений.

Карл Сассенрат[англ.], архитектор («слов и концептов языка») до организации компании REBOL Technologies[2] был основным разработчиком AmigaOS. Ещё раньше он работал в Apple Computer и Hewlett Packard, где получил опыт разработки операционных систем, файловой системы и сформулировал собственную концепцию микроядра для компьютерной операционной среды.

Начал работать с 13 лет в телевизионной компании, где в 14 был техническим директором ежедневной новостной программы. Закончил Калифорнийский университет в Дэвисе, специализируясь в операционных системах, параллельных процессах, языках программирования и нейрофизиологии.

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

  • REBOL/Core
  • REBOL/View был выпущен в апреле 2001, диалект VID
  • REBOL/Command, добавлены шифрование и доступ БД, был выпущен в сентябре 2000 — для сервера.

Для продвинутых пользователей (разработчиков):

  • REBOL/SDK, предоставлен выбор ядра для сборки, препроцессор, и др. (выпущен в декабре 2002).

Как пример коммерческого продукта:

  • REBOL/IOS, расширяемая среда сотрудничества, основанная на REBOL-технологии. Представляет собой модель виртуального компьютера нового поколения, включенного в Интернет под управлением IOS/Express. (Интернет Операционная Система, 2001 год).

В настоящее время создана и тестируется третья версия.

12 декабря 2012 г. Карл Сассенрат объявил[3] об открытии исходных текстов REBOL 3 под лицензией Apache.

Программирование

[править | править код]

REBOL — это высокоуровневый мета-язык. Основные концепции языка: скрипты (тексты), выражения, серии, блоки, файлы, функции, объекты, модули, порты, протоколы, синтаксический анализ, математика, ошибки, графика нижнего уровня, графические диалекты. Язык прост в понимании, ему можно учить школьников и немедленно начинать программировать. Но, одновременно, он достаточно мощный благодаря своей универсальности, и отдельные приёмы и методологии могут быть предметом глубокого университетского курса.

REBOL разрешает структурное, модульное, функциональное и основанное на прототипах программирование. REBOL — не чистый функциональный язык, однако программирование в командном стиле (императив — это не совсем функция) — поддерживается. Минимальной лексической единицей является слово — просто набор символов. Средствами языка, любому слову может быть приписан весьма разнообразный смысл, который может далеко выходить за рамки понятий базовой среды программирования, в которой используется в основном набор базовых функций (460). Их разрешается связывать тем или иным способом в рамках объектно-ориентированной парадигмы, что позволяет осуществлять, имея различные фиксированные типы данных, поддержку других возможных парадигм программирования, не выходя из контекста, (то есть внутри базового словаря). REBOL особенно хорош для программирования, ориентированного на языки предметной области, что называется ДИАЛЕКТАМИ.

REBOL является динамическим, и динамически типизированным (значения со строгим контролем типов, переменные — нет). Он использует сборку «мусора» при управлении памятью, поддерживает обработку исключений и динамическое разрешение имен (через вычисленное связывание).

И при всем при этом, язык сохраняет статус микросистемы, постоянно наращивая свою функциональную мощь. Так например, его конкурент по поставленным задачам (быть посредником X-Internet или как сейчас модно говорить Web 3.0) curl требует в сотни раз больше памяти (!) и, фактически, проиграл в концепции за эффективность, несмотря на участие в нём таких монстров, как бывший глава IBM Instruments Роберт Янг и отец-основатель интернета Тим Бернерс-Ли[4].

Определение данных и обмен

[править | править код]

Чтобы поддерживать использование языка, как языка обмена данными, REBOL имеет минимальный синтаксис со следующими свойствами:

  • Нет никаких инструкций; выражения — первичный семантический модуль.
  • Нет никаких ключевых слов.
  • Из знаков препинания только пробельные, и [ ] ( ) " { } как разделители.

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

  • адресов электронной почты (name@host.сom), URL (http://www.rebol.com),
  • теги разметки (<b>, < размер шрифта = «2» цвет = «синий»>),
  • денежные единицы (100.00 $, USD$25.25),
  • даты (30-Nov-2005, 1-Dec-2005/10:30-7:00),
  • время (12:00:00),
  • пары координат (5x5),
  • кортежи (255.255.255, 192.168.100.1),
  • фразы (как дела ?).

Эти типы данных используют лексические формы знакомые многим, а не только программистам, чтобы облегчить их использование в качестве языка обмена данными (сообщениями). Основная структура данных в REBOL, используемая для группировки некоторой совокупности значений — это block!, (помещается в квадратных скобках [ ]), который достаточно легко ассоциируется со списками в Лиспе или тегами в языках разметки.

Реализация

[править | править код]

Интерпретатор доступен в нескольких вариантах (/Core, /View, /Command), а также (/Base, /Face и /Pro) — для SDK.

Исходный код REBOL-интерпретатора распространяется свободно и не требует инсталляции. Свободно доступен также REBOL/View. Расширенные версии, такие как REBOL/Pro требуют оплаты лицензии, они добавляют такие возможности как доступ к БД, способность использовать динамически загружаемые библиотеки и возможность создания автономных (выполняемых) программ, для разработчиков (н. п. .exe for Win). В третьей версии планируется открыть весь интерфейс.

Среда выполнения в настоящее время хранится в единственном исполняемом файле. REBOL/Core, консольная версия, занимает приблизительно 300 КБ. REBOL/View, версия с поддержкой GUI (графического пользовательского интерфейса), имеет размер приблизительно 600 КБ. Прикладные программы, иногда называемые сценариями, что для данного языка не совсем правильно — редко больше, чем несколько килобайтов. Так что Вы можете поместить интерпретатор и исполняемый файл (код) даже на один гибкий диск (даже не говоря об USB-512-й флешке) или послать его по электронной почте, или выполнить непосредственно из Интернета.

Среда выполнения включает в себя поддержку многих протоколов Internet, облегчая создание Internet-приложений типа агентов электронной почты или Web-приложений, и вообще клиент-серверных приложений любого масштаба.

REBOL/View обеспечивает независимый от платформы доступ к графическим и звуковым возможностям, включает платформонезависимый инструментарий для работы с окнами, с произвольным, расширяемым набором GUI-стилей. Таким образом, Вы можете создавать распределённые приложения, обладающие графическим интерфейсом пользователя на разных платформах. Использование идеи диалектов Ребола — это эффективное решение для разработки будущих X-Internet приложений.

REBOL сообщество также связано через общий «рабочий стол REBOL» — графическое представление REBOL-файлов, хранимых в Internet, которое получило название «REB-Site». «Рабочий стол REBOL» устанавливается сразу, вместе с REBOL/View интерпретатором, и не требует любого другого браузера для работы. Сам же «рабочий стол REBOL» — это приложение REBOL с открытыми исходными кодами.

Hello World:

В консоли Вы просто пишете:

print "Hello World!"

Создадим графический интерфейс, независимый от платформы:

REBOL [
  Title: "Hello World in a Window"
  File:%hello-view.r
  Date: 12-January-2002
]

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

А здесь элементарная интернет-программа, которая использует HTTP и SMTP:

REBOL [
  Title: "Web Page Emailer"
  File: %sendwebpage.r
  Date:  12-January-2002
  Purpose: "Get an HTML document from the web and send it through e-mail"
]

send branko@collin.example read http://www.rebol.com

Каждая программа на REBOL должна содержать секцию заголовка, которая начинается со слова REBOL, чтобы интерпретатор знал, где начинается код. Заголовок должен обязательно содержать только REBOL []; однако хорошей практикой является подробный заголовок, как в примере выше.

REBOL — контекстно-зависимый язык, который обеспечивает поддержку проблемно-ориентированных подъязыков, названных диалектами. Пример чувствительности контекста REBOL можно проиллюстрировать на слове return. При «нормальном» выполнении, return внутри функции возвращает значение результата её выполнения. В контексте диалекта Visual Interface Dialect (VID) наличие слова return обозначает перевод строки. REBOL-программист может создавать собственные диалекты, многократно используя любое существующее REBOL-слово, связывая с ним различные значения, которые актуальны в контексте этого диалекта, для этой цели в языке имеются мощные (но простые в использовании) средства, помогающие в проектировании диалектов.

REBOL-подобные языки

[править | править код]

ORCA[5] — это встраиваемый интерпретатор REBOL-подобного языка, реализованный в виде библиотеки на языке C, и распространяемый на условиях LGPL. При компиляции используется интерпретатор REBOL или ORCA.

Boron[6] — ещё один интерпретатор REBOL-подобного языка, написанный на Си. Предназначен для встраивания в приложения. Распространяется на условиях GPL 3.

RebGUI[7] — Альтернатива REBOL/View VID.

Компилятор Red

[править | править код]

В феврале 2011 года на конференции REBOL & Boron в Нидерландах[8] французский программист Ненад Ракоцевич (Nenad Rakocevic) представил публике альфа версию языка Red, основанного на REBOL[9][10]. Это достаточно простой и низкоуровневый, расширяемый язык системного программирования, позволяющий определять различные DSL, предназначенные для применения в широкой области задач. Реализация языка представляет собой компилятор в машинный код и распространяется на условиях лицензии BSD[11]. При начальной компиляции использует интерпретатор REBOL. В настоящее время он работает под управлением ОС Windows, Linux и Syllable. На начало 2013 года проект Red Programming Language продолжает активно развиваться.

Примечания

[править | править код]
  1. https://api.github.com/repos/rebol/r3
  2. REBOL Language. Дата обращения: 4 июня 2009. Архивировано 7 ноября 2008 года.
  3. R3 Source Code Released! Дата обращения: 13 декабря 2012. Архивировано 14 декабря 2012 года.
  4. См. X Internet, или «Яблоко сфинкса Архивная копия от 22 сентября 2015 на Wayback Machine»
  5. ORCA REBOL language clone. Дата обращения: 2 февраля 2010. Архивировано 7 декабря 2009 года.
  6. boron. Дата обращения: 26 мая 2013. Архивировано 15 мая 2013 года.
  7. RebGUI. Дата обращения: 26 мая 2013. Архивировано 14 мая 2013 года.
  8. The Journey Begins! Архивная копия от 9 июля 2011 на Wayback Machine, Red Programming Language, 27 февраля 2011 года
  9. Red Programming Language. Дата обращения: 22 июня 2011. Архивировано 23 июня 2011 года.
  10. New Red Programming Language Gets Syllable Backend Архивная копия от 23 июня 2011 на Wayback Machine, OSNews
  11. Red programming language на GitHub