Friday, December 24, 2010

Up'N'Down 0.1 is released

After more then two years I managed to release the first version of Up'N'Down game, the first "real" program written with ELENA.

http://sourceforge.net/projects/upndown/files/0.1/upndown-bin-0.1.zip/download

Monday, December 20, 2010

Weekly release: 1.5.6.4

There were several critical bug fixes (disabled debug mode crashes executable file, cirtical fix in $next keyword implementing, cirtical fix in the long integer constant implementation), a new class std'collections'dictionary and some minor changes in the language itself.

First, I'm continuing to re-factor ELENA API code. As you probably know the language features some formal rules regarding the method names. They consist of subject and verb. The number of verbs are limited and should be well-defined. As it appeared there is a two ambiguous verbs - do and run. So starting from 1.5.6.3 the code review is proceeding and as a result some of subjects were dropped (like literalinfo, memoryinfo and so on). The main goal is to make sure that the subject defines the method parameter (with exception for 'do' verb) rather then the operation. Another goal is to make sure that the subjects are reusable (which is not the case for the subject like literalinfo).

Second bug change deals with operators. The operators are normal methods with custom parsing order. The expression '2 + 3 * a int' is parsed like 2 + (3 * (a int)).
Because of they nature it was not possible to provide the operator with the subject.
As a result the use of operators was limited. Starting from 1.5.6.4 the operators are synonyms to 'normal' verbs:
'==' <=> 'equal'
'!=' <=> 'notequal
'+' <=> add
'?' <=> is

and so on.

Thursday, December 9, 2010

ELENA Programming Language: The Next Big Thing

I've started the project more than 10 years ago. I've made a decision to create my one language in the summer of 1999. I had a quite vague idea what it would be except the idea that it will be a pure object-oriented language with late binding (dynamic one). So at first I was occupied with technical tasks implementing the compiler. The syntax was not important (due to a LALR parser which gave me total freedom over it). Compiler-free linker was created and since that I was able to concentrate on the language itself. ELENA is a frame language actually, it doesn't implement the "real" code (like adding numbers, comparing strings and so on). So I was free from this as well and concentrated on experiments with different language models (still in object-oriented frames). In 2006 I published the project on the sourceforge site and since that the work was accelerated. In 2007 the modern-like syntax was introduced. In 1.2.0 (2008) the first dynamic features were introduced (context-dependant roles). In 1.2.5 the dynamic inheritance was introduced. The latest version 1.5.6 introduced the final version of method calling routine (subjects and verbs). So what will be a next big thing?

Starting from 1.5.7 I will start so-called "y project". It's main goal is to create a special meta language which will be a high level abstraction script for the language virtual machine (elenavm). Unlike "traditional" scripts it will be not imperative. In ideal case it should be set of instructions how to assemble (self-assemble) the set of objects (symbols in ELENA terms) which will be able to solve the problem (objects themselves are written in normal way). The test bed will be opencalc sample. With the help of vmconsole the programmer will be able to interact with the system by entering the script (actually recombining existing ones).

One could say, is it real or just a pipe dream? At the current moment it is hard to say. It is actually a manifest or declaration of intent. The direction I'm going to work on. But I hope the first result (probably very early) will be already seen in the 1.5.7 release. Time will say

Saturday, December 4, 2010

Weekly release: 1.5.6.3

What's new since 1.5.6.1:

1.5.6.2

- changed inline class implementation
- new symbol ext'io'TextReading
- fixed std'basic'memory:bugs with memory operations
- fixed critical bug with long number constant
- new project template - guivm
- new : std'patterns'Validation symbol
- new : sys'groups'StaticBroadCaster
- dynamic symbol loading
- new symbol sys'vm'loader

1.5.6.3
- drop support of streamable subject
- fixed matrix sample
- enum verb is obsolete, use run
- indexerloop symbol is obsolete - use index
- loop subject is obsolete
- new verb:rewind
- control-evaluate should be used intead of control-run
- control-run / control-rewind repeats the action while the result is true / false
- canvas: possible to select color and font

It is now possible to load dynamically symbols by their name (for vm clients)

Starting with 1.5.6.3 the work on ELENA API refactoring is started. The main focus would be methods named like xx'run and xx'do. At the moment there are too many such names.

As I wrote before ELENA introduces an original concept of method naming. Unlike many other languages the language proposes a formal rule for method naming. The normal method name consists of the subject and the verb. As it appeared there are too many methods with subject which in fact a gerund rather then a noun. So I will rename such methods to make the subjects more resusable. And some form of subject morphology is introduced: [subject]+ing <=>[subject] + for + action (e.g. range and ranging, list and listing).

So bsort sample is changed:
1.5.6.2:
- ctrl'IndexerLoop backwardloop'run &from:aLastIndex &till:0 &for:anArray &action:
1.5.6.3 (a new verb rewind):
- ctrl'IndexIterator ranging'rewind &for:anArray &till:aLastIndex &action

1.5.6.2:
- ctrl'IndexEnum loop'run &for:anArray &action:
1.5.6.3:
- ctrl'IndexEnum listing'run &for:anArray &action:

The subject loop is obsolete ( it is in fact a process rather then an object )