This blog is dedicated to Libretto, a dynamic general purpose object-oriented programming language, which has been developed by our team over several years.
While being a regular programming language, Libretto is based on two novel concepts:
- a ubiquitous (pervasive) context, and
- a sequence as a generalized value.
The combination of these concepts has allowed us to make a number of important things, in particular, to get rid of the notorious
null and the
foreach operators. Thanks to these concepts, we also introduce a number of new constructs like external fields, and offer a collection of various assignment operators, which provide flexible data processing.
From the very beginning Libretto was designed for multiplatform application development, so hopefully it is good for cloud computing. For this, we have made a number of things. In particular, we have defined a sub-language of Libretto (called LibrettoScript), which can work on the client side (via a compiler to JavaScript). This feature is powered by special tools for HTML and XML document handling. For instance, Libretto allows the programmer to work in an XPath-like style.
Libretto has been designed as a language, which provides flexible syntax customization. Syntactic sugar and other means allow the programmer to use Libretto as a workbench for developing her/his own domain specific languages.
Syntax flexibility is a feature that makes Libretto good for model-driven development. But here is another feature for advanced model-driven development, which is introduced in the language. We have proven mathematically that object models described in Libretto have strict logic semantics as theories in a simple description logic. In other words, we can directly use declarative Libretto programs as the logical descriptions of domains. Here we see exciting perspectives for distributed knowledge processing, and combining knowledge processing techniques with regular programming.
It has also been mathematically shown that there is a mapping, which for any relational database model generates a semantically equivalent Libretto object model. Based on this idea, a sub-language of Libretto (LIbrettoDB) has been defined, and supplied with a compiler to SQL. LibrettoDB provides database management in terms of object modeling.
Thanks to the features mentioned above, Libretto offers a unified environment for the development of complicated multicomponent and multiplatform applications, for instance, cloud computing projects. Instead of using a zoo of programming languages, you can solve within Libretto all the tasks on both the server and client sides.
So, we are convinced that Libretto provides better conditions for software development, debugging and maintaining:)
We are proud that recently the Libretto Project has become a resident of the
Skolkovo Innovation Centre:
------------------
In this blog I plan to provide you with a detailed overview of Libretto packed in 15 posts. I want to divide these posts into three groups – the basic Libretto constructs, computing in Lirbetto, and the Libretto standard library. Here is the contents. Its items will gradually become the links to the relevant posts: