Content deleted Content added
No edit summary |
|||
(39 intermediate revisions by 17 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 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 command===
The Loop command can take an integer to apply the continue semantics to enclosing outer loops<ref name="rangakrish2">{{cite web |url=
<pre>
Line 145 ⟶ 143:
</pre>
===Object-oriented
Ring supports object-oriented programming (classes, objects, composition, inheritance, encapsulation, etc.)<ref>{{Cite web|url=https://ring-lang.github.io/doc1.
<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=
<pre>
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===
Line 293 ⟶ 291:
===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
==Reception==
Line 299 ⟶ 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=TIOBE Index | TIOBE - the Software Quality Company |website=www.tiobe.com |access-date=28 February 2022 |archive-url=https://web.archive.org/web/20180221113115/https://www.tiobe.com/tiobe-index/ |archive-date=21 February 2018 |url-status=dead}}</ref> As of October 2020, Ring holds position 93 on the TIOBE index.<ref>{{Cite web|title=Top 100 Programming Languages|url=https://www.bairesdev.com/blog/top-100-programming-languages/|access-date=2020-10-06|website=[[:es:BairesDev|BairesDev]]|author=Emma White|date=6 October 2020 }}</ref> Ring is listed by GitHub in the list of programming languages that are actively developed.<ref>{{Cite web|url=https://github.com/collections/programming-languages|title = Build software better, together|website = [[GitHub]]}}</ref>
===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 321 ⟶ 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 344 ⟶ 342:
*[[Squirrel (programming language)|Squirrel]]
*[[Gambas]]
*[[Julia (programming language)|Julia]]
*[[Mojo (programming language)|Mojo]]
== References ==
Line 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 357 ⟶ 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}}
|