Open SourceTame Web Application Development

Tame Web Application Development content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

I’m going to write about a platform-independent, server-side, interpretive programming language with full integration with XML. And if you thought that is just another name for Java, think again. This new programming language is called TAME (Tag-Activated Markup Enhancer) available from

The TAME language has eight components. It has over 300 build-in functions or commands. They include commands like “print” or “Encrypt”, “textfile” or “rand”. These commands make up the core of the language. Another component consists of language operators like “=”, “+” and “-“. One interesting fact to note is that the TAME script language has no operator precedence. To group operations by precedence, one needs to use curly braces to enclose the operations accordingly. Other components include access operators, local variables, defined functions, XML classes, and text tables.

When looking at TAME code, you can identify four areas. The code itself is perceived as an XML document. That is where pre-defined XML and overridden HTML tags are interpreted. The TAME code resides in between curly braces. The syntax takes a while to get used to. TAME is space delimited which means all operators, variables, functions and arguments must be separated by whitespace. At the end of each clause there is a semicolon. Here is a code fragment that connects to a web server to get a resource:

{define! mybrowse
     push: std-stk x xp y r;
     validate: {OpenSocket... "A" .#1 .#3} could not connect to {.#1};
     when_not_valid! pop. "std-stk" ex;
     &xp = .#2;
     substr... 1 1 &xp != "/" then &xp = "/" &xp;
     &y = SendSocket.. "A" [GET {&xp} HTTP/1.0{crlf}Host: {.#1}{crlf 
     set.. &y "1";
     &r = while! &y {
         &y = RecvSocket. "A";
     CloseSocket. "A";
     rem: body_top: <font size=1>mydomain={.#1}, mypath={&xp}, 
     pop: std-stk;

Within the TAME code area you can insert HTML code by enclosing it inside square brackets.

A TAME application is then a collection of pages that collectively provide the various screens and dialogs of a logical application. The page index.txml is special as it is the default page for the application directory (similar to index.html in a typical web server).

For database driver application, there are a number of built-in tags, operators and functions that simplify record retrieval and iteration. The “@” operator allows for retrieval, replacement and insertion of data from a file or table. Using syntax like @LOCATION, ROW, COLUMN you can directly or indirectly access specific records and fields in a data file. Another approach would be to use the “dosql” function, which allows you to directly execute SQL commands on a database.

TAME integrates with web servers via CGI. Installation is a matter of unpacking the distribution into appropriate directories and then running the browser-based install wizard.

I did not find TAME to be revolutionary. The language syntax is interesting and makes certain operations concise and the code easy to read. The overall framework looked very similar to JSP tag libraries. Code is wrapped in XML-like tags that are then interpreted. While the language and the way HTM/XML/code are mixed may be different, the general programming approach is similar to what we have seen in Cold Fusion and JSP. I would classify TAME as a competing technology. One interesting point is that TAME designers could have chosen from various Web programming models and they chose a framework similar to JSP tag libraries. After CGI, ASP, servlets, etc., perhaps the JSP model along with custom tags offers the greatest degree of flexibility. The specific components could change (Java, TAME, etc.) but the model seems successful.

About the Author

Piroz Mohseni is president of Bita Technologies, focusing on business improvement through the effective use of technology. His areas of interest include enterprise Java, XML, and e-commerce applications.

# # #

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories