Кольцо (язык программирования)
![]() | |
Парадигма | Мультипарадигмальность : объектно-ориентированное , императивное , функциональное , процедурное , рефлексивное , декларативное , программирование на естественном языке. |
---|---|
Разработано | Махмуд Самир Файед [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]
История [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Ringlang_shot1.png/300px-Ringlang_shot1.png)
В 2009 году Махмуд Самир Файед создал второстепенный предметно-ориентированный язык под названием Supernova, который фокусируется на создании пользовательского интерфейса (UI) и использует некоторые идеи, связанные с программированием на естественном языке . Затем он осознал необходимость нового языка, который был бы универсальным и мог бы повысить продуктивность создания естественного языка. Цель Ring — предложить язык, призванный помочь разработчику создавать естественные интерфейсы и декларативные DSL. [15] [16] [17] [18]
Цели [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Ringlang_shot6.png/300px-Ringlang_shot6.png)
- Язык программирования приложений.
- Производительность и разработка высококачественных решений, которые можно масштабировать.
- Маленький и гибкий язык, который можно встраивать в проекты C/C++.
- Простой язык, который можно использовать в обучении и ознакомлении с концепциями компилятора/VM.
- Язык общего назначения, который можно использовать для создания специализированных библиотек, фреймворков и инструментов.
- Практичный язык, предназначенный для создания следующей версии программного обеспечения « Программирование без технологии кодирования» . [21]
Примеры [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Ringlang_shot14.png/300px-Ringlang_shot14.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Ringlang_shot5.png/300px-Ringlang_shot5.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/55/Ringlang_shot12.png/300px-Ringlang_shot12.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cb/Ringlang_shot13.png/300px-Ringlang_shot13.png)
Программа «Привет, мир» [ править ]
Одна и та же программа может быть написана в разных стилях. Вот пример стандартного «Hello, World!» программу, используя четыре разных стиля.
Первый стиль:
см. «Привет, мир!»
Второй стиль:
поставьте "Привет, Мир!"
Третий стиль:
print("Привет, мир!")
Другой стиль: похож на xBase языки , такие как Clipper и Visual FoxPro.
? "Привет, мир!"
Измените ключевые слова и операторы [ править ]
Ring языка поддерживает изменение ключевых слов и операторов .
Это можно сделать много раз в одном и том же исходном файле, и это полезно для
- Перевод ключевых слов с английского на другие человеческие языки ( языки программирования, не основанные на английском языке )
- Настройка языка для использования любимого стиля
- Портирование устаревшего кода , написанного на других языках.
Перевести ключевые слова Ring на японский язык
ChangeRingKeyword См. ChangeRingOperator, который выдает букву + и новую строку = nl. Делать. = :Да. Отправьте письмо «Привет, мир» и начните новую строку. ChangeRingKeyword Отправить письмо См. // восстановление ключевого слова ChangeRingOperator и + // восстановление оператора
Перевести ключевые слова Ring на арабский
ChangeRingKeyword См. إطبع Песня «Привет, мир!» ChangeRingKeyword إطبع См.
Используйте стиль, похожий на язык программирования Pascal.
ChangeRingKeyword func function
ChangeRingKeyword см . write
Begin = : Begin
function main
Begin
write ( " Hello , World !" ) ;
вернуть 0 ;
конец
ChangeRingKeyword функции func
ChangeRingKeyword запись см.
Команда цикла [ править ]
Команда Loop может принимать целое число, чтобы применить семантику продолжения к внешним циклам. [25]
Цикл измененияRingKeyword продолжить количество = 2 для х в 1:5 для y = от 1 до 2 если х = 3 ? "Собираюсь выполнить цикл, count = " + count продолжать считать хорошо ? "x:" + x + ", y: " + y следующий следующий
Объектно-ориентированное программирование [ править ]
Ring поддерживает объектно-ориентированное программирование (классы, объекты, композиция, наследование, инкапсуляция и т. д.). [26]
новая точка { # Создайте новый объект из класса Point и получите доступ к объекту с помощью фигурных скобок x=10 y=20 z=30 # Устанавливаем атрибуты объекта print() # Вызов метода print() } # завершение доступа к объекту с помощью фигурных скобок точка класса # Определить класс xyz # Определить атрибуты (x,y,z) func print # Определить метод print() ? x + nl + y + nl + z # Распечатать значения атрибутов (nl означает печать новой строки)
Классы In Ring можно определить во время выполнения с помощью функции Eval(). [27]
? "Динамическое создание нового класса..." eval("класс DynamicClass a b") ? «Печать экземпляра...» ? новый динамическийкласс {a=1 b=2}
Реализация [ править ]
Компилятор и виртуальная машина [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Ringlang_shot10.jpg/300px-Ringlang_shot10.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Ringlang_shot11.jpg/300px-Ringlang_shot11.jpg)
Программы Ring не интерпретируются напрямую из текстового файла Ring, а компилируются в байт -код , который затем запускается на виртуальной машине Ring . Процесс компиляции обычно невидим для пользователя и выполняется во время выполнения , но его можно выполнить в автономном режиме, чтобы повысить производительность загрузки или уменьшить объем памяти, занимаемой средой хоста, исключив компилятор.
Компилятор программного обеспечения « и виртуальная машина разрабатываются с использованием визуального программирования с помощью Программирование без технологии кодирования» , после чего C. генерируется код
Расширения [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Ringlang_shot3.png/300px-Ringlang_shot3.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/73/Ringlang_shot8.png/300px-Ringlang_shot8.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Ringlang_shot9.png/300px-Ringlang_shot9.png)
Ниже приведены расширения, которые можно использовать сразу после установки полной установочной версии (размер файла около 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. |
Приложения [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3b/Ringlang_shot2.png/300px-Ringlang_shot2.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Ringlang_shot4.png/300px-Ringlang_shot4.png)
Ring распространяется с более чем 60 приложениями, написанными на этом языке.
Некоторые из этих приложений
- «Аналоговые часы» Приложение
- Приложение-калькулятор
- в шашки Игра
- Шахматная игра
- -головоломка «Пятнадцать» 3D-игра
- Игра 2048
- Рыцарский тур Игра
- Сапер Игра
- Отелло Игра
- Сокобан Игра
- Судоку
- Крестики-нолики 3D игра
- «Видео-музыкальный проигрыватель» Приложение
- запуска Windows» Приложение «Диспетчер
Инструменты [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1e/Ringlang_shot7.png/300px-Ringlang_shot7.png)
Ring распространяется со стандартной IDE, которая включает в себя следующие инструменты:
- Ring REPL ( цикл чтения-оценки-печати )
- Ring2EXE ( Распространение исполняемых приложений )
- RingPM ( Менеджер пакетов Ring )
- 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 = "Кольцо" ? cName[1] # напечатать R aList = ["Один","Два","Три"] ? aList[1] # напечатайте один
Неявное преобразование типов [ править ]
Язык может автоматически преобразовывать числа и строки. [38]
/* ** Правила: ** <НОМЕР> + <СТРОКА> --> <НОМЕР> ** <СТРОКА> + <НОМЕР> --> <СТРОКА> */ x = 10 # x — число y = "20" # y — строка nSum = x + y # nSum — число (y будет преобразовано в число) cMsg = "Sum = " + nSum # cMsg — строка (nSum будет преобразована в строку)
См. также [ править ]
Ссылки [ править ]
- ^ М. Аюни (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 г.). «Учебник по кольцевому программированию» . YouTube .
- ^ «Начало работы — третий стиль — документация по 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
Внешние ссылки [ править ]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png)
- Языки программирования
- Кроссплатформенное бесплатное программное обеспечение
- Языки программирования, созданные в 2016 году.
- Языки программирования высокого уровня
- программное обеспечение 2016 года
- Динамически типизированные языки программирования
- Египетские изобретения
- Бесплатные программные проекты
- Программное обеспечение, использующее лицензию MIT
- Бесплатное программное обеспечение, написанное на C.
- Мультипарадигмальные языки программирования
- Языки программирования с расширяемым синтаксисом