Ring (programming language)
|Paradigm||Multi-paradigm: object-oriented, imperative, functional, procedural, reflective, declarative, natural language programming|
|Designed by||Mahmoud Fayed|
|Developer||The Ring Development Team|
|First appeared||January 25, 2016|
1.10 / January 25, 2019
|Typing discipline||Dynamic, weak|
|Implementation language||C (primarily; some components C++)|
|OS||Linux, macOS and Microsoft Windows|
|Filename extensions||.ring, .rh, .rform|
|Lua, Python, Ruby, C, C#, BASIC, QML, xBase, Supernova|
Ring is a dynamically typed, general-purpose programming language. It can be embedded in C/C++ projects, extended using C/C++ code and/or used as a standalone language. The supported programming paradigms are imperative, procedural, object-oriented, functional, meta, declarative using nested structures, and natural programming. The language is portable (Windows, Linux, macOS, Android, etc.) and can be used to create console, GUI, web, game and mobile applications.   
In 2009, Fayed tried to implement some ideas related to Natural Language Programming, In 9 months he created a minor domain-specific language called Supernova that focus on User interface (UI) creation, then he realized the need for a new language that are general-purpose, practical and can increase the productivity of creating natural languages.   
- In November 2011, the idea of the new language was conceived.
- In Sept. 2013, the design and the implementation was started.
- In April 2015, the language name was selected.
- In May 2015, the compiler was implemented.
- In Sept. 2015, the documentation was done.
- In January 25, 2016 , Ring 1.0 was released.
- In October 6, 2016, Ring 1.1 was released.
- In January 25, 2017, Ring 1.2 was released.
- In May 15, 2017, Ring 1.3 was released.
- In June 29, 2017, Ring 1.4 was released.
- In August 21, 2017, Ring 1.5 was released.
- In November 30, 2017, Ring 1.6 was released.
- In January 25, 2018, Ring 1.7 was released.
- In June 25, 2018, Ring 1.8 was released.
- In October 6, 2018, Ring 1.9 was released.
- In January 25, 2019, Ring 1.10 was released.
The Ring Team used to provide a new release of Ring on January 25th, in the same day as the Egyptian revolution of 2011.
The vast majority of computer owners are only users, and only a fraction develop software themselves. programming has the image that it is difficult. One of the many initiatives to remove that image is PWCT, which stands for Programming Without Coding Technology. Although visual programming environments are generally limited in their capabilities and mainly aim to show the user the concepts of programming, you can make almost anything with PWCT. Of course, that doesn't happen after a few minutes.  The Ring programming language is developed using PWCT and is designed for developing the next version of the PWCT software.  Also PWCT could be used in introducing programming concepts.. The project started in Dec. 2005 and support designing applications through visual programming then generating the source code, the software support code generation in many programming languages. 
- Applications programming language.
- Productivity and developing high quality solutions that can scale.
- Small and fast language that can be embedded in C/C++ projects.
- Simple language that can be used in education and introducing Compiler/VM concepts.
- General-Purpose language that can be used for creating domain-specific libraries, frameworks and tools.
- Practical language designed for creating the next version of the Programming Without Coding Technology software.
Hello World program
The same program can be written using different styles. Here is an example of the standard "Hello, World!" program using four different styles.
The first style:
see "Hello, World!"
The second style:
put "Hello, World!"
The third style:
load "stdlib.ring" print("Hello, World!")
Another style: similar to xBase languages like Clipper and Visual FoxPro
? "Hello, World!"
Change the Keywords and Operators
Ring support changing the language keywords and 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 based on different needs like using the favorite style or porting Legacy code written in other languages
Translate Ring keywords to Japanese
ChangeRingKeyword See 手紙を出す ChangeRingOperator + そして 改行 = nl します。 = :します。 手紙を出す "こんにちは、世界" そして 改行 します。 ChangeRingKeyword 手紙を出す See // キーワードの復旧 ChangeRingOperator そして + // 演算子の復旧
Translate Ring keywords to Arabic
ChangeRingKeyword See إطبع إطبع "Hello, World!" ChangeRingKeyword إطبع See
Use style similar to the Pascal programming language
ChangeRingKeyword func function ChangeRingKeyword see write begin = :begin function main begin write("Hello, World!"); return 0; end ChangeRingKeyword function func ChangeRingKeyword write see
Ring programs are not interpreted directly from the textual Ring file, but are compiled into bytecode, which is then run on the Ring virtual machine. The compilation process is typically invisible to the user and is performed during 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. Ring version 1.10 is implemented in approximately 20,000 lines of C code.   
The implementation code in C is not written directly using a Text editor. The Compiler and the Virtual Machine are designed using Visual Programming through the Programming Without Coding Technology software then the C code is generated.       
The following are extensions that can be used immediately after the installation of the full installation version (with a file size of about 203 MB for Ring 1.10). 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.
The extensions are implemented in approximately 500,000 lines of C and C++ code.
- RingAllegro (Allegro Game Library)
- RingConsoleColor (Text coloring library for command prompt or the terminal)
- RingCurl (CURL Library)
- RingFreeGLUT (FreeGLUT)
- RingInternet (Internet related library)
- RingLibUV (LibUV-asynchronous I / O library)
- RingMurMurHash (Hash Function Library)
- RingMySQL (MySQL)
- RingODBC (Open Database Connectivity)
- RingOpenGL (OpenGL 1.1-4.6)
- RingOpenSSL (OpenSSL)
- RingPostgreSQL (PostgreSQL)
- RingQt (Qt framework)
- RingSDL (SDL-Simple DirectMedia Layer Library)
- RingSQLite (SQLite)
- RingWinAPI (Windows API)
- RingWinCREG (Windows Registry)
- RingZIP (zip file processing library)
Also Ring comes with libraries written in Ring itself, some of these libraries are related to web and game development.
|Standard Library||General Classes and functions.|
|Web Library||Simple framework for developing web applications using the MVC design pattern.|
|Game Engine||Support developing 2D Games for Desktop and Mobile using Declarative Programming based on Allegro and LibSDL|
|Natural Library||General-Purpose Natural Language Programming Library.|
|Trace Library||A library for debugging applications.|
|Type Hints||A library for adding type hints to functions.|
|Big Number Library||Support arithmetic operations on huge numbers.|
|Fox Ring Library||Contains functions similar to Visual FoxPro.|
Ring is distributed with over 40 applications written in the language.
Some of these applications are
- Analog Clock application
- Calculator application
- Cards Game
- The Checkers Game
- The Chess Game
- Fifteen Puzzle 3D Game
- Find in Files application
- Flappy Bird 3000 Game
- Game 2048
- Game of life
- Get Quotes History application
- Knight Tour Game
- Minesweeper Game
- Othello Game
- Sokoban Game
- Stars Fighter Game
- Sudoku Game
- Superman2016 Game
- Tic-tac-toe 3D Game
- URL Shortener application
- Video Music Player application
- Weight History application
- Windows Startup Manager application
Ring is distributed with a Standard IDE that contains the next tools (written in Ring itself)
- Ring REPL (Read–eval–print loop)
- Ring Notepad (Source-code editor)
- Form Designer (WYSIWYG GUI designer)
- Ring2EXE (Distributing executable applications)
- RingPM (The Ring Package manager)
Also Ring is distributed with extensions for the next code editors.
- Sublime Text 2
- Visual Studio Code
Ring is distributed with documentation written using Sphinix (2116 pages for Ring 1.10).
Ring had a rapid rise and fall in popularity as measured by the TIOBE Programming Community Index. In February 2018, Ring broke into the top 50 for the first time. As of June 2019, Ring holds position in the top 100 on the TIOBE index. It's not easy to know how many users of a free open source software like Ring, because it's distributed through many websites like Sourceforge and GitHub, but some links from Sourceforge indicates 40 thousand downloads. Also Ring source code and visual source is distributed with the Programming Without Coding Technology software (21 million downloads).  
Ring critics  assert that:
- The list index starts from 1, which messes up indexing math.
- Dynamic typing, coupled with weak typing is the straight way to lots of bugs.
Other articles of the topic Free and open-source software : Aria Maestosa, GENESIS (MD software), Conectiva, Lobsters (website), Free Silicon Foundation, Koseven (framework), I, Librarian
Some use of "" in your query was not closed by a matching "".Some use of "" in your query was not closed by a matching "".
- Omar Selim (January 2018). "The Ring programming language Review" (PDF). BIMArabia Magazine.
- Hany Salah (11 January 2016). "Ring: A New programming language". youm7.com. youm7.
- RosettaCode (12 June 2019). "Ring Samples (RosettaCode)". rosettacode.org. Rosetta_Code.
- Wikibooks (12 June 2019). "Ring Book (Wikibooks)". en.wikibooks.org. Wikibooks.
- Lea Karam (25 February 2017). "New programming languages that grab my attention!". In Agile web and app development.
- Ilya Bubnov (12 December 2017). "5 languages for 5 years". geekbrains.
- Ring Team (January 2019). "Ring Language - Frequently Asked Questions (FAQ)". Ring Team.
- Fayed (April 2010). "Supernova programming language". Code_Project.
- Omnia (December 2011). "Supernova language by Egyptian programmer". Youm7.
- G link Solutions Team (28 January 2019). "The evolution of the Ring programming language". glinksolutions.vn. GlinkSolution.
- Ring Team (25 January 2019). "Ring Reference" (PDF). ring-lang.net.
- Muslim Researchers Team (2016). "Ring: A new programming language made in the middle east". Muslim Researchers Magazine.
- Ahmed Hassouna (23 August 2017). "Ring Course (over 200 videos)". YouTube.
- Alaa Mohamed (15 June 2016). "Ring Course (over 100 videos)". YouTube.
- Quora (13 October 2018). "What programming languages have, in your opinion, a dumb name?".
- Computer Total Magazine (7 October 2018). "Free software: the best freeware from October 2018 - Includes (You can make almost anything with PWCT)". Computer!Totaal.
- Mones Hawas (23 November 2016). "Using Ring to Develop PWCT 2.0". youm7.com. youm7.
- Fayed, Al-Qurishi, Alamri, Aldariseh (22 March 2017). "PWCT: visual language for IoT and cloud computing applications and systems - Talk about designing Ring to develop PWCT 2.0". ACM.CS1 maint: Multiple names: authors list (link)
- Ring Team (January 2016). "Ring Language - Motivation". Ring Team.
- PWCT Team (June 2019). "PWCT Project (Used to develop Ring)". PWCT Team.
- AMBASTHA S (October 2014). "What's In This Month's DVD? Electronics For You". EFY Group.
- Chin, Jerry M. et all (2013). "A String Search Marketing Application Using Visual Programming" (PDF). e-Journal of Business Education and Scholarship of Teaching.
- AL-AALEM Magazine (November 2008). "Programming Without Coding Technology Review" (PDF). AL-AALEM the Scientists Magazine, Issue No. 116, Page 26.
- Naglaa Elsayed (2009). "Programming Without Coding Technology - Innovative Project (offline source)" (PDF). Al_Gomhuria.
- Naveen Verma (14 Aug 2018). "Ring Programming Language: What Do You Need To Know?". Medium (website).
- Mones Hawas (29 May 2018). "Progress in developing PWCT 2.0 using Ring". youm7.com. youm7.
- Rubin Liu (28 December 2017). "Different styles for writing Hello World program in the Ring programming language". codeproject.com. Code_Project.
- Roshan Ali (4 June 2018). "Ring programming tutorial". YouTube.
- Amr Essam (12 December 2017). "Amr Essam Tutorials". ribdev.
- Sara Hamdy (12 December 2017). "Sara Hamdy Tutorials". ringprogramming4arab.
- Fayed (9 October 2016). "Syntax Flexibility in the Ring Programming Language". codeproject.
- Ring Team (25 January 2016). "Syntax Flexibility Ring". Ring Team.
- Ring Team (14 June 2019). "Ring Features". GitHub.
- Ring Team (14 June 2019). "Ring Reference - Command Line Options". GitHub.
- Fayed (14 June 2019). "Ring Compiler and Virtual Machine source code (MIT License)". GitHub.
- Open Source Developers (13 June 2019). "Ring source code (MIT License)". GitHub.
- Fayed (15 March 2018). "General-Purpose Visual Language and Information System with Case-Studies in Developing Business Applications". Cornell University.
- Hend Al-Khalifa (29 February 2008). "Free Open Source Visual Programming Language". Al Riyadh (newspaper).
- Fayed (11 May 2017). "using visual programming to implement the Ring compiler and virtual machine" (PDF). King Saud University.
- "PWCT download statistics from Sourceforge". Sourceforge. 14 June 2019.
- Khaled Almesahuge (17 June 2010). "Useful open source projects - Programming Without Coding Technology". Al Riyadh (newspaper).
- FOP (23 May 2018). "Introducing Programming Without Coding Technology". YouTube.
- Open Source Developers (14 June 2019). "Ring Extensions". GitHub.
- Open Source Developers (14 June 2019). "libcurl - Bindings". cURL.
- Majdi Sobain (2 May 2017). "Squares Puzzle using RingAllegro". codeproject.com. Code_Project.
- RingWinCReg Team (2017). "RingWinCReg Extension Documentation". RingWinCReg.
- Open Source Developers (15 June 2019). "Ring Libraries written in Ring itself". GitHub.
- Fayed (11 August 2017). "Using the Natural Language Programming Library (NLPL) in the Ring Programming Language". codeproject.com. Code_Project.
- Fayed (12 October 2016). "Natural Language Programming in the Ring Programming Language". codeproject.com. Code_Project.
- Open Source Developers (15 June 2019). "Ring Applications written in Ring itself". GitHub.
- Etqan Company (25 September 2018). "Gold Magic 800 Game by Etqan Company". Steam (software).
- Etqan Company (25 September 2018). "Developing the Gold Magic 800 Game using Ring". Etqan Company.
- Ring Team (16 June 2019). "Using Ring Notepad". Ring Team.
- Ring Team (16 June 2019). "Using Ring Form Designer". Ring Team.
- Ring Team (16 June 2019). "Distributing Ring applications using Ring2EXE". Ring Team.
- Ring Team (16 June 2019). "Using the Ring Package Manager". Ring Team.
- Open Source Developers (15 June 2019). "Ring2EXE written in Ring itself". GitHub.
- Open Source Developers (15 June 2019). "Ring Package Manager (RingPM) written in Ring itself". GitHub.
- Open Source Developers (16 June 2019). "Extensions for Code Editors to support Ring". Ring Team.
- Open Source Developers (15 June 2019). "Editor extensions for the Ring language". GitHub.
- Sphinix Team (25 January 2019). "Ring documentation uses Sphinix". Sphinx (documentation generator).
- Ring Team (25 January 2019). "Download Ring documentation (PDF File), 2116 pages". Ring Team.
- OSDN (25 January 2019). "Unofficial Japanse translation for Ring documentation". OSDN.
- TIOBE (2 March 2018). "TIOBE Index, Ring in Top 50 programming languages according to TIOBE Index". www.tiobe.com. TIOBE_index.
- "Ring download statistics from Sourceforge". Sourceforge. 12 June 2019.
- "PWCT download statistics from Sourceforge - Ring source code and visual source is distributed with the PWCT". Sourceforge. 3 July 2019.
- Ciklum (12 December 2017). "New Programming Languages – A Hype Or Reality?". ciklum.com. Ciklum.
This article "Ring (programming language)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Ring (programming language). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.