What is Yoix...?
The Yoix scripting language
is a general-purpose programming language that
uses syntax and functions familiar to users of C and Java.
It is not an object oriented language, but makes use of over 150 object
types that provide access to most of the standard Java classes.
Because the Yoix interpreter is built
entirely using pure JavaTM technology,
it means that Yoix applications are cross-platform,
GUI-capable and both network and thread friendly,
yet Yoix developers find themselves
insulated from the more cumbersome and tricky parts of coding the
same functionality directly in Java.
It does not use reflection to access Java functionality and thus adds value
by not only simplifying access to that functionality, but also improving
application
reliability by coding through both Java glitches and complicated Java
features one-time, behind-the-scenes.
The Yoix language includes pointers, addressing, declarations,
and global and local variables.
In addition
to supporting native user functions, users can add their own
builtin functions written in Java.
Yoix technology has been employed
to build critical AT&T; systems that run 24/7 and are accessed by hundreds
of users in geographically dispersed locations.
Pointers?
When people hear that the Yoix language includes pointers, their first
reaction is usually a knee-jerk revulsion.
"Pointers?" they say, "Aren't those a recipe for memory corruption,
unexpected results and memory management issues?"
As implemented in the Yoix interpreter, the answer is, quite simply, no.
Pointers here are a syntactic tool that acts as both a shorthand and a
convenience in a variety of situations.
At the end of the day, their implementation relies on Java, thus the issues
of memory management and memory corruption are moot.
In addition, Yoix pointers referencing data on the stack remain valid even after
that data is popped off the stack.
Moreover, unexpectedly pointing to inappropriate data such as a reference beyond
the end of a string will generate a (catchable) Yoix exception.
In short, using pointers in Yoix is no more dangerous than using arrays
in Java.
An interpreted language written in Java?
Table 1. Performance Comparison between Java and Yoix
|
|
|
|
Trial |
Tool |
Mean |
Median |
Low |
High |
|
Start-up and simply exit |
Java |
0.161s |
0.160s |
0.150s |
0.180s |
Yoix |
0.575s |
0.580s |
0.550s |
0.680s |
Read War and Peace into a String (3.28Mb)* |
Java |
0.225s |
0.221s |
0.211s |
0.331s |
Yoix |
0.393s |
0.391s |
0.380s |
0.470s |
Display a frame with 100 buttons* |
Java |
0.140s |
0.150s |
0.090s |
0.161s |
Yoix |
0.376s |
0.380s |
0.311s |
0.431s |
|
Each trial involved 100 consecutive runs on an Intel Pentium 4
2GHz processor with 256MB memory under Microsoft Windows XP.
[*timings exclude start-up & exit]
|
Though the fact that the Yoix interpreter runs under the
Java Virtual Machine means that we do not recommend Yoix
technology for implementing missile guidance systems or other real-time
applications, Yoix does perform quite well and there are
a surprisingly large number of applications where a Yoix implementation
is the right way to go.
In particular, client/server applications where the computationally
intensive parts of the application can reside on the server, written
using whatever tools are most suitable, while the client-side is
primarily a graphical user interface (GUI) are perfect.
The World Wide Web is a familiar example of just this model.
For these sorts of applications,
writing the client-side using Yoix technology means that only the
generic Yoix jar file has to be distributed to end-users, the
application-specific Yoix scripts can be downloaded at run-time as needed,
much like a browser downloads HTML.
With that model, application bug-fixes and upgrades are trivial, yet
end-users experience the full functionality of a Java application and
developers have less code to write and maintain.
By the way, how do you pronounce Yoix?
Yoix is pronounced like the English word "yoicks", whose pronunciation is given in the dictionary as "yoiks".
Contact Us: Send your questions or comments about the Yoix interpreter to Rich Drechsler or John Mocenigo at yoix@research.att.com
Yoix is a registered trademark of AT&T Inc.
|