| Gamma < Software < Home |
| Gamma™ Programming Language |
Gamma implements Object Oriented Programming features which provide a single-inheritance class mechanism with instance variables and methods. Since Gamma is an interpreter, the object definitions are truly dynamic, allowing for run-time extensibility. Advanced Memory Management. Most run-time errors occur as a result of memory faults or memory leaks. In a traditional environment, more debugging time is spent on memory problems than any other kind of error. Gamma implements an advanced memory management system with garbage collection that eliminates memory bugs and leaks. Dynamic Scoping. Most compiled languages use lexical scoping, which means that a variable is defined only where it is visibly declared, either as an external global, file global, or local variable. Gamma uses dynamic scoping, meaning that a variable is defined in any function which defines it, and in any function which the defining function subsequently calls. This powerful mechanism allows the programmer to override global variables by defining them in a higher scope, and then calling a function which believes itself to be using a global variable. One useful side-effect of dynamic scoping is that functions and variables do not have to be declared before they are used in other functions. The function or variable only has to be declared when the other function is actually run. Active Values. An active value is a symbol which also carries code to be executed whenever its value changes. This is useful for adding side-effects to program variables. For example, it might be very useful to add a function which will update a Photon widget whenever a variable changes. Active values also make it possible to implement algorithms such as forward-chaining expert systems very easily. An active value is established by calling the add-set-function function. Lists. Gamma borrows the list data structure from its artificial intelligence roots to make data intensive operation easier. Since Gamma uses the SCADALisp engine, it inherits the rich set of list manipulation functions for which LISP is known. Timers. Timers are one of the easiest and most powerful features of Gamma. One line of Gamma code gives you one-shot, interval or time-of-day program timers. Dynamic Arrays. Another powerful feature of Gamma are dynamic arrays. To make an array in Gamma the developer can use either the array() or make-array() functions. The array() function creates a pre-built array while the make-array() function creates an empty array of a given size. If the programmer attempts to write to an element beyond the end of the array, the array will expand to accept the new element. This mechanism allows the programmer to approximate the size of the array, and then increase its size as necessary simply by using it. Gamma arrays are dynamically resized as they are used, making array over-runs and off-by-one errors a thing of the past. Error Handling. The error handling mechanism within Gamma allows you to trap any run-time error, including segmentation and floating point faults. You can then program escape strategies to deal with errors more effectively. There are two basic means of trapping and handling errors.
Gamma programs can be modified as they run, in place, at the end user location. If you choose to design your application to accept new code 'on-the-fly' then you can fix programs or download modifications without shutting down the whole system. Download new code and you can have the application read in the new code and execute it without any interruption to user. |
||||||||||||
|
Copyright © 1995 - 2010, Cogent Real-Time Systems Inc. |
||||||||||||