==History==
[[File:Ringlang shot1.png|thumb|300px|Ring IDE (Ring Notepad - Form Designer)]]
In 2009, [[Mahmoud Samir Fayed|Fayed]] created a minor [[___domain-specific language]] called Supernova that focusfocuses on [[User interface|User interface (UI)]] creation and uses some ideas related to [[Natural-language programming|Natural Language Programming]], then he realized the need for a new language that areis [[General-purpose language|general-purpose]] and can increase the [[productivity]] of creating natural languageslanguage creation. Ring aims to offer a language focused on helping the developer with building natural interfaces and declarative DSLs.<ref name="Supernova1">{{cite web |url=https://ring-lang.github.io/doc1.16/faq.html |title=Ring Language - Frequently Asked Questions (FAQ) |author=Ring Team|date=September 2021 |publisher=Ring Team}}</ref><ref name="Supernova2">{{cite web |url=https://www.codeproject.com/Articles/66996/Supernova-Programming-Language |title=Supernova programming language |author=Fayed|date=April 2010 |publisher=[[Code Project]]}}</ref><ref name="Supernova3">{{cite web |url=https://www.youm7.com/story/2011/12/24/%D8%B4%D8%A7%D8%A8-%D9%85%D8%B5%D8%B1%D9%89-%D9%8A%D8%A8%D8%AA%D9%83%D8%B1-%D8%B3%D9%88%D8%A8%D8%B1-%D9%86%D9%88%D9%81%D8%A7-%D9%88%D8%AA%D9%82%D9%86%D9%8A%D8%A9-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%A8%D8%AF%D9%88%D9%86-%D9%83%D9%88%D8%AF/562415 |title=Supernova language by Egyptian programmer|author=Omnia|date=December 2011 |publisher=[[Youm7]]}}</ref><ref name="Softpedia">{{cite web |url=https://www.softpedia.com/get/Programming/Coding-languages-Compilers/Fayed-Ring.shtml |title=Ring 1.16 review |author= Softpedia Team|date=23 October 2021 |publisher=[[Softpedia]]}}</ref>
* In January 25, 2016, Ring 1.0 was released.
===Change the Keywords and Operators===
'''Ring''' supportsupports changing the language [[Reserved word|keywords]] and [[Operator (computer programming)|operators]].
This could be done many times in the same source file, and is useful for
* Translating the keywords from English to other human languages ([[Non-English-based programming languages]])
* Customizing the language for usinguse theof a favorite style
* Porting [[Legacy code]] written in other languages
===Object Oriented Programming===
Ring supportsupports Object Oriented Programming (Classes, Objects, Composition, Inheritance, Encapsulation, etc.)<ref>{{Cite web|url=https://ring-lang.github.io/doc1.16/oop.html|title = Object Oriented Programming (OOP) — Ring 1.16 documentation}}</ref>
<pre>
</pre>
In Ring weclasses can definebe classesdefined at runtime using the Eval() function<ref name="rangakrish3">{{cite web |url=https://www.rangakrish.com/index.php/2021/09/04/ring-language-dynamic-behavior-of-classes-and-objects/ |title=Ring Language: Dynamic Behavior of Classes and Objects |author= Dr. Rangarajan Krishnamoorthy |date=4 September 2021 |publisher=rangakrish.com}}</ref>
<pre>
[[File:Ringlang shot10.jpg|thumb|300px|Ring VM implementation using PWCT - Virtual Machine Instructions]]
[[File:Ringlang shot11.jpg|thumb|300px|Ring VM implementation using PWCT - List Structure]]
Ring programs are not [[interpreted language|interpreted]] directly from the textual Ring file, but are [[compiler|compiled]] into [[bytecode]], which is then run on the Ring [[virtual machine]]. The compilation process is typically invisible to the user and is performed duringat [[Run time (program lifecycle phase)|run-time]], but it can be done offline in order to increase loading performance or reduce the memory footprint of the host environment by leaving out the compiler.
The [[Compiler]] and the [[Virtual Machine]] are designed using [[Visual programming language|Visual Programming]] through the [[PWCT|Programming Without Coding Technology]] software then the [[C Programming Language|C]] code is generated.
|