The purpose of this research project is to develop a complete language suitable to support easy and efficient development of software dealing with the World Wide Web (WWW). The language is being developed as a succession of layers over the basic KLIC engine and takes advantage of the symbolic processing capabilities of KL-1 as well as its ability to describe with great simplicity concurrent executions.
The need for this sort of programming environment is becoming more and more clear in the programming languages and networking communities. Existing programming environments are either too ad-hoc to encompass all the emerging needs or they are too low level and primitive to be accessible by average programmers. In particular, the following emerging views of the WWW are not properly captured (or not captured at all):
We believe none of the existing programming frameworks offer adequate support to cover all these issues. Attempts to cover the first item have been very limited (e.g., as in Pillow [2]). Attempts to tackle the second issue have been either too low level or too limited in their scope and difficult in their usage (e.g., Common Client Interface [5], Common Gateway Interface [3], Java's Applets). The third point has been tackled exclusively using very low level mechanisms (e.g., threads in Java).
The purpose of this project is to extend the KLIC system to support the effective development of efficient tools for dealing with the WWW. The final goal is to turn KLIC into the language of choice for the development of Internet-based applications.
KL1, and thus KLIC, is particularly suitable to this purpose. Being based on logic programming possesses very good symbolic processing capabilities. Its concurrent nature allows to easily deal with situations requiring multi-threaded computations, like supporting multiple client requests or generating multiple agents searching the Web.
The aim of this project is to extend KLIC with the necessary language level features to support WWW-applications: structured manipulation of WWW documents, complete embedding of the most common interfaces (HTTP, CGI, etc.), active and dynamic Web-pages, and integration of concurrency in Web-based applications.