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. In 2009, Mahmoud Samir Fayed created a minor domain-specific language called Supernova that focuses on User interface (UI) creation and uses some ideas related to Natural Language Programming, then he realized the need for a new language that is 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. The general goals behind Ring: Applications programming language. Productivity and developing high quality solutions that can scale. Small and flexible 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. 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!" Ring supports changing the language keywords and operators.
Martin Odersky, Tiark Rompf, Hassan Chafi
Martin Odersky, Tiark Rompf, Alen Stojanov