AT&T Home | AT&T Labs | Research
AT&T Labs, Inc. - Research

The Yoix® Scripting Language

Home | What's New | Grammar | Documentation | Download | License | YChart | YDAT | YWAIT | Byzgraf | FAQs

Check It Out... It's Free and

Released November 25 2011
New Yoix Version 2.3.1


New in release 2.2.1:
Java Web Start Demo Page
The first draft of a Yoix tutorial

Don't forget these other Yoix tools:
YDAT
YWAIT
BYZGRAF
YChart
Periodic Table of the Elements
Unicode Chart
 
It's Open Source!

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.