Wednesday, June 1, 2011

Converge 1.2

A new version of the "alpha" stage or phase of the Converge programming language is available: version 1.2 at convergepl.org from Laurie Tratt.

Converge is a pythonic version of Icon (or UNICON or ObjectIcon) if you will - which is curious as Python generators probably come from Ralph Griswold and others' Icon programming language. It is prototype-based with goal-directed evaluation and generators.

Converge shares with its predecessors more than generators: it is something of a logic language almost in the way that Erlang is almost an LP.  Converge uses success/failure instead of true/false and unlike the processes of Erlang, uses co-routines which can be reset.

These Icon-ic languages could be called string-oriented (and ObjectIcon is also UNICODE compliant) and descend from the efforts to replace SNOBOL4 - itself perhaps the first unintended "free" language for processing text as string data.

Converge provides an alternative to macros in the form of compile-time meta-programming.  As with macros in other languages, a substitution occurs, but these CTMP substitutions are specific to this language (relying on the AST) but are called with an explicit splicing notation (in this regard I prefer Curl from www.curl.com) - they are documented with both the binary downloads and in the GIT codebase. Note: the substitutions occur before the VM has generated instructions.

In the years since the GOTO of SNOBOL was rejected by academics, layers of goto have crept into the mainstream languages first as exception handling jumps and then as aspects or as labeled break statements.

An ICON language continues to be used by one large USA agency (if one can infer from budget disclosures.)

At this time there are two mature ICON variants: Icon 9.5 and Unicon 11.7 (both freeware.)

My own preference at the moment is ObjectIcon 2.4 but if you like prototype-based over class-based then you may want to stay close to the Converge project - I know I will.

No comments: