*** Welcome to piglix ***

Urbiscript

urbiscript
Paradigm multi-paradigm: object-oriented, event-driven, imperative, functional, procedural, reflective
Designed by Jean-Christophe Baillie
Developer Gostai et al.
First appeared 2003; 14 years ago (2003)
Stable release
2.7.4 / November 17, 2011; 5 years ago (2011-11-17)
Typing discipline duck, dynamic
OS Cross-platform
License BSD licenses
Filename extensions .u
Website github.com/urbiforge/urbi
Influenced by
C++, Self,Io

urbiscript is a programming language for robotics. It features syntactic support for concurrency and event-based programming. It is a prototype-based object-oriented scripting language. It is dynamic: name resolution is performed during the program execution (late binding); slots (member variables) can be added/removed at runtime, and even prototypes (superclasses) of an object can be changed at runtime.

Memory management is performed by reference counting.

Tightly bound to the Urbi platform it supports seamless integration of C++/Java components.

From the syntactical point of view, urbiscript belongs to the C-family of programming languages.

Its prototype-based object-oriented design was influenced by the Self and the Io programming languages.

It is designed to program, but also interact with robots; as such, it is influenced by Unix shells and other languages that provide a read-eval-print loop style interactive toplevel. However, contrary to others, there is no prompt for user input but answers from the system are prefixed by a timestamp (in milliseconds) between square brackets:

urbiscript statements include (among others):

Actually, contrary to most C-like languages and despite what the syntax suggests, statements "have a value", and therefore are expressions, provided they are embedded in braces:

In urbiscript, some control-flow constructs come in several "flavors": two types of sequential composition, and two types of concurrent composition. Under the hood, concurrency is implemented using coroutines.


...
Wikipedia

...