AIS Framework

 

Overview

The AIS Framework is a collection of tools which allow the easy and rapid construction of Lisp analytic research applications in a quick and cost effective manner. The AIS Framework elevates AIS Lisp to a first class language in that both background and foreground executables can be produced without resorting to any language other than Lisp.

The principal components of the AIS Framework are:

Ais Executable

Launch Parameters

The ais.exe executable allows the delivery of Lisp programs running as Windows background processes, or running as Windows foreground processes with a graphic user interface. When ais.exe is first executed, it launches an AIS Lisp context. In order to determine what parameters are to be passed to the Lisp context, the ais.exe program requires a launch script containing the following individual line items:

The ais.exe executable, by convention, is usually associated with launch scripts having the .asl suffix. Windows setup is worked so that clicking on a .asl suffix file will launch ais.exe with the clicked launch file as an argument. An example of this process can be seen in the Ais/Tutorial_Console folder.

Ais Structure

Once the Lisp context is launched, ais.exe builds the _ais structure as a global variable in the newly launched context. The _ais structure is available to the Lisp programmer at execution time and contains the following elements.

Launch Strategy

The ais.exe executable cannot properly launch without a Lisp launch and or startup script. First, the _ais.ExeFileName file name is examined to determine what the root launch name of the launching executable is. Let us assume that the Ais executable has not been renamed and _ais.ExeFileName = "C:/Ais/ais.exe". Then the root launch name will be "ais", and the launch script file name will be "C:/Ais/ais.sl". Second, the 2nd argument to the executable, _ais.Argv[1], will be assumed to be the full path and file name of the startup script.

If both the launch script file AND the startup script file are empty, then ais.exe will quit without launching.
If the launch script file exists, then ais.exe will scan it for launch parameters.
If the startup script file exists AND the launch parameter Script=yes, then ais.exe will scan the startup script for launch parameters.
Finally, ais.exe will launch the Lisp context using the discovered launch parameters.

Once the Lisp context is successfully launched,
If the launch script file exists, then ais.exe will run it in the newly launched Lisp context, as in (runScript launchScript).
If the startup script file exists AND the launch parameter Script=yes, then ais.exe will run it in the newly launched Lisp context, as in (runScript startupScript).

The Notes Lisp Editor

The notes.exe executable is a Lisp notes editor similar to notpad, wordpad, and other such editors. Notes allows the Lisp programmer to edit ascii text files as well as run Lisp scripts against the data to be edited, providing all manner of additional editing services. The notes.exe program is written entirely in AIS Lisp using the AIS Framework. The entire Lisp source code for notes.exe can be found in the Ais/Tutorial_Editor folder.

The notes.exe is actually a simple copy of ais.exe with an new icon added to the copy via the Windows Visual Studio tool.

The AIS IDE

The radIde.exe executable is an Integrated Development Enviornment (IDE) is created entirely in Lisp using the QT classes and allows the development and debugging of Lisp applications for use in the research lab. The AIS Lisp IDE contains the complete Lisp source code for the Integrated Development Environment for AIS. The IDE contains a stylized QT desk top interface with four tabs: Console, Libraries, Editor, and Debugger. The AIS Lisp IDE and the Lisp code which creates it can be found in the Ais/Tutorial_IDE folder.

 

IDE Console Tab

The Console tab contains the Lisp console window which displays all Lisp (writeln ...) function output as well as logging all console output to the log file. The console main pane also allows the researcher to enter an execute Lisp commands.

IDE Console Tab

 

IDE Libraries Tab

The Libraries tab contains the list of libraries referenced by this research project. Clicking on any one of the libraries, causes the list of elements in the selected library to appear in the right hand pane. Clicking on any element in the right hand pane causes the element to open an editor window in the Editor Tab.

IDE Libraries Tab

 

IDE Editor Tab

The Editor tab contains the set of edit windows opened by the researcher. Each edit window has its own tab and allows the researcher to edit the elements of each Library. Edited library elements can be compiled and saved from options in the Edit pull down menu above.

IDE Editor Tab

 

IDE Debugger Tab

The Debugger tab allows the Lisp researcher to walk through the execution of the various library elements as they execute. The lambdas in the project can be listed, selected, and examined during execution. Variables within each lambda can be viewed, set, and explored in the right hand debugger panes.

IDE Debugger Tab

The Qt Classes

The QT classes implement the AIS Lisp Research Lab Foundation Classes. The Research Lab Foundation Classes allow the AIS Lisp programmer to produce generic research lab desk top applications easily and cost efficiently. The Research Lab Foundation Classes support an extendable tabbed GUI style with generic GUI elements and also remote process execution and control. The purpose of the Research Lab Foundation Classes is to support write-once-run-anywhere research lab applications in Lisp with very low engineering development cost. Currently there are Research Lab Foundation Classes implemented for C++ QT which runs across many platforms. The design benefit for the Research Lab Foundation Classes is reasonably complex research lab applications with very low engineering development costs. The design sacrifice for the Research Lab Foundation Classes low-cost-development-benefit is that one is restricted to a stylized, generic GUI with few embellishments.

 

Extendable Tabbed GUI Style

The QT classes support a stylized GUI desk top application interface which is composed of multiple tabbed windows. At the top of the main window is a title bar. Beneath the title bar is a row of pull down menus. Beneath the row of pull down menus is a row of titled tabs. When selected, each tab exposes another full featured window containing generic QT controls populated by the developer. Clearly a wide variety of research lab desk top applications can be produced quickly and cheaply within these stylized design constraints.

 

Remote Process Execution & Control

The QT classes support the execution and control of remote processes on the local computer. This allows multiprocessing research applications to be easily developed. QT remote process execution also allows the Lisp programmer to execute remote applications such as Excel and 3rd party charting packages.

 

Internet Web Page Reading

The QT classes support the reading and parsing of Internet Web pages from the local research application. This allows research applications to be easily fully connected to the Internet for collecting and analyzing publicly available research data.

 

Tutorials

The AIS folder contains a number of tutorials containing research lab desk top applications for machine learning, chat bots, QSQL local database, all of which were quickly and easily developed using the QT classes services. The Lisp code for creating these many interfaces can be found in each tutorial.