I am a college student at a school that teaches mainly in Java. One of the strong points of Java, which I quite enjoy, is the large collection of libraries. What makes these libraries especially useful is the extensive documentation and organization presented via JavaDoc. Are there any library collections for Common Lisp which also have these qualities, and is there a tool similar to JavaDoc which would assist in the building, maintaining, or expanding of these libraries?
views:
352answers:
8Try cliki or common-lisp.net.
As to javadoc...you know about docstrings? If not, find out. Also find out about all the other self-documenting features.
It sounds like you haven't read the spec. Always read the spec, whatever you are doing.
No, there is no comprehensive, consistently documented library collection. The inexistence of such a thing is Common Lisp's biggest problem right now. If you're interested in helping the Lisp community, this may well be the thing to attack first.
Also, while there are various JavaDoc equivalents, there is no widely accepted quasi-standard as for Java.
Yes there are extensive, documented library collections at http://www.cl-user.net, http://www.cliki.net and http://clocc.sourceforge.net. As well as advanced 'asdf' or 'mk-defsystem' base infrastructures to use them.
There are many available libraries for Common Lisp and many of them are thoroughly documented. JavaDoc, in my own experience (or any such tool like Doxygen for C++), is not a valuable tool to document a library but more to document its implementation.
So documentation is not a matter of tools here, but of will of the lib's author to write a decent manual. In this area, Common Lisp is like any other language: there are beautiful pieces of engineering with wonderful documentation, quick and dirty code without the slightest sign of documentation, as well as all possible combinations of code and documentation qualities...
All in all, I personnally found that Common Lisp libraries have a pretty high overall quality.
I recommend clbuild, which contains a collection of quality libraries compiled by a group of experienced, discerning lisp programmers (as well as script to download and install those libraries).
If you want guidelines for writing highlevel/api documentation, I suggest you follow the examples set by Edi Weitz and others (e.g., see Hunchentoot, Vecto).
For lower level implementation documentation, I think the built-in docstring mechanism together with Slime's source navigation and autodoc facilities comprise the best existing environment for code exploration.
If you are used to Java, you may give Clojure a chance and keep using the Java libraries you know.