Ring — динамически типизированный язык программирования общего назначения . Его можно встраивать в проекты C/C++, расширять с помощью кода C/C++ и/или использовать как отдельный язык. [6] Поддерживаемые парадигмы программирования : императивное , процедурное , объектно-ориентированное , функциональное , мета , декларативное с использованием вложенных структур и естественное программирование . [7] [8] Язык является переносимым ( Windows , Linux , macOS , Android ,[9] WebAssembly , [10] и др.) [11] и может использоваться для создания консольных , графических , веб- , игровых и мобильных приложений . [12] [13] [14] [15]
В 2009 году Файед создал второстепенный предметно-ориентированный язык под названием Supernova, который фокусируется на создании пользовательского интерфейса (UI) и использует некоторые идеи, связанные с программированием на естественном языке . продуктивность создания естественных языков. Ring стремится предложить язык, ориентированный на помощь разработчику в создании естественных интерфейсов и декларативных DSL. [16] [17] [18] [19]
Одна и та же программа может быть написана в разных стилях. Вот пример стандартного "Hello, World!" программа с использованием четырех различных стилей.
Кольцо поддерживает объектно-ориентированное программирование (классы, объекты, композиция, наследование, инкапсуляция и т. д.) [28]
Программы Ring не интерпретируются напрямую из текстового файла Ring, а компилируются в байт -код , который затем запускается на виртуальной машине Ring . Процесс компиляции обычно невидим для пользователя и выполняется во время выполнения , но его можно выполнять в автономном режиме, чтобы повысить производительность загрузки или уменьшить объем памяти среды хоста за счет исключения компилятора.
Компилятор и виртуальная машина разработаны с использованием визуального программирования с помощью программного обеспечения Programming Without Coding Technology , после чего генерируется код C.