This article, Ring (programming language), has recently been created via the Articles for creation process. Please check to see if the reviewer has accidentally left this template after accepting the draft and take appropriate action as necessary.
Reviewer tools: Inform author |
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, WebAssembly, etc.) and can be used to create console, GUI, web, game and mobile applications.[1][2][3][4][5][6][7][8][9]
Ring | |
---|---|
![]() | |
Paradigm | Multi-paradigm: object-oriented, imperative, functional, procedural, reflective, declarative, natural language programming |
Designed by | Mahmoud Samir Fayed |
Developer | The Ring Development Team |
First appeared | January 25, 2016 |
Stable release | 1.13
/ September 15, 2020 |
Typing discipline | Dynamic |
Implementation language | C |
OS | Windows, Linux and macOS |
License | MIT License |
Filename extensions | .ring, .rh, .rform |
Website | http://ring-lang.net |
Influenced by | |
Lua, Python, Ruby, C, C#, BASIC, QML, xBase, Supernova | |
|
History
In 2009, Fayed created a minor ___domain-specific language called Supernova that focus on User interface (UI) creation and uses some ideas related to Natural Language Programming, then he realized the need for a new language that are general-purpose and can increase the productivity of creating natural languages. Ring aims to offer a language focused on helping the developer with building natural interfaces and declarative DSLs. [10][11][12] [13]
- 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.
- In September 15, 2019, Ring 1.11 was released.
- In January 25, 2020, Ring 1.12 was released.
- In September 15, 2020, Ring 1.13 was released.[14][15]
Goals
The general goals behind Ring:[16] [17]
- 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.
Examples
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 for using the favorite style
- 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
Implementation
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.
The Compiler and the Virtual Machine are designed using Visual Programming through the Programming Without Coding Technology software then the C code is generated.
Extensions
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.
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)
- RingRayLib (raylib)
- 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.
Library Name | Description |
---|---|
Standard Library | General Classes and functions. |
GUI Library | Classes and functions for creating GUI applications |
Objects Library | Classes and functions for creating GUI applications using the MVC design pattern |
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. |
ZeroLib Library | Contains classes where the Index starts from 0 instead of 1. |
Applications
Ring is distributed with over 60 applications written in the language.
Some of these applications are
- Analog Clock application
- Calculator application
- The Checkers Game
- The Chess Game
- Fifteen Puzzle 3D Game
- Game 2048
- Knight Tour Game
- Minesweeper Game
- Othello Game
- Sokoban Game
- Sudoku Game
- Tic-tac-toe 3D Game
- Video Music Player application
- Windows Startup Manager application
Tools
Ring is distributed with a Standard IDE that contains the next tools (written in Ring itself)
- Ring REPL (Read–eval–print loop)
- Ring2EXE (Distributing executable applications)
- RingPM (The Ring Package manager)
- Ring Notepad (Source-code editor)
- Form Designer (WYSIWYG GUI designer)
Also Ring is distributed with extensions for many code editors (Emacs, Notepad++, Geany, Atom, Sublime Text 2, Visual Studio Code).
Documentation
Ring is distributed with documentation written using Sphinix.
Also there is Japanese translation.
Criticism
Ring critics [27] 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.
See also
References
- ^ Paul Krill (24 August 2020). "Ring language upgrade focuses on WebAssembly". InfoWorld.
- ^ M. Ayouni (29 July 2020). "A Dialogue with Mahmoud Fayed" (PDF). Springer.
- ^ Beginning Ring Programming - From Novice to Professional | Mansour Ayouni | Apress.
- ^ Bernhard Lauer (14 August 2018). "Ring: flexible, simple, fast". Dotnetpro.
- ^ Ilya Bubnov (2 March 2018). "Want to know everything. Ring language very young, but very promising". GeekBrains (Mail.ru Group).
- ^ Alinsen TV channel Team (4 August 2020). "Alinsen TV channel introduce Ring as one of the inventions made in the Middle East". Alinsen TV Channel.
- ^ Hany Salah (11 January 2016). "Ring: A New programming language". youm7.com. youm7.
- ^ Omar Selim (January 2018). "The Ring programming language Review" (PDF). BIMArabia Magazine.
- ^ Ahmed Tartour (January 2020). "Your way to programming (Arabic Book, Pages 56-57) talk about Ring" (PDF). Kotobna.
- ^ Ring Team (January 2020). "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.
- ^ Softpedia Team (15 September 2020). "Ring 1.13 review". Softpedia.
- ^ G link Solutions Team (28 January 2019). "The evolution of the Ring programming language". glinksolutions.vn. GlinkSolution. Archived from the original on 2019-04-21.
- ^ V2EX (3 October 2019). "Ring - a programming language from the Middle East, supporting GUI cross-platform, as easy to learn as PHP". V2EX.
{{cite web}}
: CS1 maint: numeric names: authors list (link) - ^ 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.
- ^ Majdi Sobain (2 May 2017). "Squares Puzzle using RingAllegro". codeproject.com. Code_Project.
- ^ 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). "Applications written in Ring". Ring Team.
- ^ 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.
- ^ Ciklum (12 December 2017). "New Programming Languages – A Hype Or Reality?". ciklum.com. Ciklum.
Further reading
- Ayouni (2020) Beginning Ring Programming, Apress (part of Springer Nature)
- Hassouna (2019) Ring Basics (Arabic Book), Hassouna Academy
- Sobain (2017) RingWinCReg Extension Documentation, SourceForge
- Fayed (2016) The Ring Programming Language, CodeProject
External links
- Ring home page
- RosettaCode samples
- Ring in Wikibooks
- Ring Documentation (Japanese)
- Online Form Designer (WebAssembly)
Category:Programming languages Category:Cross-platform free software Category:Programming languages created in 2016 Category:High-level programming languages Category:2016 software Category:Dynamically typed programming languages Category:Egyptian inventions Category:Free software projects Category:Software using the MIT license Category:Free_software_programmed_in_C Category:Multi-paradigm programming languages Category:Extensible syntax programming languages
This article, Ring (programming language), has recently been created via the Articles for creation process. Please check to see if the reviewer has accidentally left this template after accepting the draft and take appropriate action as necessary.
Reviewer tools: Inform author |