Flare is set to be the world's first annotative programming language
. As in some dialects of LISP
, programs and data are represented as linked lists
, in Flare programs and data are represented as XML
. XML is extensible
, meaning new sub-elements can be added to parent elements without interfering with the integrity
of existing data. Flare programs and data share these properties.
In Flare, you will be able to add metadata to existing data easily. While in some languages you can accomplish this with key/value pairs, all data in Flare can be annotated by adding metadata. This is one of the fundamental idioms of the language.
As well as annotation, Flare will support introspection and two-way references. You will be able to obtain a complete list of references to any Flare object. This is beyond garbage collection - trying to delete an object when references still exist to it will throw an exception. Introspection means you can query any object to see if a given property exists on it.
One final planned feature of Flare that is worth a mention is parallelism. The programmer will be able to give the interpretor the option of carrying out instructions in parallel rather than serially. For instance -
foo@.bar()@.baz() will call bar() on each element of list foo, then baz() on each result as it arrives.
This sort of parallelism may not be much use on today's computers, but if the computers of the future have multiple CPUs as standard and the software exists to take advantage of it, huge speed increases could ensue.
One final thing to note - writing Flare is not a case of typing in XML, it is a case of writing in FlareSpeak.