X#
X# (pronounced X-sharp) is a general-purpose, XML-oriented Web application programming language created by Intalio. It is at the core of products like Intalio|Cloud. It is also functionally equivalent to Salesforce.com's Visualforce programming language.
Objectives
Because X#'s features and capabilities resemble those of other languages, such as Java, PHP, and Python, you might wonder why Intalio bothered to create it, use it in building its applications and Web services, and offer it to the world at large under an open source license. The answer is based on our corporate philosophy. Since much of what Intalio does is rooted in the idea of putting easy-to-master, quick-to-implement tools directly into the hands of innovators, we set out to create a programming language that even comparatively inexperienced developers could use to build any Web application they could dream up.
We think a big part of giving developers the freedom to easily create a wide variety of Web applications means providing built-in support for a wide variety of technologies. As a result, the current version of X# features native support for SOAP and RESTful Web services, WSDL discovery, IMAP4, POP3, SMTP, Maildir/mbox, Multi-threading, SQL databases, XML databases, Microsoft Excel documents, Local file system access, HTTP, FTP, WebDAV, Windows shares (Samba), ZIP compression, DNS lookups, encoding and hashing, and many, many other technologies.
But building in support for industry standard formats, protocols, and software is only part of the equation. For X# to be useful and accessible to the widest developer audience, it also has to be easy to learn and use. Accordingly, we've made X# as approachable as possible, and streamlined it to the point where developers can get up to speed in a fraction of the time required with other Web application programming languages. Unlike Java, PHP, Python, and other high-level languages for example, X# doesn't force developers to learn scores of statements, data types, and functions to create usable applications. In fact, X# uses only 30 statements and four data types (node, string, number, and boolean). X# also replaces thousands of hard-to-remember functions with four simple operations.
Let's say a developer wants to create a multi-threaded application that shuttles data to and from SQL databases, email repositories, and SOAP Web services. Using Java, for example, that developer would need to understand several libraries, many functions, and how each interoperates with the above technologies. Experienced developers would require hours to implement an application like this, and those without the same level of experience would need days, at least. Using X#, however, even junior developers can build relatively complex applications as quickly as their senior counterparts, encouraging innovation at all levels and at an ever-increasing pace. And they can build those applications and manipulate any kind of data with only four operations.
Four Simple Operations
Instead of relying on functions as application building blocks, as many other languages do, X# replaces those functions with four basic node operations (select, append, remove, and update), making X# intuitive and quickly useful. In the above example, a multi-threaded application accessing SQL, email, and SOAP data, node operations and XML nodes are used together like this:
Record Insertion
To insert a record into an SQL database, first create an XML node instance representing the table in the database. Next, create another XML node instance representing the record. To complete the operation, simply append the node representing the data record under the node representing the SQL database.
Email
To send an email, create XML node instances representing the SMTP server and the email message itself. Then, append the email message node under the SMTP server node to send the message. To delete an email message from an IMAP4 server, select the message's XML node and delete it. To change a message's status to "read", change the XML node representing the "seen flag" to "true" and then update the node.
Files
To create a file, specify an XML node representing the desired directory and then append a node representing the file under it. To delete a file from the local file system, select, then delete, the XML node representing the file.To rename a file, change the XML attribute representing the file's name, then update it. To upload a file to an FTP server, append an XML node representing the file to a node representing the server.
Records
To delete a record from an SQL database, select and delete the XML node that represents the record. To change the value of a record column, alter the column's XML attribute and update it. It really is as easy as that. No matter what kind of data you're working with – database records, Excel rows, local files, etc. – four basic operations take care of even the most sophisticated manipulation. Using X#, you don't have to worry about the underlying details, and even at this high level of abstraction, you don't have to sacrifice performance or portability.
References
For more information on X#, please check our Wiki: