The RenderX Tribune

RenderX News Lisp, the W3C News 2006-05-15 2006-07-14 XEP 4.6 with AFP output Semantic Web Activity released. RenderX has re- "Lisp is a programmable program- A paper titled : Myths Grows to Include GRD- leased XEP 4.6, a new ver- ming language." -John Foderaro and Legends tries to confront and DL, Deployment Work- sion of its XSL processor dispel some of the myths and mistak- ing Groups W3C is and accompanying tools. en impressions associated with Lisp. pleased to announce the re- The new version intro- The paper promotes Xanalys's Lisp newal of the Semantic duces AFP backend (avail- What is Lisp? products, but most of the arguments Web Activity. "W3C con- able with a special li- ISP is an acronym for LISt Pro- apply to other Common Lisp imple- tinues to support the ad- cense), improved line- Lcessing. Its development history mentations as well. vancement of universal breaking algorithm confor- has often been associated with sym- Kent Pitman's More Than Just sharing and automatic pro- mant to the Unicode Stan- bolic processing and with both com- Words: Lambda, the Ultimate Politi- cessing of data in the dard Annex #14, and a puterandhumanlanguages.Ahetero- cal Party argues that Lisp is better World Wide Web," said new implementation of geneous list data type has always defined as its community than as its Ivan Herman (W3C). Se- XSL 1.1 change bars. been built into the language in order various specifications. mantic Web technologies XEPwin 2.0 has also been to efficiently deal with arbitrary and Lisp may be combined with other allow data to be shared and updated and includes XEP changing models. languages to produce wide variety of reused across applications, 4.6. From this basis, a number of fea- applications. enterprises, and communi- tures have come to be expected from There have been a number of com- ties. The W3C Advisory all members of the Lisp family of parisons between Lisp and other lan- Committee approved the languages: guages. continuing work in RDF Wikipedia — top-level in which code can be data access, rules inter- w In run change, and health care Tail recursion com- — decoupled syntax from seman- and life sciences. Three puter science, tail recur- tics Lisp History new groups are chartered isp was invented by John Mc- sion (or tail-end recursion) — compiled / interpreted for work on Semantic Web Carthy in the late 1950's as a for- is a special case of recur- — language / libraries / environ- deployment, extracting Lmalism for reasoning about the use sion that can be easily ment RDF from XML (e.g., to of recursion equations as a model for transformed into an itera- — object-oriented / procedural processmicroformats),and computation. Of computer languages tion. Such a transformation — dynamic / static education and outreach. still in widespread use today, only is possible if the recursive — strong / weak typing Join W3C and visit the Se- FORTRAN is older. call is the last thing that — memory mangagement mantic Web home page. Lisp has evolved with the field of happens in a function. Re- — macros 2006-07-17 , always putting placingrecursionwithitera- — effective use of computational W3C Names Yves Lafon the best ideas from the field into tion, either manually or au- resources Web Services Activity practical use. In 1994, Common Lisp tomatically, can drastically — 3GL/4GL/5GL LeadW3C has named became the first ANSI standard to in- decrease the amount of Lisp has evolved into a family of Yves Lafon to the position corporate object oriented program- stack space used and im- languages. The two major dialects in of Web Services Activity ming. prove efficiency. This use today are Common Lisp and Lead. The Web Services The early development of Lisp is technique is commonly Scheme. This web site deals mostly Activity includes Working described by McCarthy in "History used with functional pro- with Common Lisp. Groups for semantic anno- of Lisp", 1978. ...continued on page 2 ...continued on page 2 ...continued on page 2

AI Koans

A novice was trying to fix a broken lisp garbage collector. We must keep a refer- ing at the PDP-6. "What are you doing?", machine by turning the power off and on. ence count of the pointers to each cons." asked Minsky. Knight, seeing what the student was doing Moon patiently told the student the follow- "I am training a randomly wired neural spoke sternly- "You can not fix a machine ing story- net to play Tic-Tac-Toe." by just power-cycling it with no under- "One day a student came to Moon and "Why is the net wired randomly?", asked standing of what is going wrong." said, "I understand how to make a better Minsky. Knight turned the machine off and on. garbage collector... "I do not want it to have any preconcep- The machine worked. tions of how to play" Minsky shut his eyes, In the days when Sussman was a novice "Why do you close your eyes?", Sussman One day a student came to Moon and said, Minsky once came to him as he sat hack- asked his teacher. "I understand how to make a better ...continued on page 4 RenderX Tribune, issue #2, July 20, 2006

Wikipedia (continued from page 1) Lisp, the Programming Language (continued from page 1) gramming languages where the declarative ap- Two of the major developers of the language since then, Richard Gabriel and Guy proach and explicit handling of state promote Steele, presented "The Evolution of Lisp" at the 1993 ACM History of Programming the use of recursive functions that rapidly fill Languages conference. the call stack. Kent Pitman and Brad Miller have compiled a brief on-line version of the history of Lisp from ANSI documents. Herbert Stoyan began his study of the history of Lisp in the early 1970s, while in East The word iteration is sometimes Germany. He carried out this study by writing letters to everyone whose name he could Iteration used in everyday English with a find in the documents as well as by getting every book and report he could. In 1979 he meaning virtually identical to repetition. applied to emigrate from East Germany, was arrested, spent six months in prison and Iteration in mathematics may refer to the pro- then was permitted to emigrate to West Germany. When he got out of East Germany, cess of iterating a function, or to the techniques he visited M.I.. and examined every document he could find relevant to the history of used in iterative methods for solving numerical Lisp and also interviewed everyone he could. He is now Professor of Computer Science problems. at the University of Erlangen-Nuremberg in Erlangen, Germany, where his group works Iteration in computing is the repetition of a on AI. His history of Lisp is also on-line. process within a computer program. It can be used both as a general term, synonymous with repetition, and to describe a specific form of repetition with a mutable state. What is Lisp Good For? When used in the first sense, recursion is an NSI Common Lisp is a mature, thoughtfully conceived, highly portable, industrial- example of iteration, but typically using a recur- strength programming language which serious application developers worldwide sive notation, which is typically not the case for Ahave come to count on for: iteration. — Highly customizable "quick and dirty" utilities for doing everyday things. (i.e. as However, when used in the second (more re- the most powerful scripting language available). stricted) sense, iteration describes the style of — Large, complicated, mission critical applications which would be impossible to de- programming used in imperative programming velop in any other language. languages. This contrasts with recursion, which — Fast prototyping and Rapid Application Development (RAD). has a more declarative approach. — Continuous-availability applications, especially those that require functionality changes after initial deployment. It has had wide success in business process software, engineering, document processing, Call stack In computer science, a call hypermedia (including the WWW), mathematics, graphics and animation, artificial intel- stack is a special stack which stores informa- ligence and natural language processing. tion about the active subroutines of a computer It is sometimes used to define every aspect of an application, sometimes just the internal program. (The active subroutines are those processing engine (i.e. the guts, without the User Inteface), or sometimes just the user which have been called but have not yet com- interface. Sometimes it is used as the "glue" to interactively develop Graphical User pleted execution by returning.) This kind of Interfaces and sometimes to define graphics/windowing systems themselves. stack is also known as an execution stack, con- It is often used to provide interactive command languages, macro or scripting lan- trol stack, or function stack, and is often abbre- guages, and extension languages embedded within commercial systems. viated to just "the stack". It is widely used to programatically generate other, static, stand-alone applications, in A call stack is often used for several related the same or different language. It is also used to generate "mobile code". purposes, but the main reason for having one is Xanalys, a major commercial Lisp vendor, has placed an excellent paper titled Common to keep track of the point to which each active Lisp: Myths and Legends on their site. From the introduction: subroutine should return control when it finish- "This year, 1998, Lisp is celebrating its 40th year supporting the world's most complex es executing. If, for example, a subroutine applications. And Lisp has grown a lot in that time. So if you or someone you know DrawSquare calls a subroutine DrawLine from harbors fears or concerns about Lisp because of something learned in a class or muttered four different places, the code of DrawLine by a friend 20 or 30 years ago, it's time to take a fresh look. In this paper we're going to must have a way of knowing which place to re- survey what Lisp is today." turn to. This is typically done by code for each This site lists a sampling of commercial uses, listed by industry, and reasearch uses. call within DrawSquare putting the address of This site also gives a description of Lisp and its features, available tools written in Lisp, the instruction after the particular call statement and a comparison with other languages. (the "return address") into the call stack. ...continued on page 3 ...continued on page 3

W3C News (continued from page 1) tations, addressing, choreogra- Protocol Activity. and as Team more about W3C. (Photo cred- bileOK Scheme 1.0. mo- phy, description and policy as Contact for the XML Protocol it: Coralie Mercier. News bileOK labels indicate that well as XML protocol and Working Group, the XML archive) content and its delivery pass databinding. Yves joined W3C Schema Patterns for Databind- tests based on the Mobile Web 2006-07-12 in 1995 to work on the experi- ing Working Group and the Best Practices and are de- mobileOK Scheme: Working mental browser Arena. He led Web Services Choreography signed to create an effective Draft The Mobile Web Best development of Jigsaw, W3C's Working Group. W3C wishes Practices Working Group has user experience. Read about Java based server, and served to thank Hugo Haas who previ- released the First Public Work- the W3C Mobile Web Initia- as Activity Lead for the Proto- ously led the Activity. Read ing Draft of the W3C mo- tive, a joint effort by authoring cols Activity and the XML tool vendors, content ...continued on page 3 page 2 RenderX Tribune, issue #2, July 20, 2006

Lisp, the Programming Language (continued from page 2) Wikipedia (continued from page 2) Using Lisp with Other Languages Since the call stack is organized as a stack, the caller pushes the return address onto the stack, ummary: Lisp programs can be combined with programs written in other languages, and the called subroutine, when it finishes, to form an application that runs within a Lisp top-level or from some other control- pops the return address off the call stack (and Sling program. transfers control to that address). If a called "We must all hang together, or most assuredly, we will all hang separately." -Ben subroutine calls on to yet another subroutine, it Franklin will push its return address onto the call stack, In general, a Lisp implementation provides a Lisp top-level that allows code to be and so on, with the information stacking up and loaded into it using the function LOAD. Any programs loaded in this way and called unstacking as the program dictates. If the push- from top-level are under the control of the Lisp top-level. ing consumes all of the space allocated for the Exactly what kind of files can be loaded with LOAD is implementation dependent. In call stack, an error called a stack overflow oc- some implementations, LOAD can handle .o, .so, or .dll files produced by external oper- curs. Adding a subroutine's entry to the call ating system-specific . In other implementations, a new top-level must be stack is sometimes called winding; conversely, constructed which includes the external program. removing entries is unwinding. However, there is nothing in the definition of Common Lisp that specifies that all pro- There is exactly one call stack associated with grams must be run from the Lisp top-level. For example, Lisp could be provided as a a running program (or more accurately, with library of utilities that are linked to some other controlling program. There are some each task of a process). Since there is only one implementations that provide such a library, while others have the ability to effectively in this important context, it can be referred to create one for the programmer, based on the Lisp source files for a specific application. as the stack (implicitly, "of the task"). In any case, LOAD and/or the Lisp must be informed about functions or other In high-level programming languages, the operations to be defined in a different language. Exactly how this is done is implementa- specifics of the call stack are usually hidden tion and operating-system specific. The various mechanisms are collectively known as from the programmer. They are given access foreign-function interfaces. Usually, these involve some specification of: only to the list of functions, and not the memo- — what other language is being used for each foreign utility to be used (so that the ry on the stack itself. Most assembly languages compiler can use the correct calling convention). on the other hand, require programmers to be — the arguments and return values types for the function. involved with manipulating the stack. The actu- Some possible complications occur if: al details of the stack in a programming lan- — The Lisp implementation uses utilities that are inherently incompatible with utilities guage depend upon the compiler, operating used in a program to be linked with Lisp. This is rare. system, and the available instruction set. — Lisp data is to be passed directly to external utilities and kept in variables within the external program. In some cases this, can interfere with Lisp memory manage- ment because: Common Lisp Common Lisp, common- — The memory manager of some Lisp implementations have the ability to move ly abbreviated CL, is a dialect of the Lisp pro- data within memory (to obtain better performance), so Lisp data pointed to by gramming language, standardised by ANSI foreign programs could move, resulting in pointers that are no longer valid. X3.226-1994. Developed to standardize the di- — The Lisp memory manager can keep track of which data is being used within vergent variants of Lisp which predated it, it is the Lisp system, but may not be able to keep track of data that is being used by not an implementation but rather a language external programs. specification. Several implementations of the Most Lisp implementations provide special facilities for dealing with these issues. Common Lisp standard are available, including commercial products and open source software. An alternative mechanism for using applications involving multiple languages is to use Common Lisp is a general-purpose program- an object-based inter-object protocol. This is done in such systems as CORBA Object ming language, in contrast to Lisp variants such Request Brokers (ORBs), ILU, and OLE, and these will work with many Lisp implemen- as Lisp and AutoLISP which are embed- tations. ded extension languages in particular products. In an inter-object protocol, a programmer specifies information about the interface be- Unlike many earlier Lisps, Common Lisp (like tween program modules, and indicates where the modules are to be found. The various Scheme) uses lexical variable scope. modules might be: Common Lisp is a multi-paradigm program- — within the same process (i.e. executable application) as Lisp -- in which case the ming language that: foreign function interface discussion, above, is relevant.

...continued on page 4 ...continued on page 4

W3C News (continued from page 2) providers,handsetmanufactur- guage (XSL) 2.0 on 18 Octo- formatting part of the Extensi- 2006-07-11 ers, browser vendors and mo- ber in Heidelberg, Germany, ble Stylesheet Language also XML Query and XPath Data bile operators. hosted by Heidelberger Druck- called XSL-FO. A Call for Model Updated The XML maschinen AG. The Workshop Participation for this Work- Query and XSL Working 2006-07-11 will be held in conjunction shop is expected in August. Groups have released an updat- Advance Notice: Workshop with a symposium on Web Read about W3C Workshops ed Candidate Recommenda- on Requirements for XSL- tion of XQuery 1.0 and XPath W3C plans a Workshop Printing at the same location. and the XML Activity. FO 2.0 2.0 Data Model (XDM). Both on Gathering Requirements for Participants will discuss the re- XSLT 2 and XQuery use Extensible Stylesheet Lan- quirements, features and de- sign of a future version of the XPath expressions and operate ...continued on page 4 page 3 RenderX Tribune, issue #2, July 20, 2006

AI Koans (continued from Lisp, the Programming Language (continued from page 3) Wikipedia (continued from page 1) — in different processes on the functions, compilation conditions; page 3) "So that the room will be same machine. profiler; integrated extensible editor; — Supports program- empty." — on different machines connected build system manager; source code ming techniques such At that momment, Suss- over a network. location and cross-referencing tool; as imperative, func- man was enlightened. The issues involved with such inter- complete online documentation. tional and object-ori- object protocols are largely the same The Professional Edition of LWW ented programming. for applications written in any combi- includes everything you need for — Is dynamically typed, A student, in hopes of un- nation of languages, including those commercial Common Lisp software but with optional type derstanding the Lambda- that are partly written in Lisp. development and application deliv- declarations that can nature, came to Greenblatt. ery. CLIM 2.0 is included to further improve efficiency. As they spoke a Multics increaseprogramportability.Applica- — Is extensible through system hacker walked by. tions developed with the Professional standard features such "Is it true", asked the stu- LispWorks edition can be distributed free of as Lisp macros (com- dent, "that PL-1 has many Xanalys's LispWorks (R) for the charge. pile-time code rear- of the same data types as Windows (R) The Enterprise Edition of LWW ex- rangement accom- Lisp". Almost before the ("LWW") runs on Windows NT, 95 tendstheProfessionalEdition,provid- plished by the pro- student had finshed his and 98. On Unix platforms Lisp- ing portable distributed computing gram itself) and reader question, Greenblatt shout- Works runs on Sun Sparc and clones through CORBA, database access macros (extension of ed, "FOO!", and hit the (SunOS and Solaris), IBM RS/6000 through object-oriented SQL/ODBC syntax to give special student with a stick. (AIX), DEC Alpha (OSF/1), HP PA libraries, expert system programming meaning to characters (HP-UX), and SGI (IRIX). Liquid CL through KnowledgeWorks and an reserved for users for A disciple of another sect (formerly Lucid CL) runs on the embedded Prolog compiler. On Unix this purpose). once came to Drescher as same range of unix platforms with the SQL interface is part of the Lisp- he was eating his morning the exception of DEC Alpha. Works product and libraries support- meal. "I would like to give All editions implement the ANSI ing product delivery, CORBA, CLIM Functional pro- you this personality test", Common Lisp standard and come and KnowledgeWorks may be pur- chased separately. gramming said the outsider,"because with native CLOS/MOP, incremental Functional programming On the other hand the Personal Edi- I want you to be happy." compiler, interpreter, dynamic loader, is a programming tion of LWW is intended for personal Drescher took the paper and tools for inspection, profiling, paradigm that conceives and educational Lisp programming. that was offered him and disassembly, stepping and tracing. computation as the evalua- As a contribution to the Common put it into the toaster- "I Language extensions include: full tion of mathematical func- Lisp community, Xanalys is making wish the toaster to be hap- multithreading, foreign language in- tions and avoids state and the Personal Edition of LispWorks py too". terface, defsystem, support for inter- mutable data. Functional for Windows available free of charge nationalization through Unicode, programming emphasizes from its Web site. While the Personal programmer-extensible streams, TCP the application of func- A cocky novice once said Edition includes the full Common socket streams, object finalization, tions, in contrast to impera- to Stallman: "I can guess Lisp compiler and development envi- weak vectors and hash-tables, LALR tive programming, which why the editor is called ronment, it does limit program size parser generator, CAPI portable GUI emphasizes changes in Emacs, but why is the justi- and duration and it does not support toolkit. state and the execution of fier called Bolio?". Stall- application delivery. All editions support the Common sequential commands. man replied forcefully, LispWorks IDE, which provides a Functional programming "Names are but names, smooth and comfortable workflow, is defined more by a set of `Emac & Bolio's` is the allowing you to incrementally write, common concerns and name of a confectionary test, and extend your software while themes than any list of dis- shop in Boston-town. Nei- itisrunning.Featuresinclude:interac- tinctions from other tive listener; debugger; object inspec- paradigms. Often consid- tor; browsers for classes, generic ered important are higher-

W3C News (continued from page 3) on XDM instances such as documents and published an updated Working Draft of 2006-07-05 databases. The group also released an up- RIF Use Cases and Requirements. Synthe- Last Call: XHTML Modularization dated Working Draft of the XQuery Up- sized from nearly fifty use cases, the docu- 1.1The HTML Working Group has re- date Facility which provides expressions ment specifies use cases and requirements leased a Last Call Working Draft of to create, modify and delete nodes. Visit for a format that allows rules to be translat- XHTMLModularization1.1.Thismodular- the XML home page. ed between rule languages and thus trans- ization allows the subsets and extensions ferred between rule systems. The group in- to XHTML needed for emerging plat- 2006-07-10 vites comments through 8 September. Visit forms. This document is based on Modular- Rule Interchange Format Use Cases and ization of XHTML in XML Schema and The Rule Inter- the Semantic Web home page. Requirements Updated the Modularization of XHTML W3C Rec- change Format (RIF) Working Group has

The LaziPublishers Gmbh, Tahiti, Sunk rock, 13.