Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Red - это язык программирования, разработанный для преодоления ограничений языка программирования Rebol . Red был представлен в 2011 году Ненадом Ракочевичем и является одновременно императивным и функциональным языком программирования . Его синтаксис и общее использование совпадают с синтаксисом интерпретируемого языка Rebol.

Варианты реализации Red предназначены для создания полнофункционального языка программирования: Red может использоваться для программирования чрезвычайно высокого уровня ( DSL и GUI ), а также для программирования низкого уровня ( операционные системы и драйверы устройств ). Ключ к подходу состоит в том, что язык состоит из двух частей: Red / System и Red .

  • Red / System похож на C, но упакован в лексическую структуру Rebol - например, вместо .if x > y [print "Hello"]if (x > y) {printf("Hello\n");}
  • Красный - гомоиконный язык, способный к метапрограммированию, с семантикой, подобной языку Ребола. Библиотека времени выполнения Red написана на Red / System и использует гибридный подход: она компилирует то, что может выводить статически, а в противном случае использует встроенный интерпретатор . Дорожная карта проекта включает своевременный компилятор для промежуточных случаев, но это еще не реализовано.

Red стремится оставаться независимым от любого другого инструментария ; он сам генерирует код. Следовательно, можно кросс-компилировать программы Red с любой платформы, которую он поддерживает, на любую другую с помощью переключателя командной строки. И Red, и Red / System распространяются как программное обеспечение с открытым исходным кодом по модифицированной лицензии BSD . Библиотека времени выполнения распространяется по более разрешительной лицензии на программное обеспечение Boost .

Начиная с версии 0.6.4 Red включает сборщик мусора «Simple GC». [1]

Схема архитектуры Red Language

Введение [ править ]

Красный был представлен в Нидерландах в феврале 2011 года на конференции Rebol & Boron [2] его автором Ненадом Ракочевичем. В сентябре 2011 года язык программирования Red был представлен более широкой аудитории во время Дня свободы программного обеспечения 2011 года. [3] Ракочевич - давний разработчик Rebol, известный как создатель HTTP-сервера Cheyenne . [4]

Особенности [ править ]

Синтаксис и семантика Red очень близки к Rebol . Как и Rebol, он поддерживает метапрограммирование и предметно-ориентированные языки ( DSL) и поэтому является высокоэффективным инструментом для диалектирования (создания встроенных DSL). Red включает диалект Red / System, язык C-уровня, который предоставляет средства системного программирования. Red легко интегрируется с другими инструментами и языками как DLL (libRed) и очень легкий (около 1 МБ). Он также может выполнять кросс-компиляцию для различных платформ (см. Раздел «Кросс-компиляция» ниже) и создавать пакеты для платформ, которым они необходимы (например, .APK на Android). Red также включает полностью реактивную кроссплатформенную систему графического интерфейса пользователя, основанную на базовом движке реактивного потока данных, диалекте 2D-рисования, сопоставимом с SVG, поддержку макросов времени компиляции и выполнения, а также более 40 стандартных типов данных.

Цели [ править ]

Ниже приводится список целей Red, представленных в День свободы программного обеспечения 2011 года:

  • Простота («Для написания кода не требуется IDE»).
  • Компактность («Высокая выразительность увеличивает продуктивность»).
  • Скорость («Если слишком медленно, она не может быть достаточно универсальной».)
  • Будьте «экологичными», занимайте мало места («Потому что ресурсы не безграничны»).
  • Вездесущность («Распространение повсюду»).
  • Переносимость, однократная запись, запускается везде («Этого меньше всего ожидать от языка программирования»).
  • Гибкость («Не лучше, но подходит для любой задачи!»)

Развитие [ править ]

Разработка Red планируется в два этапа:

  1. Начальный этап: компиляторы Red и Red / System написаны на Rebol 2
  2. Фаза начальной загрузки : компиляторы Red и Red / System, дополненные JIT-компилятором Red, все написаны красным

Кросс-компиляция [ править ]

Red в настоящее время поддерживает следующие цели кросс-компиляции:

  • MS-DOS : Windows, x86 , консольные (и графические) приложения
  • Windows : Windows, x86, приложения с графическим интерфейсом
  • Linux : Linux , x86
  • Linux-ARM: Linux , ARMv5 , armel (мягкое плавание)
  • Raspberry Pi : Linux , ARMv5 , armhf (жесткое плавание)
  • FreeBSD : x86
  • Дарвин : OS X Intel, консольные (и графические) приложения
  • Слог : Syllable OS , x86
  • Android : Android, ARMv5
  • Android-x86: Android, x86

(Примечание: этот список будет увеличиваться со временем, поэтому его следует рассматривать как неполный.)

Привет, мир! [ редактировать ]

Красный [ Заголовок:  "Простой скрипт hello world" ] print  "Hello World!"

Факториальный пример [ править ]

ВАЖНО: они предназначены в качестве примеров синтаксиса. Пока Red не будет поддерживать 64-битную версию, целочисленный пример очень быстро переполнит 32-битное целое число. Изменение этого на `float!` Пойдет дальше, но это просто для того, чтобы показать синтаксис языка.

Ниже приведен факториальный пример в красном:

Красный [ Название:  "Факториальный скрипт" ]  ; Примечание. Заголовок указывать необязательно.факториал:  func  [ x  [ целое! ]  ; Указание типа аргумента красным цветом необязательно ] [ либо  x  =  0  [ 1 ] [ x  *  факториал  x  -  1 ] ]

Ниже приведен тот же пример факториала в Red / System (в этом очень простом случае исходный код очень похож на версию Red):

Красный / Системный [ Название:  "Факториальный скрипт" ]факториал:  func  [ x  [ целое! ]  ; Это обязательно для Red / System return:  [ integer! ]  ; Это обязательно в Red / System ] [ либо  x  =  0  [ 1 ] [ x  *  факториал  x  -  1 ] ]

См. Также [ править ]

  • Ребол

Ссылки [ править ]

  1. ^ a b lucindamichele. «0.6.4 Простая консоль GC и Pure Red GUI» . Проверено 16 декабря 2018 . Основная функция 0.6.4 - это то, что мы называем Simple GC (сборщик мусора). В будущем планируется создать более продвинутый сборщик мусора.
  2. ^ «Новый красный язык программирования получает слоговую бэкэнд » , osnews.com , май 2011 г.
  3. ^ «Красный язык программирования: Красный в День свободы программного обеспечения 2011» , red-lang.org , 14 сентября 2011 г.
  4. ^ «Что такое Шайенн? » Последнее упоминание: ноябрь 2017 г.

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Красный язык программирования на GitHub
  • Redprogramming.com
  • красный на GitHub