Jump to content

Кольцо (язык программирования)

Кольцо
Парадигма Мультипарадигмальность : объектно-ориентированное , императивное , функциональное , процедурное , рефлексивное , декларативное , программирование на естественном языке.
Разработано Махмуд Самир Файед [1]
Разработчик Команда разработчиков Ring
Впервые появился 25 января 2016 г .; 8 лет назад ( 25 января 2016 )
Стабильная версия
1.20 [2]  Отредактируйте это в Викиданных / 11 апреля 2024 г .; 2 месяца назад ( 11 апреля 2024 г. )
Дисциплина набора текста Динамический
Язык реализации С
ТЫ 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]

История [ править ]

Ring IDE (Блокнот Ring — Дизайнер форм)

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

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

PWCT 2.0 (Android) — в разработке с использованием Ring

Общие цели Ring: [19] [20]

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

Примеры [ править ]

Различные стили написания исходного кода
Декларативное программирование (веб-разработка)
Программирование на естественном языке
Тестирование производительности управления TreeView с использованием RingQt

Программа «Привет, мир» [ править ]

Одна и та же программа может быть написана с использованием разных стилей. Вот пример стандартного «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

[22] [23] [24]

Команда цикла [ править ]

Команда 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}

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

Компилятор и виртуальная машина [ править ]

Реализация кольцевой виртуальной машины с использованием PWCT — инструкции для виртуальной машины
Реализация кольцевой виртуальной машины с использованием PWCT — структура списка

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

Компилятор после и виртуальная машина разрабатываются с использованием визуального программирования с помощью программного обеспечения «Программирование без технологии кодирования», чего C. генерируется код

Расширения [ править ]

Онлайн-конструктор форм (WebAssembly) — использование RingQt
Реализация Sokoban с использованием Ring Game Engine для 2D-игр
Использование Qt3D через RingQt

Ниже приведены расширения, которые можно использовать сразу после установки полной установочной версии (размер файла около 280 МБ для Ring 1.12). Поскольку они официально предоставляются и поддерживаются на стороне Ring, пользователей не беспокоят зависимости библиотек, которые могут вызвать проблемы на других языках, и есть опасения, что их нельзя будет использовать внезапно, даже если произойдут деструктивные изменения в спецификации языка.

Расширения реализованы примерно в 500 000 строк кода C и C++ .

[28]

Библиотеки [ править ]

Ring поставляется с библиотеками, написанными на самом Ring, например, библиотеками, связанными с веб-разработкой и разработкой игр.

Название библиотеки Описание
Стандартная библиотека Общие классы и функции.
Библиотека графического интерфейса Классы и функции для создания приложений с графическим интерфейсом.
Библиотека объектов Классы и функции для создания приложений с графическим интерфейсом с использованием шаблона проектирования MVC.
Веб-библиотека Простая платформа для разработки веб-приложений с использованием шаблона проектирования MVC.
Игровой движок Поддержка разработки 2D-игр для настольных компьютеров и мобильных устройств с использованием декларативного программирования на основе Allegro и LibSDL.
Природная библиотека Библиотека программирования общего назначения на естественном языке.
Библиотека трассировки Библиотека для отладки приложений.
Тип Подсказки Библиотека для добавления подсказок типов к функциям.
Большая библиотека чисел Поддержка арифметических операций с огромными числами.
Библиотека Фокс-Ринг Содержит функции, аналогичные Visual FoxPro.
Библиотека Зеролиб Содержит классы, индекс которых начинается с 0, а не с 1.

[29] [30]

Приложения [ править ]

Игра Gold Magic 800 — использование RingAllegro и RingOpenGL
Онлайн-игра «Отелло» (WebAssembly) — использование RingQt

Ring распространяется с более чем 60 приложениями, написанными на этом языке.

Некоторые из этих приложений

[31] [32]

Инструменты [ править ]

Запуск игры Тетрис с помощью диспетчера пакетов Ring

Ring распространяется со стандартной IDE, которая включает в себя следующие инструменты:

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 [ править ]

В 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)

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

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

  1. ^ М. Аюни (29 июля 2020 г.). «Диалог с Махмудом Файедом» (PDF) . Спрингер .
  2. ^ «Выпущено 1.20» . 11 апреля 2024 г. Проверено 12 апреля 2024 г.
  3. ^ Азиз Адевале. «Простой язык программирования» .
  4. ^ Аавеш Джилани. «Язык программирования Дракон» .
  5. ^ Доктор Рангараджан Кришнамурти (7 августа 2021 г.). «Первое знакомство с кольцевым языком программирования» . rangakrish.com. Архивировано из оригинала 9 августа 2021 г.
  6. ^ Омар Селим (январь 2018 г.). «Обзор языка программирования Ring» (PDF) . Журнал БИМАрабия. Архивировано из оригинала 17 ноября 2023 г. Проверено 24 марта 2024 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  7. ^ Ахмед Тартур (январь 2020 г.). «Ваш путь к программированию (Арабская книга, страницы 56-57) поговорим о Ring» (PDF) . Котобна .
  8. ^ Бернхард Лауэр (14 августа 2018 г.). «Кольцо: гибкое, простое, быстрое» . Дотнетпро .
  9. ^ Пол Крилл (24 августа 2020 г.). «Обновление языка звонков ориентировано на WebAssembly» . Инфомир .
  10. ^ Ганем, Мохамед (2021). Разработка программного обеспечения Poet с использованием языка Ring (PDF) . MetaBook (Египет – Мансура). ISBN  978-977-6928-38-1 .
  11. ^ Начало кольцевого программирования – от новичка до профессионала | Мансур Аюни | Апресс .
  12. ^ Хани Салах (11 января 2016 г.). «Ринг: новый язык программирования» . youm7.com . ты7 .
  13. ^ Ахмед Мохаммед Хасан. «Кольцо: язык программирования, разработанный арабом» . muslims-res.com . Проверено 28 сентября 2020 г.
  14. ^ Абедалла Салехани. «Книга о языке программирования Ring» . muslims-res.com . Проверено 28 сентября 2020 г.
  15. ^ Команда Ринг (сентябрь 2021 г.). «Язык звонка — часто задаваемые вопросы (FAQ)» . Команда Ринг.
  16. ^ Файед (апрель 2010 г.). «Язык программирования Supernova» . Код проекта .
  17. ^ Омния (декабрь 2011 г.). «Сверхновой язык египетского программиста» . Юм7 .
  18. ^ Команда Softpedia (23 октября 2021 г.). «Обзор Кольца 1.16» . Софтпедия .
  19. ^ Навин Верма (14 августа 2018 г.). «Кольцевой язык программирования: что вам нужно знать?» . Середина .
  20. ^ Монес Хавас (29 мая 2018 г.). «Прогресс в разработке PWCT 2.0 с использованием Ring» . youm7.com . ты7 .
  21. ^ Файед, Махмуд С.; Аль-Куриши, Мухаммед; Аламри, Атиф; Хоссейн, М. Анвар; Аль-Дарайсе, Ахмад А. (октябрь 2020 г.). «PWCT: новый язык визуального программирования общего назначения для поддержки повсеместной разработки приложений». Транзакции CCF для всеобъемлющих вычислений и взаимодействия . 2 (3): 164–177. дои : 10.1007/s42486-020-00038-y . S2CID   225395711 .
  22. ^ Рубин Лю (28 декабря 2017 г.). «Различные стили написания программы Hello World на языке программирования Ring» . codeproject.com . Код проекта .
  23. ^ Рошан Али (4 июня 2018 г.). «Учебник по кольцевому программированию» . Ютуб .
  24. ^ «Начало работы — третий стиль — документация по Ring 1.19» .
  25. ^ Доктор Рангараджан Кришнамурти (21 августа 2021 г.). « Команда «Loop» в кольцевом языке программирования» . rangakrish.com. Архивировано из оригинала 23 марта 2023 г.
  26. ^ «Объектно-ориентированное программирование (ООП) — документация по Ring 1.16» .
  27. ^ Доктор Рангараджан Кришнамурти (4 сентября 2021 г.). «Кольцевой язык: динамическое поведение классов и объектов» . rangakrish.com. Архивировано из оригинала 29 мая 2023 г.
  28. ^ Мажди Собейн (2 мая 2017 г.). «Головоломка с квадратами с использованием RingAllegro» . codeproject.com . Код проекта .
  29. ^ Файед (11 августа 2017 г.). «Использование библиотеки программирования на естественном языке (NLPL) в кольцевом языке программирования» . codeproject.com . Код проекта .
  30. ^ Файед (12 октября 2016 г.). «Программирование на естественном языке на кольцевом языке программирования» . codeproject.com . Код проекта .
  31. ^ Разработчики с открытым исходным кодом (15 июня 2019 г.). «Приложения, написанные в Ring» . Команда Ринг.
  32. ^ Компания Эткан (25 сентября 2018 г.). «Игра Gold Magic 800 от компании Etqan» . Steam (программное обеспечение) .
  33. ^ «Добро пожаловать в руководство по эксплуатации Ring! — Руководство по использованию языка программирования Ring 1.16» . Архивировано из оригинала 30 октября 2021 г. Проверено 30 октября 2021 г. .
  34. ^ «Индекс TIOBE | TIOBE — компания по обеспечению качества программного обеспечения» . www.tiobe.com . Архивировано из оригинала 21 февраля 2018 года . Проверено 28 февраля 2022 г.
  35. ^ Эмма Уайт (6 октября 2020 г.). «100 лучших языков программирования» . БайресДев . Проверено 6 октября 2020 г.
  36. ^ «Создавайте программное обеспечение лучше вместе» . Гитхаб .
  37. ^ Циклум (12 декабря 2017 г.). «Новые языки программирования – шумиха или реальность?» . ciklum.com . Циклум . Архивировано из оригинала 7 декабря 2017 года . Проверено 1 февраля 2024 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  38. ^ «Переменные — документация Ring 1.16» .

Дальнейшее чтение [ править ]

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1a7ba7d436cf23758725fea91c656c0a__1716393360
URL1:https://arc.ask3.ru/arc/aa/1a/0a/1a7ba7d436cf23758725fea91c656c0a.html
Заголовок, (Title) документа по адресу, URL1:
Ring (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)