Content deleted Content added
→History: I see little if any encyclopedic reason for listing every date for every release |
|||
(46 intermediate revisions by 19 users not shown) | |||
Line 1:
{{Short description|Dynamically typed, general-purpose programming language}}
{{infobox programming language
| logo = Ringlogo transparent.png
| paradigm = [[multi-paradigm programming language|Multi-paradigm]]: [[object-oriented programming|object-oriented]], [[imperative programming|imperative]], [[functional programming|functional]], [[procedural programming|procedural]], [[reflective programming|reflective]], [[Declarative programming|declarative]], [[natural language programming]]
| year = {{Start date and age|2016|01|25}}
| designer = [[Mahmoud Samir Fayed]]<ref name="Springer">{{cite web |url=https://link.springer.com/content/pdf/bbm%3A978-1-4842-5833-0%2F1.pdf |title=A Dialogue with Mahmoud Fayed |author= M. Ayouni|date=29 July 2020 |publisher=[[Springer Nature|Springer
| developer = The Ring Development Team
| latest release version = {{wikidata|property|edit|reference|P348}}
Line 13 ⟶ 12:
| typing = [[dynamic typing|Dynamic]]
| influenced_by = [[Lua (programming language)|Lua]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[C (programming language)|C]], [[C Sharp (programming language)|C#]], [[BASIC]], [[QML]], [[xBase]], Supernova
| influenced = SimpleLang,<ref>{{cite web |url=https://web.archive.org/web/20241222002813/https://simple-lang.sourceforge.io/home/ |title=The Simple programming language |author=Azeez Adewale}}</ref> DragonLang <ref>{{cite web |url=https://www.dragon-lang.org/ |title=The Dragon programming language |author= Aavesh Jilani}}</ref>
| programming language = [[C (programming language)|C]]
| operating_system = [[Microsoft Windows|Windows]], [[Linux]] and [[macOS]]
| license = [[MIT License]]
| website =
| file_ext = .ring, .rh, .rform
| wikibooks = Ring
}}
'''Ring''' is a [[dynamic programming language|dynamically typed]], [[general-purpose programming language]]. It can be embedded in C/C++ projects, extended using C/C++ code
==History==
[[File:Ringlang shot1.png|thumb|300px|Ring IDE (Ring Notepad - Form Designer)]]
In 2009, [[Mahmoud Samir Fayed]] created a minor [[___domain-specific language]] called Supernova that focuses 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 is [[General-purpose language|general-purpose]] and can increase the [[productivity]] of natural language 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.
==Goals==
[[File:Ringlang shot6.png|thumb|300px|PWCT 2.0 (Android) - Under development using Ring]]
The general goals behind Ring:<ref name="Medium">{{cite web |url=https://medium.com/sitesonic/ring-programming-language-what-do-you-need-to-know-23c51b315e4d |title=Ring Programming Language: What Do You Need To Know? |author=Naveen Verma |date=14 Aug 2018 |publisher=[[Medium (website)|Medium]]}}</ref>
<ref name="Youm7 Journal">{{cite
* Applications programming language.
Line 64 ⟶ 63:
<pre>
print("Hello, World!")
</pre>
Line 74 ⟶ 72:
</pre>
===Change the
'''Ring''' supports changing the language [[Reserved word|keywords]] and [[Operator (computer programming)|operators]].
Line 87 ⟶ 85:
<pre>
ChangeRingKeyword
ChangeRingOperator + そして
改行 = nl
Line 95 ⟶ 93:
ChangeRingKeyword 手紙を出す See // キーワードの復旧
ChangeRingOperator そして
</pre>
Line 101 ⟶ 99:
<pre>
ChangeRingKeyword
إطبع "Hello, World!"
Line 112 ⟶ 110:
<syntaxhighlight lang="pascal" highlight="1,2,11,12">
ChangeRingKeyword func function
ChangeRingKeyword see
begin = :begin
Line 125 ⟶ 123:
</syntaxhighlight>
<ref name="helloworldstyles">{{cite web |url=https://www.codeproject.com/Tips/1222859/Different-styles-for-writing-Hello-World-program-i |title=Different styles for writing Hello World program in the Ring programming language
===Loop
The Loop command can take an integer to apply the continue semantics to enclosing outer loops<ref name="rangakrish2">{{cite web |url=https://www.rangakrish.com/index.php/2021/08/21/loop-command-in-ring-programming-language/ |title="Loop" Command in Ring Programming Language |author= Dr. Rangarajan Krishnamoorthy
<pre>
Line 145 ⟶ 143:
</pre>
===Object-oriented
Ring supports
<pre>
new point { # Create new object
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)
</pre>
In Ring classes can be defined 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
<pre>
Line 172 ⟶ 170:
==Implementation==
===Compiler and
[[File:Ringlang shot10.jpg|thumb|300px|Ring VM implementation using PWCT - Virtual Machine Instructions]]
Line 178 ⟶ 176:
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 at [[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 [[
===Extensions===
[[File:Ringlang shot3.png|thumb|300px|Online Form Designer (WebAssembly) - Using RingQt]]
[[File:Ringlang shot8.png|thumb|300px|[[Sokoban]] Implementation using Ring Game Engine for 2D Games]]
[[File:Ringlang shot9.png|thumb|300px|Using Qt3D through RingQt]]
The following are extensions that can be used immediately after the installation of the full installation version (with a file size of about 280 MB for Ring 1.12). Since these are officially provided and maintained on the Ring side, the users are not bothered by library dependencies that may cause problems in other languages, and there is a concern that they can not be used suddenly even if there are destructive language specification changes.
Line 208 ⟶ 206:
* RingZIP ([[Zip (file format)|zip file processing library]])
<ref name="Extensions3">{{cite web |url=https://www.codeproject.com/Articles/1096942/Squares-Puzzle-using-RingAllegro |title=Squares Puzzle using RingAllegro
===Libraries===
Ring comes with libraries written in Ring itself,
{| class="wikitable"
Line 281 ⟶ 279:
===Tools===
[[File:Ringlang shot7.png|thumb|300px|Running the Tetris game using the Ring Package Manager]]
Ring is distributed with a Standard IDE that
* Ring REPL ([[Read–eval–print loop]])
Line 289 ⟶ 287:
* Form Designer ([[Graphical user interface builder|WYSIWYG GUI designer]])
===Documentation===
Ring is distributed with documentation written using [[Sphinx (documentation generator)|Sphinx]]. A Japanese translation of the documentation is also available.<ref>{{Cite web|url=http://ring-lang-081.osdn.jp/docs-1.16/index.html|title=ようこそ Ring 取扱説明書へ! — プログラミング言語 Ring 1.16 取扱説明書|access-date=2021-10-30|archive-date=2021-10-30|archive-url=https://web.archive.org/web/20211030103530/http://ring-lang-081.osdn.jp/docs-1.16/index.html|url-status=dead}}</ref>
==Reception==
Line 303 ⟶ 297:
===Popularity===
Ring had a rapid rise and fall in popularity as measured by the [[TIOBE index|TIOBE Programming Community Index]]. In February 2018, Ring broke into the top 50 for the first time (position 45).<ref>{{cite web |url=https://www.tiobe.com/tiobe-index/ |title=
===Criticism===
Ring critics pointed to some features in Ring that are not common in widely used programming languages.<ref name="Ciklum">{{cite web |url=https://www.ciklum.com/blog/new-programming-languages-a-hype-or-reality/ |title=New Programming Languages – A Hype Or Reality? |author=Ciklum |date=12 December 2017 |work=ciklum.com |publisher=[[Ciklum]] |access-date=1 February 2024 |archive-date=7 December 2017 |archive-url=https://web.archive.org/web/20171207084845/https://www.ciklum.com/blog/new-programming-languages-a-hype-or-reality/ |url-status=bot: unknown }}</ref>
* The list index starts from 1 instead of 0 (See: [[Zero-based numbering]])
* Implicit type conversions
====The list index starts from 1 instead of 0====
Line 325 ⟶ 319:
====Implicit type conversions====
The language can automatically convert between numbers and strings.<ref>{{Cite web|url=https://ring-lang.github.io/doc1.
<pre>
Line 348 ⟶ 342:
*[[Squirrel (programming language)|Squirrel]]
*[[Gambas]]
*[[Julia (programming language)|Julia]]
*[[Mojo (programming language)|Mojo]]
== References ==
Line 353 ⟶ 349:
== Further reading ==
*
* Fayed, Alohali. (2025) ''[https://www.mdpi.com/2076-3417/15/3/1521 PWCT2: A Self-Hosting Visual Programming Language Based on Ring with Interactive Textual-to-Visual Code Conversion]'', [[Applied Sciences (journal)|Applied Sciences]]
* Fayed, Alohali. (2024) ''[https://www.mdpi.com/2079-9292/13/23/4627 Ring: A Lightweight and Versatile Cross-Platform Dynamic Programming Language Developed Using Visual Programming]'', [[Electronics (journal)|Electronics]]
* Ghanem (2021) ''[https://ring-lang.github.io/ref/GhanemBookAboutRing.pdf Developing Poet Software using Ring language (Arabic Book)]'', MetaBook (Egypt - Mansoura)
* Ayouni (2020) ''[https://www.apress.com/gp/book/9781484258323 Beginning Ring Programming]'', [[Springer Nature|Apress (part of Springer Nature)]]
* Hassouna (2019) ''[https://ring-lang.
* Sobain (2017) ''[http://ring-wincreg.sf.net/docs/ RingWinCReg Extension Documentation]'', [[SourceForge]]
* Fayed (2016) ''[https://www.codeproject.com/Articles/1089887/The-Ring-Programming-Language The Ring Programming Language]'', [[Code Project|CodeProject]]
Line 361 ⟶ 360:
==External links==
{{Wikibooks|Ring}}
* [https://www.youtube.com/playlist?list=PLHIfW1KZRIfl6KzfLziFl650MmThnQ0jT Arabic videos]
* [https://
* {{Official website|https://www.ring-lang.net/}}
* [https://ring-lang.github.io/web/formdesigner/project.html Online Form Designer (WebAssembly)]
* [https://store.steampowered.com/app/1953110/Programming_Without_Coding_Technology_20/ PWCT2 (Developed using Ring)]
* [https://rosettacode.org/wiki/Category:Ring RosettaCode samples]
* [https://ring-lang.github.io/web/tryringonline/project.html Try Ring Online (WebAssembly)]
{{FOSS}}
{{Programming languages}}
|