The document describes the Ring programming language. It discusses why Ring was created, including wanting a language that is simple, natural, encourages organization, and has transparent implementation. It provides an overview of Ring's design goals, features, and licensing. Key points include that Ring supports multiple paradigms like object-oriented programming and functional programming. It aims to be small, fast, and give programmers memory control. Ring also has a straightforward syntax without semicolons or explicit function endings.
The Ring programming language version 1.5.2 book - Part 5 of 181Mahmoud Samir Fayed
This document provides an overview of the Ring programming language. It discusses the motivation for creating Ring, which was to build a new version of Programming Without Coding Technology software from scratch using a single language. Ring aims to be innovative, practical, simple, small, flexible and fast. It supports multiple programming paradigms and can be used to create various application types. The document outlines Ring's features, which include its hybrid compiler/virtual machine implementation, declarative programming support, natural language programming, portability and more. It is open source under the MIT license.
The Ring programming language version 1.3 book - Part 4 of 88Mahmoud Samir Fayed
The document provides an overview of the Ring programming language. It discusses the motivation for creating Ring as a new dynamic language that is simple, small, flexible and fast. Key features of Ring mentioned include being open source, having a hybrid compiler and virtual machine implementation, supporting object-oriented, functional and declarative programming, and being portable across different platforms. Examples of applications that can be created with Ring include games, GUIs, web applications and more.
The Ring programming language version 1.2 book - Part 4 of 84Mahmoud Samir Fayed
The document provides an overview and documentation of the Ring programming language. It discusses the history and development of Ring, beginning in 2013. Key features of Ring include being small and fast, with a compact syntax, dynamic typing, garbage collection, object-oriented support, and the ability to embed Ring code in C/C++ programs. The documentation also covers Ring's license, language design principles such as simplicity and organization, and its visual implementation process.
The Ring programming language version 1.4 book - Part 2 of 30Mahmoud Samir Fayed
This document provides an overview of the Ring programming language, including its history, goals, features and license. The Ring language was created in 2013 as a general purpose language that is simple, small, flexible and fast. It supports multiple paradigms like object-oriented, functional and declarative programming. Notable features include a compact syntax, dynamic typing, first-class functions/objects, exception handling, libraries for games, GUI and more. The language is open source under the MIT license.
The Ring programming language version 1.8 book - Part 6 of 202Mahmoud Samir Fayed
Ring is a multi-paradigm programming language designed for productivity, flexibility, and performance. It supports imperative, object-oriented, functional, and declarative programming and can be used to create applications for desktop, web, games, and mobile. Ring compiles to bytecode and includes a virtual machine, libraries, IDE tools, and can be embedded in C/C++ projects. It aims to be a simple yet powerful language that improves developer productivity.
The Ring programming language version 1.4.1 book - Part 2 of 31Mahmoud Samir Fayed
This document provides an overview of the Ring programming language, including its history, design goals, features and syntax. Some key points:
- Ring is a general purpose language designed for productivity and developing scalable applications. It has a simple, natural syntax and encourages organization.
- The language has been under development since 2013 and reached version 1.4.1 in 2017. It supports multiple paradigms like object-oriented, functional and declarative programming.
- Ring is small and fast, portable, has automatic memory management and a flexible syntax. It allows developing desktop, web and mobile applications as well as games.
The Ring programming language version 1.5.3 book - Part 5 of 184Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses the motivations for creating Ring as a multi-paradigm language that is innovative, practical and designed for productivity. The history section outlines the development of Ring from 2013 to its initial release in 2016. Key features are also summarized, including Ring being free, open source, hybrid compiled, supporting declarative and natural language programming, and being portable, small, flexible and fast.
The Ring programming language version 1.5.4 book - Part 5 of 185Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses the motivations for creating Ring as a dynamic, multi-paradigm language that is simple, small, flexible and fast. Key features highlighted include support for declarative, object-oriented, and natural language programming. Ring aims to increase developer productivity and performance while being portable across different platforms.
The Ring programming language version 1.5.2 book - Part 5 of 181Mahmoud Samir Fayed
This document provides an overview of the Ring programming language. It discusses the motivation for creating Ring, which was to build a new version of Programming Without Coding Technology software from scratch using a single language. Ring aims to be innovative, practical, simple, small, flexible and fast. It supports multiple programming paradigms and can be used to create various application types. The document outlines Ring's features, which include its hybrid compiler/virtual machine implementation, declarative programming support, natural language programming, portability and more. It is open source under the MIT license.
The Ring programming language version 1.3 book - Part 4 of 88Mahmoud Samir Fayed
The document provides an overview of the Ring programming language. It discusses the motivation for creating Ring as a new dynamic language that is simple, small, flexible and fast. Key features of Ring mentioned include being open source, having a hybrid compiler and virtual machine implementation, supporting object-oriented, functional and declarative programming, and being portable across different platforms. Examples of applications that can be created with Ring include games, GUIs, web applications and more.
The Ring programming language version 1.2 book - Part 4 of 84Mahmoud Samir Fayed
The document provides an overview and documentation of the Ring programming language. It discusses the history and development of Ring, beginning in 2013. Key features of Ring include being small and fast, with a compact syntax, dynamic typing, garbage collection, object-oriented support, and the ability to embed Ring code in C/C++ programs. The documentation also covers Ring's license, language design principles such as simplicity and organization, and its visual implementation process.
The Ring programming language version 1.4 book - Part 2 of 30Mahmoud Samir Fayed
This document provides an overview of the Ring programming language, including its history, goals, features and license. The Ring language was created in 2013 as a general purpose language that is simple, small, flexible and fast. It supports multiple paradigms like object-oriented, functional and declarative programming. Notable features include a compact syntax, dynamic typing, first-class functions/objects, exception handling, libraries for games, GUI and more. The language is open source under the MIT license.
The Ring programming language version 1.8 book - Part 6 of 202Mahmoud Samir Fayed
Ring is a multi-paradigm programming language designed for productivity, flexibility, and performance. It supports imperative, object-oriented, functional, and declarative programming and can be used to create applications for desktop, web, games, and mobile. Ring compiles to bytecode and includes a virtual machine, libraries, IDE tools, and can be embedded in C/C++ projects. It aims to be a simple yet powerful language that improves developer productivity.
The Ring programming language version 1.4.1 book - Part 2 of 31Mahmoud Samir Fayed
This document provides an overview of the Ring programming language, including its history, design goals, features and syntax. Some key points:
- Ring is a general purpose language designed for productivity and developing scalable applications. It has a simple, natural syntax and encourages organization.
- The language has been under development since 2013 and reached version 1.4.1 in 2017. It supports multiple paradigms like object-oriented, functional and declarative programming.
- Ring is small and fast, portable, has automatic memory management and a flexible syntax. It allows developing desktop, web and mobile applications as well as games.
The Ring programming language version 1.5.3 book - Part 5 of 184Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses the motivations for creating Ring as a multi-paradigm language that is innovative, practical and designed for productivity. The history section outlines the development of Ring from 2013 to its initial release in 2016. Key features are also summarized, including Ring being free, open source, hybrid compiled, supporting declarative and natural language programming, and being portable, small, flexible and fast.
The Ring programming language version 1.5.4 book - Part 5 of 185Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses the motivations for creating Ring as a dynamic, multi-paradigm language that is simple, small, flexible and fast. Key features highlighted include support for declarative, object-oriented, and natural language programming. Ring aims to increase developer productivity and performance while being portable across different platforms.
The Ring programming language version 1.7 book - Part 6 of 196Mahmoud Samir Fayed
Ring is an innovative, multi-paradigm programming language designed to be simple, small, flexible and fast. It supports imperative, object-oriented, functional and other paradigms. Ring's compiler compiles source code to bytecode, which is executed by the Ring Virtual Machine. The language was created to be highly productive for application development while also small and portable.
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
This document summarizes Ring, an innovative programming language designed to be simple, small, flexible and fast. Key features include a hybrid compiler and virtual machine, declarative and natural language programming, compact syntax without semicolons, first class variables, lists, objects and functions, automatic memory management, and cross-platform support. The language aims to provide high productivity for tasks like rapid application development, scripting, and building visual programming tools.
The Ring programming language version 1.10 book - Part 6 of 212Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses the motivations for creating Ring, which was to have a dynamic, small, and productive language for building applications and development environments. Ring draws influence from languages like Lua, Python, Ruby, C, C#, and BASIC. The document outlines the language's features, which include support for declarative and natural language programming, flexibility in syntax, portability across platforms, and automatic memory management.
The Ring programming language version 1.9 book - Part 6 of 210Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses Ring's motivation as aiming to be an innovative, practical language for building development environments and applications. Key features include support for natural language programming, declarative programming, object-oriented programming, and being small, portable, and dynamically typed. The document outlines Ring's influences from other languages and thanks to its creator.
This document provides notes on web programming unit 2 prepared by Bhavsingh Maloth. It discusses the history and objectives of JavaScript, defining it as a scripting language used to add interactivity to HTML pages. JavaScript can be divided into core, client-side, and server-side components. Core JavaScript is the basis of the language, while client-side JavaScript supports browser controls and user interactions. Server-side JavaScript makes the language useful on web servers. The document also provides examples of how to write text, insert scripts, and use variables in JavaScript.
This document discusses factors to consider when selecting a programming language for a project. It outlines dimensions for selection like capabilities, productivity, and costs. Key criteria include whether the language can meet expectations, development costs, ramp up time, and community support. The document also evaluates common languages like Java, PHP, Python and Ruby based on their strengths and weaknesses. It predicts trends in language popularity and adoption of functional programming concepts.
COMPUTER LANGUAGES AND THERE DIFFERENCE Pavan Kalyan
In this ppt you will understand the difference among languages and You will know what is necessary for a language to become best in the present software filed
The document discusses various programming languages and program development tools. It differentiates between low-level languages like machine language and assembly language, and high-level procedural languages like C and COBOL. It also covers object-oriented languages like Java, C++, and C#, visual programming languages, and fourth generation languages (4GLs) like SQL. The document also lists the six common steps in program development and describes the basic control structures of sequence, selection, and repetition used in programming.
This document provides an introduction and overview of the Swift programming language. It discusses the background and origins of Swift, describing how it was developed by Apple as a modern programming language building upon C and Objective-C. The document outlines the objectives and significance of studying Swift, covering some of its key features that have contributed to its success such as safety, readability, and performance. It also describes the scope and limitations of the material presented.
This document provides an overview of programming fundamentals with C++. It discusses basic concepts like computer programs, software, SDLC, programming languages, programmers, translators, source and object code, and the fetch-decode-execute cycle. It also covers basic concepts of C++ like what C++ is, the differences between C and C++, a brief history of C++, popular IDEs for C++, and the basic structure of a C++ program. The document concludes with references for further learning about C++ programming.
Swift is a new programming language developed by Apple as a replacement for Objective-C. It incorporates modern programming language design and borrows concepts from other languages like Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and more. Swift code is compiled with the LLVM compiler to produce optimized native code and works seamlessly with existing Objective-C code and Cocoa frameworks. It focuses on performance, safety, and ease of use through features like type safety, modern control flow syntax, and interactive playgrounds.
Programming languages and concepts by vivek pariharVivek Parihar
This presentation is concerned with the study of programming language paradigms, that is the various systems of ideas that have been used to guide the design of programming languages. These paradigms are realized to a greater or lesser extent in various computer languages, although the design of a given language may reflect the influence of more than one paradigm.
Programming Languages Categories / Programming Paradigm By: Prof. Lili Saghafi Professor Lili Saghafi
A programming language is a notation designed to connect instructions to a machine or a computer.
Programming languages are mainly used to control the performance of a machine or to express algorithms.
At present, thousands of programming languages have been implemented.
In the computer field, many languages need to be stated in an imperative form, while other programming languages utilize declarative form.
The program can be divided into two forms such as syntax and semantics.
Ruby is a dynamic, object-oriented programming language used for web development. It has a clean syntax that is easy to learn. Ruby Mine is a popular integrated development environment for Ruby that runs on Windows, MacOS, and Linux. To install Ruby Mine, you download it, complete the initial configuration, and can then create new Ruby projects or open existing files. Ruby has advantages like rapid development but can be slower than some other languages.
ava and Python are two of the most popular and powerful programming languages of present time. Both
of them are Object-Oriented programming languages with unique advantages for developers and end
users. Given the features of Python and how it is related to emerging fields in computer science such as
Internet of Things, Python is considered a strong candidate of becoming the main programming language
for academia and industry in the near future. In this paper, we develop JPT, which is a translator that
converts Java code into Python. Our desktop application takes Java code as an input and translates it to
Python code using XML as an intermediate language. The translator enables this conversion instead of
having to rewrite the whole Python program from start. We address a number of cases where the
translation process is challenging and highlight cases where manual inspection is recommended.
This document provides an introduction to the Perl programming language. It begins with an overview of Perl, including what Perl is, its history and key features. It then discusses Perl syntax, variables types (scalars, arrays and hashes), and other important Perl concepts like variable scoping and context. The document also provides examples of basic Perl programs and commands.
This document discusses key features of the Java programming language that make it widely used. It explains that Java is write once run anywhere, as programs can run on any platform that has a Java Virtual Machine. It also describes Java as simple to write and debug, with features like automatic memory management, strong exception handling, and type checking. The document outlines the four main characteristics of object-oriented programming - inheritance, encapsulation, polymorphism, and dynamic binding - and how Java fully embraces these principles.
Java v/s .NET is an age old debate! We have compared both Java and .NET on parameters like technical performance and future scope. NIIT provides certification courses for both Java and .NET. View our presentation and choose which course to enrol for at NIIT!
The document discusses various scripting languages including Ruby, Perl, and TCL. It covers the basics of each language as well as more advanced concepts like object-oriented programming in Ruby, regular expressions in Perl, and event-driven programming in TCL. The document also compares scripting languages to other programming languages and explores differences between languages like Ruby versus Java and Ruby versus Perl.
The Ring programming language version 1.7 book - Part 6 of 196Mahmoud Samir Fayed
Ring is an innovative, multi-paradigm programming language designed to be simple, small, flexible and fast. It supports imperative, object-oriented, functional and other paradigms. Ring's compiler compiles source code to bytecode, which is executed by the Ring Virtual Machine. The language was created to be highly productive for application development while also small and portable.
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
This document summarizes Ring, an innovative programming language designed to be simple, small, flexible and fast. Key features include a hybrid compiler and virtual machine, declarative and natural language programming, compact syntax without semicolons, first class variables, lists, objects and functions, automatic memory management, and cross-platform support. The language aims to provide high productivity for tasks like rapid application development, scripting, and building visual programming tools.
The Ring programming language version 1.10 book - Part 6 of 212Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses the motivations for creating Ring, which was to have a dynamic, small, and productive language for building applications and development environments. Ring draws influence from languages like Lua, Python, Ruby, C, C#, and BASIC. The document outlines the language's features, which include support for declarative and natural language programming, flexibility in syntax, portability across platforms, and automatic memory management.
The Ring programming language version 1.9 book - Part 6 of 210Mahmoud Samir Fayed
This document provides an overview and history of the Ring programming language. It discusses Ring's motivation as aiming to be an innovative, practical language for building development environments and applications. Key features include support for natural language programming, declarative programming, object-oriented programming, and being small, portable, and dynamically typed. The document outlines Ring's influences from other languages and thanks to its creator.
This document provides notes on web programming unit 2 prepared by Bhavsingh Maloth. It discusses the history and objectives of JavaScript, defining it as a scripting language used to add interactivity to HTML pages. JavaScript can be divided into core, client-side, and server-side components. Core JavaScript is the basis of the language, while client-side JavaScript supports browser controls and user interactions. Server-side JavaScript makes the language useful on web servers. The document also provides examples of how to write text, insert scripts, and use variables in JavaScript.
This document discusses factors to consider when selecting a programming language for a project. It outlines dimensions for selection like capabilities, productivity, and costs. Key criteria include whether the language can meet expectations, development costs, ramp up time, and community support. The document also evaluates common languages like Java, PHP, Python and Ruby based on their strengths and weaknesses. It predicts trends in language popularity and adoption of functional programming concepts.
COMPUTER LANGUAGES AND THERE DIFFERENCE Pavan Kalyan
In this ppt you will understand the difference among languages and You will know what is necessary for a language to become best in the present software filed
The document discusses various programming languages and program development tools. It differentiates between low-level languages like machine language and assembly language, and high-level procedural languages like C and COBOL. It also covers object-oriented languages like Java, C++, and C#, visual programming languages, and fourth generation languages (4GLs) like SQL. The document also lists the six common steps in program development and describes the basic control structures of sequence, selection, and repetition used in programming.
This document provides an introduction and overview of the Swift programming language. It discusses the background and origins of Swift, describing how it was developed by Apple as a modern programming language building upon C and Objective-C. The document outlines the objectives and significance of studying Swift, covering some of its key features that have contributed to its success such as safety, readability, and performance. It also describes the scope and limitations of the material presented.
This document provides an overview of programming fundamentals with C++. It discusses basic concepts like computer programs, software, SDLC, programming languages, programmers, translators, source and object code, and the fetch-decode-execute cycle. It also covers basic concepts of C++ like what C++ is, the differences between C and C++, a brief history of C++, popular IDEs for C++, and the basic structure of a C++ program. The document concludes with references for further learning about C++ programming.
Swift is a new programming language developed by Apple as a replacement for Objective-C. It incorporates modern programming language design and borrows concepts from other languages like Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and more. Swift code is compiled with the LLVM compiler to produce optimized native code and works seamlessly with existing Objective-C code and Cocoa frameworks. It focuses on performance, safety, and ease of use through features like type safety, modern control flow syntax, and interactive playgrounds.
Programming languages and concepts by vivek pariharVivek Parihar
This presentation is concerned with the study of programming language paradigms, that is the various systems of ideas that have been used to guide the design of programming languages. These paradigms are realized to a greater or lesser extent in various computer languages, although the design of a given language may reflect the influence of more than one paradigm.
Programming Languages Categories / Programming Paradigm By: Prof. Lili Saghafi Professor Lili Saghafi
A programming language is a notation designed to connect instructions to a machine or a computer.
Programming languages are mainly used to control the performance of a machine or to express algorithms.
At present, thousands of programming languages have been implemented.
In the computer field, many languages need to be stated in an imperative form, while other programming languages utilize declarative form.
The program can be divided into two forms such as syntax and semantics.
Ruby is a dynamic, object-oriented programming language used for web development. It has a clean syntax that is easy to learn. Ruby Mine is a popular integrated development environment for Ruby that runs on Windows, MacOS, and Linux. To install Ruby Mine, you download it, complete the initial configuration, and can then create new Ruby projects or open existing files. Ruby has advantages like rapid development but can be slower than some other languages.
ava and Python are two of the most popular and powerful programming languages of present time. Both
of them are Object-Oriented programming languages with unique advantages for developers and end
users. Given the features of Python and how it is related to emerging fields in computer science such as
Internet of Things, Python is considered a strong candidate of becoming the main programming language
for academia and industry in the near future. In this paper, we develop JPT, which is a translator that
converts Java code into Python. Our desktop application takes Java code as an input and translates it to
Python code using XML as an intermediate language. The translator enables this conversion instead of
having to rewrite the whole Python program from start. We address a number of cases where the
translation process is challenging and highlight cases where manual inspection is recommended.
This document provides an introduction to the Perl programming language. It begins with an overview of Perl, including what Perl is, its history and key features. It then discusses Perl syntax, variables types (scalars, arrays and hashes), and other important Perl concepts like variable scoping and context. The document also provides examples of basic Perl programs and commands.
This document discusses key features of the Java programming language that make it widely used. It explains that Java is write once run anywhere, as programs can run on any platform that has a Java Virtual Machine. It also describes Java as simple to write and debug, with features like automatic memory management, strong exception handling, and type checking. The document outlines the four main characteristics of object-oriented programming - inheritance, encapsulation, polymorphism, and dynamic binding - and how Java fully embraces these principles.
Java v/s .NET is an age old debate! We have compared both Java and .NET on parameters like technical performance and future scope. NIIT provides certification courses for both Java and .NET. View our presentation and choose which course to enrol for at NIIT!
The document discusses various scripting languages including Ruby, Perl, and TCL. It covers the basics of each language as well as more advanced concepts like object-oriented programming in Ruby, regular expressions in Perl, and event-driven programming in TCL. The document also compares scripting languages to other programming languages and explores differences between languages like Ruby versus Java and Ruby versus Perl.
Programming language is the most important part of the computer science world. so if want to make your carrier in the world of computer science you must have to learn programming languages.
By this slide m providing you some guidelines about top programming languages that are mostly used these time.
the advantages and disadvantages of that programming languages
and the applications of it.
if you want learn programming language then visit the no. 1 website for programming language.
website- https://programmingshark.com/
Information about the level of programming language, types of programming language, the principal paradigms, few programming languages, criteria for good language.
This document provides an overview of C# and .NET Framework. It discusses the history and features of C#, how it is based on C++ and Java but with additional extensions. It also summarizes the components of .NET Framework including Common Language Runtime, Framework Class Library, Common Intermediate Language, Garbage Collector, and Just-In-Time Compiler. Finally, it briefly introduces Visual Studio as an integrated development environment for C# development.
This document provides an overview of C# and .NET Framework. It discusses the history and evolution of C#, its uses for applications like mobile, web and games. It describes key features of C# like being object-oriented, type safe and having a rich library. It also explains components of .NET Framework like Common Language Runtime, Framework Class Library and Garbage Collector. It introduces Visual Studio as an integrated development environment for C# development.
This document provides an overview of several popular programming languages:
1. BASIC was created in 1963 by John Kemen and Thomas Kurtts for use by students with little programming experience. It aimed to be simple and allow users to solve problems without extensive computer knowledge.
2. Visual Basic combines procedures and object-oriented elements. It is intended for developing Windows applications and prototypes.
3. Pascal was created by Niklaus Wirth in 1968-1969 to promote good programming style using structured programming and data. It became widely used in education and industry.
4. C was developed at Bell Labs in the early 1970s for use in the UNIX operating system. It became very popular for systems software and
Perl is a scripting language originally developed for text manipulation and report generation. It is now used for a variety of purposes including web development, GUI development, and system administration. Perl scripts are interpreted, providing ease of use and rapid development at the cost of efficiency. Perl supports features like regular expressions, strings, arrays, references, and modules that make it well-suited for tasks like extracting information from files and converting text from one format to another.
This document provides an overview of principles of programming languages. It discusses definitions of programming languages and why they are studied. It covers the history of major languages from 1951 to present. It describes different language paradigms like imperative, functional, logic-based, and object-oriented. It also discusses attributes of good languages, issues in language design and translation, and the structure and operation of computers.
The Ring programming language version 1.5.1 book - Part 173 of 180 Mahmoud Samir Fayed
- Ring is designed based on a need to develop a new version of the PWCT software. Once completed, PWCT 2.0 will be a large software developed using Ring.
- Ring aims to push declarative and natural programming paradigms further. Future versions plan to present a new paradigm for network programming and concurrency based on prototypes.
- The documentation discusses reasons for Ring's design decisions like weakly typed features, focus on UI creation, and advantages over other languages like its support for mixing paradigms.
The document provides an overview of the Core Java training report. It discusses the history and evolution of Java from earlier languages like C and C++. It describes key Java concepts like data types, variables, tokens, operators, and separators. It also compares features of Java and C++. The document serves as an introduction to the Java programming language.
Code, ci, infrastructure - the gophers wayAlex Baitov
The presence of golang. Golang becomes pretty powerful. There are plenty of everyday golang tools. I will show you that we built infrastructure mostly consists of tools written on one language - golang. What benefits did we gain from writing an application on the language of its infrastructure. And I will describe how we use golang in production.
Top programming Languages in software Industry companiesKiran Patil
top Programming Languages used in software companies,features of all programming languages,java,
JavaScript,PHP, C# ,Typescript ,Best Programming Language
Top Salary based on Programming skill ,
current Running Tools and Technology in Market
Android use for Mobile Application
AngularJS is used for Many web/mobile Application
PHP and Python are most trending languages
Are you responsible for developing satellite on-board software? Are you the Dutch government and you have to efficiently implement the public benefits law? Are you a healthcare startup, developing companion apps that help patients through a treatment? Are you an insurance company struggling to create new, and evolve existing products quickly to keep up with the market? These are all examples of organisations who have built their own domain-specific programming language to streamline the development of applications that have a non-trivial algorithmic core. All have built their languages with Jetbrains MPS, an open source language development tool optimized for ecosystems of collaborating languages with mixed graphical, textual, tabular and mathematical notations. This talk has four parts. I start by motivating the need for DSLs based on real-world examples, including the ones above. I will then present a few high-level design practices that guide our language development work. Third, I will develop a simple language extension to give you a feel for how MPS works. And finally, I will point you to things you can read to get you started with your own language development practice.
The Ring programming language version 1.3 book - Part 81 of 88Mahmoud Samir Fayed
This document provides documentation for Ring version 1.3. It includes documentation for several Ring classes like QMdiSubWindow, QCursor, QListView, QAxObject, and QUuid. For each class, it lists the class name, a C++ reference link, parent class if applicable, and method signatures. It also includes a section on frequently asked questions about Ring that addresses questions about the motivation and advantages of Ring compared to other languages.
This document discusses different programming paradigms and languages. It describes batch programs which run without user interaction and event-driven programs which respond to user events. It lists many popular programming languages from Machine Language to Java and C#, and describes low-level languages that are close to machine code and high-level languages that are more human-readable. It also discusses language translators like compilers, interpreters, and assemblers and how they convert code between languages. Finally, it covers testing, debugging, and different types of errors in code like syntax, semantic, and run-time errors.
This document discusses different programming paradigms and languages. It describes batch programs which run without user interaction and event-driven programs which respond to user events. It lists many popular programming languages from Machine Language to Java and C#, and describes low-level languages that are close to machine code and high-level languages that are more human-readable. It also discusses the different types of language translators like compilers, interpreters, and assemblers and how they convert code between languages. Finally, it covers testing, debugging, and different types of errors in programming.
The Ring programming language version 1.2 book - Part 77 of 84Mahmoud Samir Fayed
Ring is designed based on a need to develop a new version of the PWCT (Programming Without Coding Technology) software. It aims to push declarative and natural programming paradigms forward. While still in early stages, Ring learns from languages like Python, Ruby, Lua and aims to provide a simple yet powerful multi-paradigm language. The documentation discusses Ring's goals, differences from other languages, and answers some common questions about its design choices.
The document discusses different types of computer languages and platforms. It provides tables listing popular programming languages, their developers, and release years. It also compares procedural programming languages like C with object-oriented languages like C++, and discusses low-level vs high-level languages. Platforms for languages like Java, .NET, and C# are examined. The document provides information on a variety of programming topics in a structured format.
Similar to The Ring programming language version 1.6 book - Part 6 of 189 (20)
The Ring programming language version 1.10 book - Part 212 of 212Mahmoud Samir Fayed
This document summarizes new features and changes in different versions of the Ring programming language and library. It discusses various topics including using different syntax styles and code editors, developing graphical desktop and mobile applications using RingQt, and using Ring for 3D graphics and games development. The document also provides overviews of the core Ring libraries and language features.
The Ring programming language version 1.10 book - Part 211 of 212Mahmoud Samir Fayed
This document provides documentation for the Ring programming language and various Ring extensions and libraries. It includes sections on Ring mode for Emacs editor, the Ring Notepad IDE, the Ring Package Manager (RingPM), embedding Ring code in C/C++ programs, and references for the functions and classes of various Ring extensions for areas like 2D/3D graphics, networking, multimedia and more.
The Ring programming language version 1.10 book - Part 210 of 212Mahmoud Samir Fayed
This document contains summaries of various Ring classes, functions and concepts:
- It describes Ring classes like the Map, Math, MySQL, and PostgreSQL classes.
- It lists and briefly explains Ring standard library functions such as map(), random(), newlist(), and print().
- It covers Ring concepts and features like object oriented programming, operators, files and I/O, GUI programming, and web development.
The Ring programming language version 1.10 book - Part 208 of 212Mahmoud Samir Fayed
This document provides a summary of functions in the Ring documentation for Release 1.10. It lists functions for drawing quadrics, normals, orientation, and textures. It also lists functions for scaling images, drawing spheres, starting and ending contours and polygons for tessellation, setting tessellation normals and properties, adding tessellation vertices, and unprojecting coordinates. The document also provides resources for the Ring language like the website, source code repository, contact information, and lists Arabic language resources.
The Ring programming language version 1.10 book - Part 207 of 212Mahmoud Samir Fayed
This document contains listings of over 100 OpenGL functions related to lighting, materials, textures, and rendering. The functions listed specify parameters for lights, materials, texture coordinates, and rendering operations like clearing buffers and drawing primitives.
The Ring programming language version 1.10 book - Part 205 of 212Mahmoud Samir Fayed
This document lists numerous OpenGL constants and enumerations related to textures, blending, shaders, buffers, and other graphics features. It includes constants for texture types and formats, shader variable types, buffer bindings and usages, and more. The listing contains over 200 individual constants and enumerations without descriptions.
The Ring programming language version 1.10 book - Part 206 of 212Mahmoud Samir Fayed
The document lists OpenGL functions and constants added in version 1.10 of the OpenGL specification. It includes over 100 functions and constants for features such as unsigned integer textures, texture buffers, geometry shaders, transform feedback, and more robust context handling.
The Ring programming language version 1.10 book - Part 203 of 212Mahmoud Samir Fayed
The document contains a list of functions and constants related to OpenGL graphics functionality. It includes functions for vertex specification, texture mapping, tessellation, nurbs modeling, quadric surfaces, and more. It also includes constants for OpenGL states, modes, and error codes.
The Ring programming language version 1.10 book - Part 202 of 212Mahmoud Samir Fayed
The document lists over 100 OpenGL functions for querying and retrieving information about OpenGL objects, state, and errors. Some of the functions listed include glGetError() to retrieve OpenGL error codes, glGetUniformLocation() to retrieve the location of a uniform variable in a program, and glGetString() to retrieve version and extension information.
The Ring programming language version 1.10 book - Part 201 of 212Mahmoud Samir Fayed
The document lists various OpenGL constants and functions related to OpenGL graphics functionality. It includes constants for texture and color formats, clipping planes, buffer objects, shader operations, and more. It also lists over 100 OpenGL function declarations for operations like drawing, clearing, texture handling, blending, and shader manipulation.
The Ring programming language version 1.10 book - Part 200 of 212Mahmoud Samir Fayed
This document lists numerous OpenGL constants related to graphics hardware capabilities, state variables, and functions. It includes constants for vertex arrays, texture mapping, blending, multisampling, shader types, and more. The constants are used to query and set the state and capabilities of the OpenGL graphics processing context.
The Ring programming language version 1.10 book - Part 199 of 212Mahmoud Samir Fayed
The document lists over 200 OpenGL constants related to graphics rendering features such as fog, depth testing, blending, textures, and more. It provides the names of constants for configuring various graphics pipeline states and settings in OpenGL.
The Ring programming language version 1.10 book - Part 198 of 212Mahmoud Samir Fayed
The document contains listings of over 100 OpenGL and GLU function declarations related to texture coordinates, uniforms, vertex specification, and tessellation. It provides the function name, return type if any, and parameters for each function for specifying texture coordinates, uniforms, vertices and performing tessellation in OpenGL and GLU.
The Ring programming language version 1.10 book - Part 197 of 212Mahmoud Samir Fayed
The document contains documentation for over 100 OpenGL functions related to rendering, textures, shaders, and more. It lists each function name and its parameters. The functions allow specifying colors, textures, shader programs, and various rendering states and operations in OpenGL.
The Ring programming language version 1.10 book - Part 196 of 212Mahmoud Samir Fayed
This document lists OpenGL constants and functions related to graphics rendering. It includes constants for buffer types, shader data types, texture types, and more. It also lists function prototypes for common OpenGL operations like drawing, clearing, binding textures and buffers, and setting shader uniforms.
The Ring programming language version 1.10 book - Part 195 of 212Mahmoud Samir Fayed
The document lists over 200 OpenGL constants related to textures, vertex arrays, blending, and buffer objects. It provides reference documentation for OpenGL version 1.10 including constants for texture formats and parameters, vertex attribute types, blending functions, and buffer usage flags.
The Ring programming language version 1.10 book - Part 194 of 212Mahmoud Samir Fayed
The document lists various constants used in OpenGL such as GL_FOG_BIT, GL_DEPTH_BUFFER_BIT, GL_ACCUM, and others related to OpenGL rendering, blending, textures, lighting, and more. It provides definitions for OpenGL enums and related values.
The Ring programming language version 1.10 book - Part 193 of 212Mahmoud Samir Fayed
This document lists over 100 OpenGL functions for specifying textures, lighting, shaders, and other graphics operations. The functions include glMultiTexCoord2iv() for specifying texture coordinates, glNormal3f() for specifying normals, and glUniform1f() for specifying shader uniforms.
The Ring programming language version 1.10 book - Part 192 of 212Mahmoud Samir Fayed
This document lists OpenGL functions and constants that were added or changed in OpenGL version 1.10. It includes over 150 new OpenGL constants for features such as geometry shaders, transform feedback, cube map arrays, and more. It also lists over 80 OpenGL functions, providing their parameters and types.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfUndress Baby
The quest for the best AI face swap solution is marked by an amalgamation of technological prowess and artistic finesse, where cutting-edge algorithms seamlessly replace faces in images or videos with striking realism. Leveraging advanced deep learning techniques, the best AI face swap tools meticulously analyze facial features, lighting conditions, and expressions to execute flawless transformations, ensuring natural-looking results that blur the line between reality and illusion, captivating users with their ingenuity and sophistication.
Web:- https://undressbaby.com/
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
SOCRadar's Aviation Industry Q1 Incident Report is out now!
The aviation industry has always been a prime target for cybercriminals due to its critical infrastructure and high stakes. In the first quarter of 2024, the sector faced an alarming surge in cybersecurity threats, revealing its vulnerabilities and the relentless sophistication of cyber attackers.
SOCRadar’s Aviation Industry, Quarterly Incident Report, provides an in-depth analysis of these threats, detected and examined through our extensive monitoring of hacker forums, Telegram channels, and dark web platforms.
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
The Ring programming language version 1.6 book - Part 6 of 189
1. Ring Documentation, Release 1.6
Java & C# are avoided for some reason too! I wanted to use a dynamic programming language and these languages are
static typing, Java is multi-platform, also C# through Mono, but the use of huge number of classes and forcing the use
of Object-Orientation, using a verbose language is not right for me. I need a small language, but fast and productive,
also I need better control on the Garbage Collector (GC), I need a better one that is designed for fast applications.
Lua is small and fast, but it’s avoided because I need more powerful language for large applications.
PHP is a Web programming language and it’s syntax is very similar to C, this leads to a language not general as I want
and not simple as I need to have.
Python & Ruby are more like what I need, but I need something more simple, smaller, faster & productive.
Python and Ruby are Case-Sensitive, the list index start counting from 0, you have to define the function before calling
it, Ruby usage of Object-Orientation and message passing is more than what I need and decrease performance, Python
syntax (indentation, using self, :, pass & _) is not good for my goals.
All of these languages are successful languages, and very good for their domains, but what I need is a different
language that comes with new ideas and intelligent implementation (Innovative, Ready, Simple, Small, Flexible and
Fast).
2.2 Ring and other languages
Ring is an innovative programming language that 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.
Also Ring is influenced by the next programming languages
• Lua
• Python
• Ruby
• C
• C#
• BASIC
• QML
• xBase
• Supernova
2.3 History
In Sept. 2013 I started the design and the implementation of the Ring programming language. After 21 months of
development, In May 2015 the language Compiler & Virtual Machine were ready for use!
After that I spent three months testing the language again, trying to discover any bug to fix, writing better tests, by
the end of August 2015, all know bugs were fixed, Writing many tests and testing automation helped a lot in getting a
stable product.
In September 12, 2015, most of the documentation was written. Before releasing the language I started the marketing
by writing a post in Arabic language about it to my facebook profile page asking for contributors interested in the
language idea after reading a short description, In the same day I got a lot of emails from developers and friends
interested to contribute!
2.2. Ring and other languages 23
2. Ring Documentation, Release 1.6
Ring 1.0 is released on January 25, 2016
Ring 1.1 is released on October 6, 2016
Ring 1.2 is released on January 25, 2017
Ring 1.3 is released on May 15, 2017
Ring 1.4 is released on June 29, 2017
Ring 1.5 is released on August 21, 2017
Ring 1.6 is released on November 30, 2017
2.4 Features
The Ring language comes with the next features
Tip: The language is ready for production!
• Free Open Source (MIT License)
• Hybrid Implementation (Compiler + Virtual Machine)
• Declarative programming on the top of Object-Oriented programming
• Natural Language programming on the top of Object-Oriented programming
• Syntax Flexibility (You can change the language keywords and operators)
• Compact Syntax, No explicit end for statements (No ; or ENTER is required)
• Using braces { } we can access objects and use attributes/methods as variables/functions
• Transparent Implementation
• Visual Implementation - Developed using Visual Programming (PWCT)
• A small language
– The compiler + The Virtual Machine are 15,000 lines of C code
– The other 500,000 lines of code are related to libraries!
• Writen in ANSI C (The code is generated)
• 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
2.4. Features 24
3. Ring Documentation, Release 1.6
• 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
• 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, SQLite & MySQL)
2.4. Features 25
4. Ring Documentation, Release 1.6
• Security Functions (OpenSSL)
• Internet Functions (LibCurl)
• Zip Functions
• 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 LibSDL by creating RingLibSDL
– Used to Support Qt by creating RingQt
• Create 2D Games for Desktop and Mobile (Using the Allegro Library or the LibSDL Library)
• Comes with simple Game Engine for 2D Games
• Support FreeGLUT and OpenGL for 3D Graphics
• Create GUI Applications for Desktop and Mobile (Using the Qt Framework)
• Comes with IDE contains the Code Editor (Ring Notepad) and the Form Designer
• Comes with Ring2EXE to distribute applications
2.5 License
The Ring Programming Language
http://ring-lang.net/
Version 1.6
The MIT License (MIT)
Copyright (c) Mahmoud Fayed
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documen-
tation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use,
2.5. License 26
5. Ring Documentation, Release 1.6
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom
the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PAR-
TICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFT-
WARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2.5. License 27
6. CHAPTER
THREE
LANGUAGE DESIGN
In this chapter we will learn about the basic concepts behind the language design.
3.1 Why Ring?
The language is simple, trying to be natural, encourage organization and comes with transparent and visual implemen-
tation. 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. It is very small, fast and comes with smart garbage
collector that puts the memory under the programmer control. It supports many programming paradigms, comes with
useful and practical libraries. The language is designed for productivity and developing high quality solutions that can
scale.
3.2 Designed for a Clear Goal
• 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.
3.3 Simple
Ring is a very simple language, and has a very straightforward syntax. It encourages programmers to program without
boilerplate code
See "Hello, World!"
The Main function is optional and will be executed after the statements, and is useful for using the local scope.
Func Main
See "Hello, World!"
28
7. Ring Documentation, Release 1.6
Uses Dynamic Typing and Lexical scoping. No $ is required before the variable name! You can use the ‘+’ operator
for string concatenation and the language is weakly typed and will convert automatically between numbers and strings
based on the context.
nCount = 10 # Global variable
Func Main
nID = 1 # Local variable
See "Count = " + nCount + nl + " ID = " + nID
3.4 Trying to be natural
Ring is not case-sensitive
See "Enter your name ? "
Give name
See "Hello " + Name # Name is the same as name
The list index starts from 1
aList = ["one","two","three"]
See aList[1] # print one
Call functions before definition
one()
two()
three()
Func one
See "One" + nl
Func two
See "two" + nl
Func three
See "three" + nl
The assignment operator uses Deep copy (no references in this operation)
aList = ["one","two","three"]
aList2 = aList
aList[1] = 1
see alist[1] # print 1
see aList2[1] # print one
Pass numbers and strings by value, but pass lists and objects by reference. The for in loop can update the list items.
Func Main
aList = [1,2,3]
update(aList)
see aList # print one two three
Func update aList
for x in aList
switch x
on 1 x = "one"
on 2 x = "two"
on 3 x = "three"
off
next
3.4. Trying to be natural 29
8. Ring Documentation, Release 1.6
Using Lists during definition
aList = [ [1,2,3,4,5] , aList[1] , aList[1] ]
see aList # print 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Exit from more than one loop
for x = 1 to 10
for y = 1 to 10
see "x=" + x + " y=" + y + nl
if x = 3 and y = 5
exit 2 # exit from 2 loops
ok
next
next
3.5 Encourage Organization
The language encourage organization, Forget bad days using languages where the programmer start with function then
class then function and a strange mix between things!
Each source file follow the next structure
• Load Files
• Statements and Global Variables
• Functions
• Packages and Classes
This enable us to use Packages, Classes and Functions without the need to use a keyword to end these components.
We can write one line comments and multi-line comments The comment starts with # or // Multi-line comments are
written between /* and */
/*
Program Name : My first program using Ring
Date : 2015.05.08
*/
See "What is your name? " # print message on screen
give cName # get input from the user
see "Hello " + cName # say hello!
// See "Bye!"
3.6 Compact Syntax
The language is not line sensitive, you don’t need to write ; after statements, also you don’t need to press ENTER or
TAB, so we can write the next code
See "The First Message" See " Another message in the same line! " + nl
See "Enter your name?" Give Name See "Hello " + Name
The next code create a class called Point contains three attributes X,Y and Z. No keywords is used to end the pack-
age/class/function definition. Also, we can write the attributes names directly below the class name.
3.5. Encourage Organization 30
9. Ring Documentation, Release 1.6
Class Point X Y Z
We can use classes and functions before their definition, In this example we will create new object, set the object
attributes then print the object values.
o1 = New point o1.x=10 o1.y=20 o1.z=30 See O1 Class Point X Y Z
Instead of using the dot ‘.’ operator to access the object attributes and methods we can use braces { } to access the
object, then we can use the object attributes and methods.
o1 = New point { x=10 y=20 z=30 } See O1 Class Point X Y Z
Now we will call a method after accessing the object using { }
oPerson = new Person
{
Name = "Somebody"
Address = "Somewhere"
Phone = "0000000"
Print() # here we call the Print() method
}
Class Person Name Address Phone
Func Print
See "Name :" + name + nl +
"Address :" + Address + nl +
"Phone : " + phone + nl
When we use { } to access the object then write any attribute name, the language will check the class for any set-
ter/getter methods that will be called automatically.
New Number {
See one # Execute GetOne()
See two # Execute GetTwo()
See three # Execute GetThree()
}
Class Number one two three
Func GetOne
See "Number : One" + nl
return 1
Func GetTwo
See "Number : Two" + nl
return 2
Func GetThree
See "Number : Three" + nl
return 3
3.7 Define Natural Statements
After the object access using { } if the class contains a method called BraceEnd() it will be executed!
TimeForFun = new journey
# The first surprise!
TimeForFun {
Hello it is me # What a beatiful programming world!
}
# Our Class
Class journey
3.7. Define Natural Statements 31
10. Ring Documentation, Release 1.6
hello=0 it=0 is=0 me=0
func GetHello
See "Hello" + nl
func braceEnd
See "Goodbye!" + nl
We can execute code written in strings using the Eval() function
cCode = "See 'Code that will be executed later!' "
Eval(cCode) # execute the code to print the message
We can create a list then execute code generated from that list
aWords = ["hello","it","is","me"]
for word in aWords cCode=word+"=0" eval(cCode) next
We can read text files using the Read(cFileName) function and we can write files using the Write(cFileName,cString)
function.
See "Enter File Name:" Give cFileName See Read(cFileName) # Print the file content
The next example presents how to create a class that defines two instructions The first instruction is : I want window
The second instruction is : Window title = Expression Also keywords that can be ignored like the ‘the’ keyword
New App
{
I want window
The window title = "hello world"
}
Class App
# Attributes for the instruction I want window
i want window
nIwantwindow = 0
# Attributes for the instruction Window title
# Here we don't define the window attribute again
title
nWindowTitle = 0
# Keywords to ignore, just give them any value
the=0
func geti
if nIwantwindow = 0
nIwantwindow++
ok
func getwant
if nIwantwindow = 1
nIwantwindow++
ok
func getwindow
if nIwantwindow = 2
nIwantwindow= 0
see "Instruction : I want window" + nl
ok
if nWindowTitle = 0
nWindowTitle++
3.7. Define Natural Statements 32