411 REFERENCE · Wikibooks
Ring/Lessons/Features
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
Features
The Ring language comes with the next features
.. tip:: One of the main goals behind the first release is creating a useful language ready for production!
Free Open Source (MIT License)
Interpreter - Hybrid Implementation (Compiler+VM)
Declarative programming on the top of Object-Oriented programming
No explicit end for statements (No ; or ENTER is required)
A small language (Around 100,000 lines of code)
* The compiler + The Virtual Machine are 15,000 lines of C code
* The other 85,000 lines of code are related to libraries!
* 10,000 lines of C code
* 50,000 lines of C++ code
* 25,000 lines of Ring code
Written in ANSI C (The code is generated)
Developed using Visual Programming (PWCT)
Optional Printing for Tokens/Grammar/Byte-Code during execution
Portable (Windows, Linux & Mac OS X)
Comments (One line & Multi-lines)
Not Case-Sensitive
Dynamic Typing
Weakly typed
Lexical Scoping (Global, Local & Object State)
Default scope for variables inside functions (Local)
Default scope for variables outside functions (global)
Garbage Collector - Automatic Memory Management (Escape Analysis and Reference Counting)
Structure Programming
Rich control structures & Operators
For in get item by reference not value, you can read/edit the item
Use exit to go outside from more than one loop
Procedures/Functions
Main Function (optional)
Call Function before the definition
Recursion
Multi-line literals
Access (read/write) string letter by index
The list index start by 1
No keyword to end Functions/Classes/Packages
Range operator ex: 1:10 and "a":"z"
First Class Variables, Lists, Objects and Functions
Store/Copy Lists/Objects by value (Deep Copy)
Pass Lists/Objects by reference
Native Object-Oriented Support
* Encapsulation
* Setter/Getter (optional)
* private state (optional)
* Instantiation
* Polymorphism
* Composition
* Inheritance (Single Inheritance)
* Operator Overloading
* Packages
using { } to access objects and use attributes/methods as variables/functions
Reflection and Meta-programming
Clear program structure (Statements then functions then packages & classes)
Exception Handling
Eval() to execute code during run-time
8-bit clean, work on binary data directly
I/O commands
Math functions
String functions
List functions
File processing functions
Database support (ODBC & MySQL)
Security Functions (OpenSSL)
Internet Functions (LibCurl)
CGI Library (Written in Ring)
* HTTP Get
* HTTP Post
* File upload
* Cookies
* URL Encode
* HTML Templates
* HTML Special Characters
* HTML Generation using Functions
* HTML Generation using Classes
* CRUD Example (using MVC)
* Users Example (Register, Login and Check)
Extension using C/C++ (Simple API)
Embedding the language in C/C++ programs
Comes with code generator (Written in Ring) to quickly wrap C/C++ Libraries
* Used to Support Allegro by creating RingAllegro
* Used to Support Qt by creating RingQt
Create 2D Games (Using the Allegro Library)
Create GUI Applications for Desktop and Mobile (Using the Qt Framework)
Ring programming language