links: common lisp resources on the web

3
intelligence • Fall 2001 21 A I has relied on L i s p almost since the inception of the field. Other lan- guages (e.g. Java [1]) may provide larger libraries of reusable code, but unlike Lisp libraries, their functionality is not necessarily tailored to the needs of AI developers. Many of the building blocks of an AI system, large or small, can be retrieved from the Web, giving Lisp developers a significant boost in their ability to focus on problem specifics and to prototype solutions. If we need, for example, basic search algorithms [2], regular expression processing [3], theorem proving [4], constraint satisfaction or logic programming [5], machine learning algorithms [6], planning algorithms [7], cross-platform user interfaces [8], statistical analysis and instrumentation [9], or any number of other functionality- enhancing toolkits, they are all available over the Web. In this column we take a brief tour of Web resources devoted to Common Lisp. (Common Lisp is an official ANSI Standard language, as of 1994, the first object-oriented language specification to be so approved, and is now the most widely used general-purpose dialect of the Lisp family of lan- guages.) Much of the information presented here can also be found on the Web site for the Association of Lisp Users (ALU) [10]. Where should I start with Lisp? One good place for information is the ALU Web site [10], which is a rich compendium of information about the lan- guage: reference materials, programming tools, implementations, history, and more. The Usenet group comp.lang.lisp is a gathering of knowledgeable and helpful experts, some of whom were closely involved in the develop- ment of Common Lisp. The Frequently Asked Questions list for comp.lang.lisp [11] is some- what outdated with respect to software offer- ings and implementations, but also gives useful general information. Is Lisp programming difficult? Perhaps surprisingly, Lisp programming is not difficult; for example, Logo is a dialect of Lisp that has been used to teach children to program [12]. Experienced programmers sometimes face more difficult hurdles in “unlearning’’ programming practices appro- priate for other languages, to take advantage of the full power of Lisp. David Lamkins has written an online tutorial on programming in Common Lisp that should be accessible to programmers at all levels of experi- ence[13]. Robert St. Amant and R. Michael Young Department of Computer Science North Carolina State University [email protected] links Common Lisp Resources on the Web © Ingo Fast/Artville LLC.

Upload: r-michael

Post on 05-Oct-2016

216 views

Category:

Documents


3 download

TRANSCRIPT

i n t e l l i g e n c e • Fa l l 2 0 0 1 21

AI hasrelied onL i s p

almost since theinception of thefield. Other lan-guages (e.g. Java[1]) may providelarger libraries ofreusable code,but unlike Lisplibraries, theirfunctionality isnot necessarilytailored to theneeds of AIdevelopers. Manyof the buildingblocks of an AIsystem, large orsmall, can be retrieved from the Web, givingLisp developers a significant boost in theirability to focus on problem specifics and toprototype solutions.

If we need, for example,✶ basic search algorithms [2],✶ regular expression processing [3],✶ theorem proving [4],✶ constraint satisfaction or logic

programming [5],✶ machine learning algorithms [6],✶ planning algorithms [7],✶ cross-platform user interfaces [8],✶ statistical analysis and instrumentation

[9],or any number of other functionality-

enhancing toolkits, they are all available overthe Web.

In this column we take a brief tour of Webresources devoted to Common Lisp.(Common Lisp is an official ANSI Standardlanguage, as of 1994, the first object-orientedlanguage specification to be so approved, andis now the most widely used general-purpose

dialect of the Lispfamily of lan-guages.) Much ofthe informationpresented here canalso be found onthe Web site for theAssociation of LispUsers (ALU) [10].

Where should Istart withLisp? One good place forinformation is theALU Web site[10], which is arich compendiumof informationabout the lan-

guage: reference materials, programming tools,implementations, history, and more. TheUsenet group comp.lang.lisp is a gathering ofknowledgeable and helpful experts, some ofwhom were closely involved in the develop-ment of Common Lisp. The Frequently AskedQuestions list for comp.lang.lisp [11] is some-what outdated with respect to software offer-ings and implementations, but also gives usefulgeneral information.

Is Lisp programming difficult? Perhaps surprisingly, Lisp programming isnot difficult; for example, Logo is a dialectof Lisp that has been used to teach childrento program [12]. Experienced programmerssometimes face more difficult hurdles in“unlearning’’ programming practices appro-priate for other languages, to take advantageof the full power of Lisp. David Lamkins haswritten an online tutorial on programmingin Common Lisp that should be accessibleto programmers at all levels of experi-ence[13].

Robert St. Amant and R. Michael YoungDepartment of ComputerScienceNorth Carolina StateUniversity [email protected]

links

Common Lisp Resources on the Web

© Ingo Fast/Artville LLC.

Are there public domain versions ofCommon Lisp? What are the commer-cial offerings? The ALU Web site lists over fifty differentCommon Lisp implementations of varyingcompliance with the ANSI standard [14]. Forany of the most common desktop platformstoday (Windows, Macintosh, Unix, Linux),different commercial and free implementa-tions exist. A sampling from the commercialsystems includes Allegro CL, from Franz [15],Lispworks, from Xanalys (formerly fromHarlequin) [16], and MCL, from Digitool[17]. Free trial versions (with some built-inlimitations) of these implementations areavailable, or one can try the public domainsystems, CLISP [18] or CMUCL [19].Significant AI systems have been built in orported to all of these implementations.

Hasn’t Lisp been superseded by newerlanguages? Far from it. Many emerging features of otherprogramming languages (e.g., garbage collec-tion, dynamic typing, objects, classes, meth-ods, namespaces) have been part of CommonLisp or its ancestor languages for years, if notdecades. The maturity of the language has adownside, however; some early limitations ofLisp may still be associated with the modernlanguage, in the minds of non-Lisp aficiona-dos. For example, one might hear that Lisp isan interpreted language, that it lacks supportfor core data types, that it is slow, that all theparentheses get in the way of reading Lisp pro-grams, and so forth.

All myths [20]. All commercial implemen-tations now have compilers that can providefast, small deliverables. The core language hasextensive support for numerical processing,bit manipulation, string, array, and sequenceprocessing, hash tables, and (of course) listsand symbols. Today’s Common Lisp imple-mentations are as powerful as any other mod-ern language with respect to basicfunctionality, and in many ways offer moreflexibility: interactive debugging during pro-gram execution, clean macro definition facili-ties, and the ability to be tailored to differentprogramming paradigms.

Where can I find examples of CommonLisp programs? All of the programs and tools referenced earli-er are available as source code; many of thesesystems act as examples of good programmingstyle. For more dramatic examples ofCommon Lisp being used in AI research, con-sider these:

✶ Harold Cohen has made the systemAaron available as an executable file[21]. Aaron is a program that createsart; Cohen has devoted the past thir-ty years to Aaron’s development,exploring questions related to thepotential creativity of computers.Aaron is implemented in Allegro CL,and, in a press release, Cohen creditsthe degree of abstraction made possi-ble by the language for the success ofthe program.

✶ The ACT-R theory of cognition is John Anderson’s approach to a unifiedcognitive architecture [22]. Well over200 papers and books have been pub-lished on ACT-R, describing its use indomains that include visual process-ing, spatial reasoning, language pro-cessing, scientific discovery, evendriving behavior.

✶ The Common Lisp Hypermedia Serverwas developed as part of an intelligentnetworking project, and was used for anumber of applications, including theWhite House Electronic PublicationsSystem [23].

Finally, Common Lisp has been used indomains outside AI, with high-profile results.

✶ Paul Graham used Lisp to writeViaweb Store, which, as Yahoo! Store,is possibly the most popular singlepiece of software for e-commerce, run-ning about 14,000 stores [24].

✶ The travel site Orbitz, founded bysome of the largest airline companies inthe United States, is based onCommon Lisp [25].

References1. Ali, Syed, and McRoy, Susan, 2000. Links: Java

resource for artificial intelligence. intelligence

22 Fa l l 2 0 0 1 • i n t e l l i g e n c e

magazine, 11(2), pp. 15-16

2. www.norvig.com/paip/

3. www.cs.rice.edu/~dorai/pregexp/pregexp.html

4. http://logic.stanford.edu/sharing/programs/dtp/

5. www.cis.upenn.edu/~screamer-tools/

6. www.ai.univie.ac.at/oefai/ml/ml-resources.html

7. St. Amant, Robert, and Young, R. Michael, 2001.

Links: AI Planning resources on the Web. intelligence

magazine, 12(1):17-19.

8. www.cs.cmu.edu/Web/Groups/garnet/garnet-

home.html

9. http://eksl.cs.umass.edu/research/clip-clasp-

overview.html

10. www.lisp.org

11. www.faqs.org/faqs/lisp-faq/

12. http://el.www.media.mit.edu/groups/logo-foundation/

13. Lamkins, David B. 2001. Successful Lisp: How to

PERMISSION TO MAKE DIGITAL OR

HARD COPIES OF ALL OR PART OF THIS

WORK FOR PERSONAL OR CLASSROOM

USE IS GRANTED WITHOUT FEE PRO-

VIDED THAT COPIES ARE NOT MADE

OR DISTRIBUTED FOR PROFIT OR COM-

MERCIAL ADVANTAGE AND THAT

COPIES BEAR THIS NOTICE AND THE

FULL CITATION ON THE FIRST PAGE.

TO COPY OTHERWISE, TO REPUBLISH,

TO POST ON SERVERS OR TO REDIS-

TRIBUTE TO LISTS, REQUIRES PRIOR

SPECIFIC PERMISSION AND/OR A FEE.

© ACM 1523-8822 01/0900 $5.00

i n t e l l i g e n c e • Fa l l 2 0 0 1 23

linksUnderstand and Use Common Lisp. http://psg.com/~

dlamkins/sl/cover.html

14. www.alu.org/table/systems.htm

15. www.franz.com

16. www.xanalys.com/software_tools/products/

17. www.digitool.com

18. http://clisp.sourceforge.net/

19. www.cons.org/cmucl/

20. www.xanalys.com/software_tools/products/

myths_and_legends.html

21. www.kurzweilcyberart.com

22. http://act.psy.cmu.edu/ACT/

23. www.ai.mit.edu/projects/iiip/doc/cl-http/

home-page.html

24. www.paulgraham.com/paulgraham/avg.html

25. www.franz.com/success/customer_apps/data_

mining/itastory.php3

Associat ion for Comput ing Machinery

The F i rs t Soc iety in Comput ing

Transactions on Computational Logic is the latest addition to ACM’s

Transactions Series and is devoted to the research concerned with all uses of

logic in Computer Science. ◆ With its great tradition, logic continues to play an

important role in Computer Science and permeates many of its areas including:

artificial intelligence, computational complexity, database systems, and pro-

gramming languages. For more information on areas covered in the journal,

please visit www.acm.org/tocl/. ◆ The high-quality of the submissions to TOCL

are sure to make this new ACM journal the standard reference in the field.

Subscribe Today!

ACM IS PLEASED TO ANNOUNCE

A NEW PUBLICATION!

w w w. a c m . o r g / t o c l /

TO PLACE AN ORDERPRODUCT INFORMATION

ISSN: 1529-3785Order Code: (135)Price: $35 Professional Member

$30 Student Member$140 Non-Member$13 Air Service (for residents

outside North America only)

Contact ACM Member ServicesPhone: 1.800.342.6626 (U.S. and Canada)

+1.212.626.0500 (Global)

Fax: +1.212.944.1318(Hours: 8:30am—4:30pm, Eastern Time)

Email: [email protected]: ACM Member Services

PO Box 11414New York, NY 10286-1414 USA

AD22