Programming pearls: a literate program
http://www.cs.tufts.edu/~nr/cs257/archive/don-knuth/pearls-1.pdf

On Wed, Oct 26, 2011 at 10:49 PM, jaime <xiejianm...@gmail.com> wrote:
> is there a place introducing (e.g. overview) more about Literate? have
> no ideas about this stuff.
>
> On Oct 27, 3:06 am, d...@axiom-developer.org wrote:
>> I see that my Literate Programming session is beginning to gain some
>> traction. I would encourage you to bring examples. We can discuss the
>> merits and possibly gain some new insights. If nothing else, please
>> sign up for the Literate Software session at Clojure-Conj. I promise
>> to keep it short.
>>
>> Literate programming can take various forms. I am working on a survey
>> of literate software. I came across an interesting non-latex example
>> worth sharing:
>>
>> http://jashkenas.github.com/coffee-script/documentation/docs/nodes.html
>>
>> Notice how well they have documented an apparently simple line as in:
>>
>>   exports.Base = class Base
>>
>>   The Base is an abstract base class for all nodes in the syntax tree.
>>   Each subclass implements the compileNode method, which performs the
>>   code generation for that node. To compile a node to JavaScript, call
>>   compile on it, which wraps compileNode in some generic extra smarts,
>>   to know when the generated code needs to be wrapping up in a
>>   closure. An options hash is passed and cloned throughout, containing
>>   information about the environment from higher in the tree (such as
>>   if a returned value is being requested by the surrounding function),
>>   information about the current scope, and indentation level.
>>
>> Notice how this is not only giving trivial information (e.g. Base is
>> an abstract base class) but WHY it exists (..as a base for all nodes in
>> the syntax tree). It gives operational information (to compile a node..)
>> as well as information about the effect (..which wraps...). It shows
>> how global information is used (An options hash..) and WHY (containing
>> information about the environment...)
>>
>> Code only tells you HOW something is done at the time it is done.
>> It's like having a recipe without an idea what you would make.
>>
>> If our standards of documentation were raised to this level then large
>> systems like Axiom, Clojure, and ClojureScript would be much easier to
>> maintain and modify in the long term.
>>
>> If you want your code to live beyond you, make it literate.
>>
>> Tim Daly
>> d...@literatesoftware.com
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to