Specialty scripting languages
"BeanShell is a small, free, embeddable, Java source interpreter with object scripting language features, written in Java...You can use BeanShell interactively for Java experimentation and debugging or as a simple scripting engine for your applications. In short: BeanShell is a dynamically interpreted Java, plus some useful stuff."
That's the introduction on the BeanShell Website; it's an accurate one. Pat Niemeyer, author of Exploring Java, wrote BeanShell, an interactive loosening of Java whose use continues to grow. The Java Development Environment (JDE) for Emacs and XEmacs already includes it, and a couple of other high-profile products will likely name it their embedded scripting language this winter.
Niemeyer recognizes that at this point, "JPython is certainly the best-known scripting language for Java." JPython is the Python variant often mentioned in Regular Expressions. BeanShell fans find Niemeyer's interpreter far more natural, though, simply because it's so close to standard Java. Moreover, Niemeyer claims, "BeanShell is tiny in comparison (about 200 KB) and rapidly becoming just as complete."
After an early phase in which Niemeyer did all the work to establish BeanShell's character, he moved its maintenance to SourceForge. "We can now start taking advantage of some of the hundreds of developers who are on the mailing list in a more direct way," he said. Version 1.1 should be in early beta as you read this.
NQL grows rapidly
Network Query Language (NQL) has emerged from "five years of stealth development" and is growing rapidly, according to chief technologist David Pallmann. NQL Inc., a publicly traded development house, formally released the best of its core technology as the NQL programming language this April. NQL looks like many other Algol-derived languages. It approaches the conciseness of Perl -- not with Perl's rather undisciplined abbreviations and context dependences, but through creative application of a syntactic stack alongside a conventional syntax of keywords and variables. Thus a bare
while implicitly tests the current value on top of the stack. This makes for quite a few handy idioms for common programming constructs.
NQL's advertised virtue is its four large built-in capabilities, available to competing scripting languages only through the use of external modules:
- Intelligent behavior
NQL needs those domains to give its customers the custom development that it has packaged into a standalone language. They combine to make NQL's specialty "intelligent agents" that tackle notoriously thorny development challenges, such as bank-account consolidation. While Pallmann set much of the groundwork in his book Programming Bots, Spiders and Intelligent Agents in Microsoft Visual C++, he said NQL now far surpasses those teachings.
Pallmann won our interest when he said, "We never ask customers to throw out their infrastructure." At the language level, that means NQL is sufficiently lightweight and flexible to fit in with other languages and communications standards. NQL fully supports ActiveX, for example, and can link to foreign functions coded in most other languages.
NQL was originally available only for Windows variants, but the company released a Java version on Oct. 11, 2000. REBOL, which we profiled last month, has emphasized its portability in marketing itself to many of the same customers. NQL Inc. concentrated on platforms where it calculated it could go beyond the "least common denominator."
Enhancements planned for the next release of NQL include:
- Expansion of pattern-matching to include regular extensions
- Internet protocols beyond FTP, HTTP, MAPI, ODBC, and others already built in
- Net compatibility
Simkin minimizes scripting weight for object orientation
Simkin is a lightweight embeddable scripting language specially designed for Java and C++ applications running under either Win32 or Mac OS. Simkin's most visible marketplace successes are a few computer games and the Sibelius musical notation application.
Unlike most scripting systems we profile, Simkin does not collect garbage or automate reference counting. Simkin inventor Simon Whiteside minimizes runtime overhead and enhances Simkin's realtime predictability by exposing memory management as the developer's responsibility.
Simkin's Java flavor has several interesting features. Whiteside advertises it as "'Java/XML,' because the Java version of Simkin is designed to be embedded within XML files, although this is not necessary for the interpreter. It is intended that each Java class has associated with it an XML file which defines additional data and functionality."
Like BeanShell and many other languages we report on, Simkin is "a symbolic language with no variable declarations and soft typing." For technical reasons, Simkin's Java form doesn't yet expose Java methods as elegantly as the BeanShell implementation does. Whiteside talks of eventually adding an interface layer that manages method registration, so methods can be "called directly without having to unpack their parameters from the argument array."
Slate: a grand experiment
BeanShell, NQL, and Simkin are all bottom-line products that aim to make a difference in the rush-to-market of end-user applications. Slate's origins are more academic; it embodies research as specific aspects of user-interface and language design.
Slate borrows recognizable features from at least a dozen languages. To a developer, it feels like Smalltalk because it's fully object-oriented, highly interactive, and manifested as a total working environment, rather than an isolated language processor. Slate's syntax is like Self or Beta's, its semantics are functional and emphasize immutable objects, and it is highly reflexive, like Forth or Scheme. A Slate working environment is readily customizable, in that new languages are available through sophisticated parsing objects.
Slate implements most of the TUNES (Tunes is a Useful, Nevertheless Expedient, System) metaprogramming project, and is currently experimental. While it does interesting things on the project team's computers, it's hard to develop practical new applications with it. Slate appears to be at about the point Linux was in early 1992, or perhaps more precisely, where Hurd is now. On the other hand, Slate has achieved interesting milestones in the year 2000, and will interest those who want to be part of the future of computing language design and use.