is an easy-to-learn procedural programming language designed to be used in scientific, educational, linguistic, graphical, and many other applications, including scripting.
What is Agena ?
Agena is an easy-to-learn procedural programming language designed to be used in scientific, educational, linguistic, graphical, and many other applications, including scripting.
What can you do with Agena ?
Agena provides you with all the means you need to implement your ideas quickly: fast real and complex arithmetics, efficient text processing, graphics, flexible data structures, intelligent procedures, simple package management, plus various configuration facilities in multi-user environments.
You can download installers for Mac OS X, Windows, Linux, OS/2 and eComStation, Solaris, Haiku, and DOS.
What is AgenaEdit ?
Agena is shipped with a simple editor called AgenaEdit featuring syntax-highlighting and an integrated Agena environment.
How does Agena's syntax look like ?
The syntax resembles very simplified Algol 68 with elements taken from Maple, Lua and SQL. Click here to take a tour.
How has it been implemented ?
Agena is based on the ANSI C source code of Lua, a popular and widely used Open Source programming language. AgenaEdit is based on an editor created by Bill Spitzak and others for FLTK 1.1.
What does the name Agena mean ?
Agena is the second brightest star in the constellation Centaurus, and the name of an unmanned target vehicle used in the 1960s during NASA's Gemini missions.
Agena offers various flow control facilities such as
* if/then/elif/else conditions,
* case of/else conditions similar to C's switch/case statements,
* is operator to return alternative values,
* numerical for/from/to/by loops where start, stop, and step values are optional, and automatic round-off error correction of iteration variables,
* combined numerical for/while loops,
* for/in loops over strings and complex data structures,
* while and do/as loops similar to Modula's while and repeat/until not() iterators,
* a skip statement to prematurely trigger the next iteration of a loop,
* a break statement to prematurely leave a loop,
* data type validation with the try/else statement and the optional double colon facility in parameter lists.
Data types provided are:
* rational and complex numbers, with extensions such as infinity and undefined,
* Booleans such as true, false, and fail,
* the null value meaning 'nothing',
* multi-purpose tables implemented as associative arrays to hold any kind of data, taken from Lua,
* Cantor sets as collections of unique items,
* sequences, i.e. vectors, to internally store items in strict sequential order,
* pairs to hold two values or pass arguments in any order to procedures,
* user-defined types for sequences, tables, and pairs to allow for special-purpose handling,
* threads, userdata, and lightuserdata inherited from Lua.
For performance, most basic operations on these types were built into the Agena kernel.
Procedures with full lexical scoping are supported, as well, and provide the following extensions:
* the << (args) -> expression >> syntax to easily define simple functions,
* remember tables to conduct recursion at high speed and at low memory consumption,
* remember tables for fast access to predefined results,
* user-defined types,
* the nargs system variable which holds the number of arguments actually passed to a procedure,
* metamethods inherited from Lua to define operations for tables, sets, sequences, and pairs.
Some other features are:
* graphical capabilities for the Solaris, Mac OS X, Linux, and Windows versions,
* an arbitrary precision mathematical library,
* easy configuration of your personal environment via the Agena initialisation file,
* an easy-to-use package system also providing a means to load a library and define short names for all package procedures at a stroke (with function),
* enumeration and multiple assignments,
* scope control via the scope/epocs keywords,
* the external switch to a numeric for loop to pass the last iteration value to its surrounding block,
* functions to support fast text processing (see in, replace, lower, and upper operators, as well as the functions in the strings and utils packages),
* the binio package to easily write and read files in binary mode,
* facility to store any Agena data to a file and read it back later into a new session (save and read functions),
* efficient statements for stack programming (insert/into and pop/from),
* undergraduate Calculus, Linear Algebra, and Statistics packages,
* bitwise operators,
* direct access to the file system,
* xBase file support (compliant to dBASE III) to exchange data with standard applications.