Literate Programming -- 文学化编程

-- ZoomQuiet [2004-12-14 04:00:18]

Leo 被认为是一个艺术化的编程工具、数据组织器和工程管理器

1. 新的编程方式

1.1. 使用

  • Leo's Home --主页下载安装!

    • 4Win 的可能不能正确识别已经安装的Python 环境!
    • 建议下载 .gz 包,解压后直接使用!创建 "python path/to/leo/loe.pyw"快捷方式就好!

1.1.1. LeoEnvironment

1.2. 讨论

  • Emacs -- 编程环境的介绍中引发
    • 咦咦咦?!??!Leo!! 唉呀呀!! tomz 是怎么使用的?开始文章化编程了? 我仅仅用它来进行信息管理,可以自个儿加菜单什么的进去? -- Zoomq
      • 可以叫文学化编程吧,我理解文学化编程是一种更好的fold,并能部分代替uml。我现在用leo管理我的代码。感觉非常棒。再也不为代码多而烦恼了。它有多文件管理功能,自动同步文件,能够同步链接两个代码部分。都很有用。leo可以叫做项目管理工具吧。在debian的安装中也包括文学编程,看来文学编程是一个主流编程工具,并不是冷僻的工具。by tomz
        • LiterateProgramming -- 文章化编程! 早就想系统的学习了,只是总感觉无从下手!

          • 最简单的概念,就是把它当作一个可以在任何地方fold的程序代码编辑器,更方便编程思路的梳理,比一般编辑器的只能在固定语言元素的地方fold有更大的灵活性,并且leo是一个信息集成的概念,可以把文档,代码,路线图,bug收集等放到一个leo文件中,并且能够方便的生成多个文件,而且能够将文件中变化的内容反馈回leo文件。因此,leo可以作为一个通用的多文件的项目的管理器。by tomz

1.2.1. 经验

请同志们介绍一下子哪!

  • 如何 可以把文档,代码,路线图,bug收集等放到一个leo文件中..?

  • 又是如何 能够方便的生成多个文件..?

  • 我在初期使用过程中,总是难以把握拆分的原则,而且到4.2最终版本,Leo 的拖拉行为支持的也实在一般,在混入多个文件时,启动非常的慢!而且快捷键,也没有找到习惯的方式
  • Tomz 可以介绍一下子,自个儿使用的经验?? -- ZoomQuiet

    • 我还没感觉慢,可能我的文件还比较小。就像leo这个程序的leo文件,把程序、更新信息、readme等所有和一个项目相关的信息都放到一个leo文件里。我打开leo.leo也没感觉慢啊。拆分的原则就是以项目为原则吧。一个项目的所有信息都放到一个leo中。leo的file的派生方式,保存leo文件,自动派生相关文件。等于一个自动的make。我还没用拖拉。我的leo文件的相关派生文件有5个了。没什么速度方面的感觉。快捷键只用它的移动节点和缩进、生成节点,没用过别的。leo的编辑快捷不专业。但leo有这个功能:用自己 常用的文本编辑工具编辑leo派生的文件后,打开leo文件时,leo文件自动更新,可以把变化的地方反映到leo文件中,这样就能继续使用自己常用的编辑器。它也能对一个节点的编辑来调用定制的编辑器,但这个功能我没用过。一般的工作流程就是在leo中改代码,保存,保存的同时自动同步改变派生代码文件,然后用python shell和pdb来调试。如果要迅速到达出错的行,可以启动vim。by tomz
      • 文件派生 --- tangle 混入?? 嗯嗯,其实是对 Leo 整体的使用思路有点担心,一个项目的各种文件,如何可以安全的同步? 指定适当的结点集合来进行运行?等等………………没有中文版本的界面嘛?呜乎矣哉…………

        • 对,派生就是tangle。leo这么大的程序就是这样开发的,我们自己编的程序一般都没这么大。当然,项目不是指多人的项目,如果是多人的项目,顶多用于自己的部分。或一个模块。自动同步不用担心吧?应该没什么问题。自己多备份就行了,不是没有备份的习惯吧?一个leo文件才容易备份。为什么指定特定的节点集合运行?一个文件就是一个节点。没有中文界面不是问题吧。现在我用软件一般有中文界面我也不喜欢用,我喜欢用大家都在用的界面。用缺省的语言界面。by tomz
        • 另外,如果只用leo的outline功能,emacs 的outline和folding的结合是更优雅的解决方案。当然,leo的好处是较少的学习和配置。如果将来我emacs用熟了,也可能放弃leo,转而用emacs noweb的方案。by tomz
      • 如果要迅速到达出错的行也就是说,Python Shell 的报错,与Leo 中组织的方式,行数是对不上的?那未,又如何启动Vim ?从Leo 中可以?-- ZoomQuiet

        • 嗯,启动vim就是因为leo的行对不上。在leo的外部启动。by tomz
      • ps. tomz 好歹也注册一下子 MoinMoin ,不然的话每次编辑,在版本信息中都只有IP 地址记录下来看不到具体的人是也乎…………

1.2.1.1. 如何控制编码?

  • 使用Leo 编辑 XSL/XSLT 实在是爽哪!
  • 可是!默认输出的是 UTF-8 编码!!! 这令浏览器都没有办法!!
  • 怎么样的哪? -- ZoomQuiet

    • FT! 自个儿的错误!
      <?xml version="1.0" encoding="GB2312"?>
      
    • 这样的XML文档声明当然无法令解析正常的!!!
    • UTF-8 绝对是通用的编码!!!以后一切都使用之进行记录了!!! -- ZoomQuiet

1.2.1.2. 如何使用@file

  • 哎呀呀!按照教程 import to @files
  • 成功的分析了Python 脚本,但是不能象教程那样编辑后检出为外部文件哪!怎么回事儿?
    • Tangling...
      ----- The outline contains no roots
      Tangle complete
      
      
    • 或者说有什么其它的设置?? --- ZoomQuiet


  • Leo 有两种方式获得外部文件:
    1. @root 方式,通过声明,主动输出下层结点为外部文件
    2. @file 从外部解析获得文件后进行交互式外部文件操作:
      • 两者唯一的不同是,使用 @file 的话 Leo 将自动输出 OUTLINE信息到外部文件, 你将不能使用 @silent 命令来阻止! 不过你可以不用通过 "Tangling"及"unTangling"命令来同步Leo和外部文件 "Tangling"及"unTangling"将在保存和打开.leo 文件时自动调用
  • 可是,我怎么也不能令 import to @file 的脚本结点,可以自动的保存为外部文件!!!
  • -- ZoomQuiet

1.2.1.2.1. 自我解决
  • 哈哈哈!看了 LeoDoc.leo 才发现:

    • "import to @file" 时自动加入的以下两个命令

@ignore
@language python
  • 对于 @file 模式是非法的!只要清除之就可以自然的进行同步操作了!
  • 嗯嗯!Leo 的确可以作为:

    • 编程环境
    • 工程管理环境
    • 知识分类管理环境
    • ...

1.3. 链接

http://www.linuxforum.net/forum/showflat.php?Cat=&Board=python&Number=310942&page=26&view=collapsed&sb=6&o=&fpart=

可惜www.dohao.org关闭了。找不到leo的设置介绍了。也没有wget,遗憾。

在leo中有个设置文件,编码设置为mbcs,就能输入gb2312。设置文件是root文件,注意tangle。