Literate Programming

Literate programming is the art of preparing programs for human readers.

Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do. -Donald Knuth


History


Software Costs


Common Documentation Problems


Conventional Programing and Documentation Flow

Conventional Programming Doc Flow

Literate Programming Flow

Literate Programming Doc Flow

Related Tools


Literate Editor with Outlines (LEO)


LEO Screenshot

LEO Screenshot

Leo Help


What Leo Does - Literate Programming

LEO Data Flow

Example - ToDo List

ToDo List LEO example XML data file

<?xml version="1.0" encoding="UTF-8"?>
  <leo_file>
    <leo_header file_format="2" tnodes="0" max_tnode_index="0" clone_windows="0"/>
    <globals body_outline_ratio="0.5">
      <global_window_position top="20" left="20" height="600" width="800"/>
      <global_log_window_position top="0" left="0" height="0" width="0"/>
    </globals>
    <preferences/>
    <find_panel_settings/>
    <vnodes>
      <v t="gwhiteman.20050406104511"><vh>personal</vh></v>
      <v t="gwhiteman.20050406104511.1" a="E"><vh>work</vh>
      <v t="gwhiteman.20050406104511.2" a="E"><vh>projects</vh>
      <v t="gwhiteman.20050406104511.3"><vh>project_a</vh></v>
      <v t="gwhiteman.20050406104511.4"><vh>project_b</vh></v>



      </v>
      <v t="gwhiteman.20050406104511.5"><vh>assigned tasks</vh></v>
      <v t="gwhiteman.20050406104511.6" a="ETV"><vh>meeting notes</vh></v>
      </v>
    </vnodes>
    <tnodes>
      <t tx="gwhiteman.20050406104511"></t>
      <t tx="gwhiteman.20050406104511.1"></t>
      <t tx="gwhiteman.20050406104511.2"></t>
      <t tx="gwhiteman.20050406104511.3"></t>
      <t tx="gwhiteman.20050406104511.4"></t>
      <t tx="gwhiteman.20050406104511.5"></t>
      <t tx="gwhiteman.20050406104511.6">@nocolor
 
      I fell asleep...ZZZZZZZZZZZZZZZZZZ</t>
    </tnodes>
  </leo_file>
...

Installing Leo


Leo Limitations


Leo Directives

@doc, or @
@code, or @c
@nocolor, @nocolor
@language 
@silent
@ignore

Derived files using @root


Derived files using @file


Importing with @file

choose File -> Import -> Import to @file

Cloned Headlines


Exporting