My favorites | Sign in
Project Home Downloads Wiki Issues
READ-ONLY: This project has been archived. For more information see this post.
Search
for
ScriptLanguage  
The index page for the user script language that jarvar provides.
Featured
Updated Apr 12, 2012 by jackokring

Raison d'Etre

Although the jarvar platform independence library (PIL) can be used to design and write programs for a number of platforms based on Java, jarvar itself, offers a programming language to users of those programs to adapt or customize them. This is the purpose of ScriptLanguage. To an extent ScriptLanguage offers interactive development upon a device, and the code so developed can be used as part of a jarvar program. Scripting is a right, and is implemented using the Scripting classes. Only one instance of ScriptLanguage may run in any application.

An Overview of Internals

ScriptLanguage (SL) is a semi-compiled list threaded language, which is a hybrid of FORTH and LISP, with some ideas from other languages. It is designed to remain unconditionally stable (never needing a reset of the VirtualMachine), and to have a low memory footprint with small programs. This requires a linked list style of stack, and security preventing overwriting critical words in the language lexicon.

The choice of FORTH as a language basis may seem strange, but when it comes to small code size, type simplicity and an incrementally compiled interactive nature, it has a high ticking of the right boxes. Using the Java class model as a basis for the inner workings, has the advantages of hiding some quite complex logic, providing some powerful abstract data type methods, and running on many platforms.

A considered approach using a few Java classes, can provide enough hidden typing so as to prevent code instability. Exporting the whole object oriented paradigm into the 4GL as a default coding strategy is a mistake for the size of the binary and the instruction manual. Don't mistake this for a dislike of big binaries with big function, just that more function for the memory is preferred.

"Abstraction begets type conversion, which begets code size." - Simon Jackson.

Powered by Google Project Hosting