ELENA is a general-purpose, object-oriented, polymorphic language with late binding. It features multiple dispatching, context-dependent roles, dynamic inheritance and group object support.
Programs written in ELENA Language consist of a relatively large number of "tiny" objects where the level of interactions between objects is comparable with a level of inner-object calculations. To prevent the system becoming too complex to deal with the number of possible interactions between objects is limited. This approach allows eliminate "super" objects which in many cases make the program design too specialized and hard to modify.
ELENA treats any program as a set of objects (class instances). The program flow is a process of interaction between objects by sending each other messages. A message may have attached information (a message parameter). An object may react on message if it has an appropriate message handler (a method). If the object reacts on the message it is treaded as successful otherwise unsuccessful. In its turn the method sends messages to other objects and so on until the flow reaches the method written by external tools (meta method). So ELENA may be considered as a framework language defining rules for object interaction. Usually the object sends chain of messages where executing of every next message depends on the result of previous one. When one of messages is failed the chain considered as broken. It's possible to declare alternative chains which are executed if previous ones are broken.
Every object may be formed up with other objects characterizing its internal state. They in turn may be formed with others and so on until meta objects which internal states are considered as raw data.
· Pure polymorphic object oriented language
· "Horizontal" multiple inheritance
· Context dependant roles
· Dynamic "class mutation" ("annex / switch/ cast" handler)
· Multiple message dispatch
· ELENA Virtual machine (in developing)
· Command line 32-bit compiler
· GUI IDE & Debugger
· Unicode support
· Complete source code
· Number of samples, including a card game Up'N'Down (in development)
· Getting started tutorial
· Simple Assembler compiler
ELENA:binary incompatible due to critical bug fixes / new ecodesopen argument liststack allocated local variablemulty-select branchingELC:some output code optimizationCRITICAL BUG: dynamic array initializing[LIB]:CRITICAL BUG: fixed bug in GC algorithmextensions'mathsystem'dynamic: SelectorTapefixed bug: LiteralValue.equal&type'widestrSamples:console: datetime, matrix, textdb, translitrosseta code: ackermann, anagram, arithmeticint, arithmmean, arrayconcat, arraymode, associatearrays, bestshuffle, binary, bracketsElenaScript:script modified to support basic operationsopencalc: inline / default scripts