Ring Language: DSL Creation for the Masses

I’ve come across the Ring programming language (2016–) which caught my attention for two characteristics that seem relevant to the topics of this forum:

  1. It natively supports the Natural Language Programming paradigm.
  2. It’s designed to allow creating DSLs without lexing-and-parsing know-how.

These two features are strictly related and were intentionally designed to support the goals of Ring lang:

It comes with compact syntax and a group of features that enable the programmer to create natural interfaces and declarative domain-specific languages in a fraction of time.

So we’re dealing with a language designed to bring creation of DSLs “to the masses” (so to speak), for the adoption of an extensible Natural Language Programming paradigm is a strong statement in that direction.

Ring’s author (Mahmoud Samir Fayed) had previously worked on a similar endeavour, when he created Supernova, a scripting language for MS Windows which he created to explore the domain of compilers creation and DSLs:

I am interested in Compiler implementation using AI Techniques and Supernova (Simple scripting language for Microsoft-Windows which released formally as Freeware) as a result of my research on this topic.

— from M.S.Fayed’s article on Supernova at CodeProject.

So the Ring language was born on the ashes of its predecessor language, bringing with it all the learned experience and skills.

As a language, Ring seems to be a robust compilable cross-platform language, designed to be scalable, able to interact well with C++, and extensible using C++ too (and my guess is that if it supports interfacing with Cpp’s name-mangling, it should be easily bindable to other language too). It also ships with a native IDE and enjoys a good selection of libraries.

From the Ring website homepage:

The language comes with better support for Natural Language Programming and Declarative Programming. The innovation comes in supporting these paradigms with new practical techniques on the top of Object-Oriented Programming and Functional Programming. No need to know anything about (Compilers and Parsing). You get the language constructs ready for use to create domain-specific languages in a fraction of time.

[…]

The Ring is an innovative and practical general-purpose multi-paradigm language. The supported programming paradigms are imperative, procedural, object-oriented, declarative using nested structures, functional, meta programming and natural programming. The language is portable (Windows, Linux, macOS, Android, etc.) and can be used to create Console, GUI, Web, Games and Mobile applications. The language is designed to be simple, small, flexible and fast.

In conclusion, the Ring lang has definitely caught my attention, and I’ll be looking into it deeper. I hope that this might also trigger the interest of other members of this forum, and I’d love to ear their feedback on Ring.

Links

Introductory articles and tutorials on CodeProject, by Ring creator Mahmoud Samir Fayed:

4 Likes

Ring (Programming Without Coding on Sourceforge.net) good as first language for teaching coding from age 5 to 13. Making it easy to go from Pseudocode to translation/implementation. I was thinking also about adapting it for visual block environment like scratch and Karel robot. May even embedded systems programming like Raspberry Pi, Arduino, Esp8266, etc… Must give a go again…

A brilliant tool

Reagrds,
Sanyaade

1 Like