Кольцо (язык программирования)
![]() | |
Парадигма | Мультипарадигмальность : объектно-ориентированное , императивное , функциональное , процедурное , рефлексивное , декларативное , программирование на естественном языке. |
---|---|
Разработано | Махмуд Самир Файед [1] |
Разработчик | Команда разработчиков Ring |
Впервые появился | 25 января 2016 г |
Стабильная версия | 1.20 [2] ![]() |
Дисциплина набора текста | Динамический |
Язык реализации | С |
ТЫ | Windows , Linux и MacOS |
Лицензия | МОЯ лицензия |
Расширения имен файлов | .ring, .rh, .rform |
Веб-сайт | http://ring-lang.net |
Под влиянием | |
Lua , Python , Ruby , C , C# , BASIC , QML , xBase , Supernova | |
Под влиянием | |
SimpleLang, [3] ДраконЛанг [4] | |
|
Ring — это типизированный динамически язык программирования общего назначения . Его можно встраивать в проекты C/C++, расширять с помощью кода C/C++ или использовать как отдельный язык. [5] Поддерживаемые парадигмы программирования : императивное , процедурное , объектно-ориентированное , функциональное , мета , декларативное с использованием вложенных структур и естественное программирование . [6] [7] Язык портативный ( Windows , Linux , macOS , Android , [8] Веб-сборка , [9] и т. д.) [10] и может использоваться для создания консольных , графических , веб- , игровых и мобильных приложений . [11] [12] [13] [14]
История [ править ]

В 2009 году Махмуд Самир Файед создал второстепенный предметно-ориентированный язык под названием Supernova, который фокусируется на создании пользовательского интерфейса (UI) и использует некоторые идеи, связанные с программированием на естественном языке . Затем он осознал необходимость нового языка общего назначения , который может повысить продуктивность создания естественного языка. Цель Ring — предложить язык, призванный помочь разработчику создавать естественные интерфейсы и декларативные DSL. [15] [16] [17] [18]
Цели [ править ]

- Язык программирования приложений.
- Производительность и разработка высококачественных решений, которые можно масштабировать.
- Маленький и гибкий язык, который можно встраивать в проекты C/C++.
- Простой язык, который можно использовать в обучении и ознакомлении с концепциями компилятора/VM.
- Язык общего назначения, который можно использовать для создания специализированных библиотек, фреймворков и инструментов.
- Практичный язык, предназначенный для создания следующей версии программного обеспечения «Программирование без технологии кодирования» . [21]
Примеры [ править ]




Программа «Привет, мир» [ править ]
Одна и та же программа может быть написана с использованием разных стилей. Вот пример стандартного «Hello, World!» программу, используя четыре разных стиля.
Первый стиль:
see "Hello, World!"
Второй стиль:
put "Hello, World!"
Третий стиль:
print("Hello, World!")
Другой стиль: похож на xBase языки , такие как Clipper и Visual FoxPro.
? "Hello, World!"
Измените ключевые слова и операторы [ править ]
Ring языка поддерживает изменение ключевых слов и операторов .
Это можно сделать много раз в одном и том же исходном файле, и это полезно для
- Перевод ключевых слов с английского на другие человеческие языки ( языки программирования, не основанные на английском языке )
- Настройка языка для использования любимого стиля
- Портирование устаревшего кода, написанного на других языках.
Перевести ключевые слова Ring на японский язык
ChangeRingKeyword See 手紙を出す ChangeRingOperator + そして 改行 = nl します。 = :します。 手紙を出す "こんにちは、世界" そして 改行 します。 ChangeRingKeyword 手紙を出す See // キーワードの復旧 ChangeRingOperator そして + // 演算子の復旧
Перевести ключевые слова Ring на арабский
ChangeRingKeyword See إطبع إطبع "Hello, World!" ChangeRingKeyword إطبع See
Используйте стиль, похожий на язык программирования Pascal.
ChangeRingKeyword func function
ChangeRingKeyword see write
begin = :begin
function main
begin
write("Hello, World!");
return 0;
end
ChangeRingKeyword function func
ChangeRingKeyword write see
Команда цикла [ править ]
Команда Loop может принимать целое число, чтобы применить семантику продолжения к внешним циклам. [25]
changeRingKeyword loop continue count = 2 for x in 1:5 for y = 1 to 2 if x = 3 ? "About to execute 'loop', count = " + count continue count ok ? "x: " + x + ", y: " + y next next
Объектно-ориентированное программирование [ править ]
Ring поддерживает объектно-ориентированное программирование (классы, объекты, композиция, наследование, инкапсуляция и т. д.). [26]
new point { # Create new object from the Point class the access the object using braces x=10 y=20 z=30 # Set the object attributes print() # Call the print() method } # end of object access using braces class point # Define the class x y z # Define the attributes (x,y,z) func print # Define the print() method ? x + nl + y + nl + z # Print the attributes values (nl means printing a new line)
Классы In Ring можно определить во время выполнения с помощью функции Eval(). [27]
? "Creating a new class dynamically..." eval("class DynamicClass a b") ? "Printing the instance..." ? new DynamicClass {a=1 b=2}
Реализация [ править ]
Компилятор и виртуальная машина [ править ]


Программы Ring не интерпретируются напрямую из текстового файла Ring, а компилируются в байт-код , который затем запускается на виртуальной машине Ring . Процесс компиляции обычно невидим для пользователя и выполняется во время выполнения , но его можно выполнять в автономном режиме, чтобы повысить производительность загрузки или уменьшить объем памяти, занимаемой средой хоста, исключив компилятор.
Компилятор после и виртуальная машина разрабатываются с использованием визуального программирования с помощью программного обеспечения «Программирование без технологии кодирования», чего C. генерируется код
Расширения [ править ]



Ниже приведены расширения, которые можно использовать сразу после установки полной установочной версии (размер файла около 280 МБ для Ring 1.12). Поскольку они официально предоставляются и поддерживаются на стороне Ring, пользователей не беспокоят зависимости библиотек, которые могут вызвать проблемы на других языках, и есть опасения, что их нельзя будет использовать внезапно, даже если произойдут деструктивные изменения в спецификации языка.
Расширения реализованы примерно в 500 000 строк кода C и C++ .
- RingAllegro ( Библиотека игр Allegro )
- RingConsoleColor (библиотека раскраски текста для командной строки или терминала )
- RingCurl ( библиотека CURL )
- КольцоFreeGLUT ( FreeGLUT )
- RingInternet (интернет-библиотека)
- RingLibUV ( LibUV-библиотека асинхронного ввода-вывода )
- RingMurMurHash ( библиотека хеш-функций )
- RingMySQL ( MySQL )
- RingODBC ( подключение к открытой базе данных )
- RingOpenGL ( OpenGL 1.1-4.6)
- КольцоOpenSSL ( OpenSSL )
- RingPostgreSQL ( PostgreSQL )
- RingQt ( фреймворк Qt )
- RingRayLib ( raylib )
- RingSDL ( SDL-простая библиотека слоев DirectMedia )
- RingSQLite ( SQLite )
- RingWinAPI ( Windows API )
- RingWinCREG ( Реестр Windows )
- RingZIP ( библиотека обработки zip-файлов )
Библиотеки [ править ]
Ring поставляется с библиотеками, написанными на самом Ring, например, библиотеками, связанными с веб-разработкой и разработкой игр.
Название библиотеки | Описание |
---|---|
Стандартная библиотека | Общие классы и функции. |
Библиотека графического интерфейса | Классы и функции для создания приложений с графическим интерфейсом. |
Библиотека объектов | Классы и функции для создания приложений с графическим интерфейсом с использованием шаблона проектирования MVC. |
Веб-библиотека | Простая платформа для разработки веб-приложений с использованием шаблона проектирования MVC. |
Игровой движок | Поддержка разработки 2D-игр для настольных компьютеров и мобильных устройств с использованием декларативного программирования на основе Allegro и LibSDL. |
Природная библиотека | Библиотека программирования общего назначения на естественном языке. |
Библиотека трассировки | Библиотека для отладки приложений. |
Тип Подсказки | Библиотека для добавления подсказок типов к функциям. |
Большая библиотека чисел | Поддержка арифметических операций с огромными числами. |
Библиотека Фокс-Ринг | Содержит функции, аналогичные Visual FoxPro. |
Библиотека Зеролиб | Содержит классы, индекс которых начинается с 0, а не с 1. |
Приложения [ править ]


Ring распространяется с более чем 60 приложениями, написанными на этом языке.
Некоторые из этих приложений
- «Аналоговые часы» Приложение
- Приложение-калькулятор
- в шашки Игра
- Шахматная игра
- головоломка «Пятнадцать» 3D-игра-
- Игра 2048
- Рыцарский тур Игра
- Сапер Игра
- Отелло Игра
- Сокобан Игра
- Судоку
- Крестики-нолики 3D игра
- «Видео-музыкальный проигрыватель» Приложение
- запуска Windows» Приложение «Диспетчер
Инструменты [ править ]

Ring распространяется со стандартной IDE, которая включает в себя следующие инструменты:
- Ring REPL ( цикл чтения-оценки-печати )
- Ring2EXE ( Распространение исполняемых приложений )
- Ring RingPM ( Менеджер пакетов )
- Ring Notepad ( редактор исходного кода )
- Дизайнер форм ( дизайнер WYSIWYG GUI )
Ring также распространяется с расширениями для многих редакторов кода, таких как Emacs , Notepad++ , Geany , Atom , Sublime Text 2 и Visual Studio Code .
Документация [ править ]
Ring распространяется вместе с документацией, написанной с использованием Sphinx . Также доступен японский перевод документации. [33]
Прием [ править ]
Популярность [ править ]
Популярность Ring быстро росла и падала, согласно индексу сообщества программистов TIOBE . В феврале 2018 года Ринг впервые ворвался в топ-50 (45-я позиция). [34] По состоянию на октябрь 2020 года Ring занимает 93-е место в индексе TIOBE. [35] Ring включен GitHub в список активно разрабатываемых языков программирования. [36]
Критика [ править ]
Критики Ring указали на некоторые особенности Ring, которые не распространены в широко используемых языках программирования. [37]
- Индекс списка начинается с 1 вместо 0 (см. Нумерация с нуля ).
- Неявные преобразования типов (см.: Неявные преобразования типов и «каламбур типов» ).
Индекс списка начинается с 1 вместо 0 [ править ]
В Ring индекс первого элемента в списках и первого символа в строках равен 1.
cName = "Ring" ? cName[1] # print R aList = ["One","Two","Three"] ? aList[1] # print One
Неявное преобразование типов [ править ]
Язык может автоматически преобразовывать числа и строки. [38]
/* ** Rules: ** <NUMBER> + <STRING> --> <NUMBER> ** <STRING> + <NUMBER> --> <STRING> */ x = 10 # x is a number y = "20" # y is a string nSum = x + y # nSum is a number (y will be converted to a number) cMsg = "Sum = " + nSum # cMsg is a string (nSum will be converted to a string)
См. также [ править ]
Ссылки [ править ]
- ^ М. Аюни (29 июля 2020 г.). «Диалог с Махмудом Файедом» (PDF) . Спрингер .
- ^ «Выпущено 1.20» . 11 апреля 2024 г. Проверено 12 апреля 2024 г.
- ^ Азиз Адевале. «Простой язык программирования» .
- ^ Аавеш Джилани. «Язык программирования Дракон» .
- ^ Доктор Рангараджан Кришнамурти (7 августа 2021 г.). «Первое знакомство с кольцевым языком программирования» . rangakrish.com. Архивировано из оригинала 9 августа 2021 г.
- ^ Омар Селим (январь 2018 г.). «Обзор языка программирования Ring» (PDF) . Журнал БИМАрабия. Архивировано из оригинала 17 ноября 2023 г. Проверено 24 марта 2024 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Ахмед Тартур (январь 2020 г.). «Ваш путь к программированию (Арабская книга, страницы 56-57) поговорим о Ring» (PDF) . Котобна .
- ^ Бернхард Лауэр (14 августа 2018 г.). «Кольцо: гибкое, простое, быстрое» . Дотнетпро .
- ^ Пол Крилл (24 августа 2020 г.). «Обновление языка звонков ориентировано на WebAssembly» . Инфомир .
- ^ Ганем, Мохамед (2021). Разработка программного обеспечения Poet с использованием языка Ring (PDF) . MetaBook (Египет – Мансура). ISBN 978-977-6928-38-1 .
- ^ Начало кольцевого программирования – от новичка до профессионала | Мансур Аюни | Апресс .
- ^ Хани Салах (11 января 2016 г.). «Ринг: новый язык программирования» . youm7.com . ты7 .
- ^ Ахмед Мохаммед Хасан. «Кольцо: язык программирования, разработанный арабом» . muslims-res.com . Проверено 28 сентября 2020 г.
- ^ Абедалла Салехани. «Книга о языке программирования Ring» . muslims-res.com . Проверено 28 сентября 2020 г.
- ^ Команда Ринг (сентябрь 2021 г.). «Язык звонка — часто задаваемые вопросы (FAQ)» . Команда Ринг.
- ^ Файед (апрель 2010 г.). «Язык программирования Supernova» . Код проекта .
- ^ Омния (декабрь 2011 г.). «Сверхновой язык египетского программиста» . Юм7 .
- ^ Команда Softpedia (23 октября 2021 г.). «Обзор Кольца 1.16» . Софтпедия .
- ^ Навин Верма (14 августа 2018 г.). «Кольцевой язык программирования: что вам нужно знать?» . Середина .
- ^ Монес Хавас (29 мая 2018 г.). «Прогресс в разработке PWCT 2.0 с использованием Ring» . youm7.com . ты7 .
- ^ Файед, Махмуд С.; Аль-Куриши, Мухаммед; Аламри, Атиф; Хоссейн, М. Анвар; Аль-Дарайсе, Ахмад А. (октябрь 2020 г.). «PWCT: новый язык визуального программирования общего назначения для поддержки повсеместной разработки приложений». Транзакции CCF для всеобъемлющих вычислений и взаимодействия . 2 (3): 164–177. дои : 10.1007/s42486-020-00038-y . S2CID 225395711 .
- ^ Рубин Лю (28 декабря 2017 г.). «Различные стили написания программы Hello World на языке программирования Ring» . codeproject.com . Код проекта .
- ^ Рошан Али (4 июня 2018 г.). «Учебник по кольцевому программированию» . Ютуб .
- ^ «Начало работы — третий стиль — документация по Ring 1.19» .
- ^ Доктор Рангараджан Кришнамурти (21 августа 2021 г.). « Команда «Loop» в кольцевом языке программирования» . rangakrish.com. Архивировано из оригинала 23 марта 2023 г.
- ^ «Объектно-ориентированное программирование (ООП) — документация по Ring 1.16» .
- ^ Доктор Рангараджан Кришнамурти (4 сентября 2021 г.). «Кольцевой язык: динамическое поведение классов и объектов» . rangakrish.com. Архивировано из оригинала 29 мая 2023 г.
- ^ Мажди Собейн (2 мая 2017 г.). «Головоломка с квадратами с использованием RingAllegro» . codeproject.com . Код проекта .
- ^ Файед (11 августа 2017 г.). «Использование библиотеки программирования на естественном языке (NLPL) в кольцевом языке программирования» . codeproject.com . Код проекта .
- ^ Файед (12 октября 2016 г.). «Программирование на естественном языке на кольцевом языке программирования» . codeproject.com . Код проекта .
- ^ Разработчики с открытым исходным кодом (15 июня 2019 г.). «Приложения, написанные в Ring» . Команда Ринг.
- ^ Компания Эткан (25 сентября 2018 г.). «Игра Gold Magic 800 от компании Etqan» . Steam (программное обеспечение) .
- ^ «Добро пожаловать в руководство по эксплуатации Ring! — Руководство по использованию языка программирования Ring 1.16» . Архивировано из оригинала 30 октября 2021 г. Проверено 30 октября 2021 г. .
- ^ «Индекс TIOBE | TIOBE — компания по обеспечению качества программного обеспечения» . www.tiobe.com . Архивировано из оригинала 21 февраля 2018 года . Проверено 28 февраля 2022 г.
- ^ Эмма Уайт (6 октября 2020 г.). «100 лучших языков программирования» . БайресДев . Проверено 6 октября 2020 г.
- ^ «Создавайте программное обеспечение лучше вместе» . Гитхаб .
- ^ Циклум (12 декабря 2017 г.). «Новые языки программирования – шумиха или реальность?» . ciklum.com . Циклум . Архивировано из оригинала 7 декабря 2017 года . Проверено 1 февраля 2024 г.
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ «Переменные — документация Ring 1.16» .
Дальнейшее чтение [ править ]
- Ганем (2021 г.) Разработка программного обеспечения Poet с использованием языка Ring (арабская книга) , MetaBook (Египет – Мансура)
- Аюни (2020) Начало кольцевого программирования , Apress (часть Springer Nature)
- Академия Хассуна (2019) Основы ринга (арабская книга) , Академия Хассуна
- Sobain (2017) Документация по расширению RingWinCReg , SourceForge
- Файед (2016) Кольцевой язык программирования , CodeProject
Внешние ссылки [ править ]

- Языки программирования
- Кроссплатформенное бесплатное программное обеспечение
- Языки программирования, созданные в 2016 году.
- Языки программирования высокого уровня
- программное обеспечение 2016 года
- Динамически типизированные языки программирования
- Египетские изобретения
- Бесплатные программные проекты
- Программное обеспечение, использующее лицензию MIT
- Бесплатное программное обеспечение, написанное на C.
- Мультипарадигмальные языки программирования
- Языки программирования с расширяемым синтаксисом