由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
CS版 - [讨论] Literate Programming
相关主题
科班和非科班的区别Literate programming
大家都用什么做简单图[讨论] Literate Programming
有哪些it企业招非cs专业的?除了类,c++和C区别在那?
相关话题的讨论汇总
话题: lp话题: literate话题: 过程话题: 程序
进入CS版参与讨论
1 (共1页)
t****a
发帖数: 1212
1
这是Knuth在84年提出的编程方式。
http://en.wikipedia.org/wiki/Literate_programming#Further_readi
我是个data scientist, 坚持这种编程方式已经有3年了。我使用过的literature
programming语言中包有R, python, lisp, clojure, sql, graphviz等。现在在使用的
literature programming tool是emacs org-mode+babel。自我感觉,这种方式刚开始
很难上手,习惯了以后,大大提高了我的工作效率。
这确实是一种很少人使用的技术。
我也能理解很多朋友对这种方法的质疑。毕竟它从提出开始有30年了,目前为止没有大
规模应用。可是我们知道很多学术概念到应用之间会相隔很久。比如OO的概念是60年代
就提出的。80年代C++出现之后才开始逐渐开始大规模应用。
Literature Programming (LP)的过程,就我的体会,更象是设计的过程,而且把设计
贯穿了整个编程序的始终。它强迫我在写程序之前仔细思考描述程序的逻辑,在整个项
目中的地位等。
在网上我看到了很多对LP的质疑,其中一种质疑是,程序并不是论文,不能够按照文章
的形式来组织程序逻辑。这里就问了一个很好的问题:程序究竟是以什么形式组织的?
文章又是以什么形式组织的?两者有相似之处么?
在我看来,两者都采用的是数据结构中的LIST(散列表)形式来组织。论文分为章,节,
小节,段落;程序也可以分为不同的逻辑分块,每个逻辑分块又分为各个小块,上层的
逻辑分块调用下层的逻辑小块,其中也存在交叉调用,就好像一篇论文内部的交叉引用
。从这个意义上说,LP的过程是自顶向下的设计过程。
支持我的论点的,经典的例子就是java里包的树状结构。
事实上,LP并不反对test case。我认为test就应该算作整个LP中的一个重要的章节:)
LP的优点,是它可以使用包括语言在内的各种方式来帮助/强迫程序设计师在code前进
行设计。同时生成高质量的文档,对于维护程序非常有价值。我经历的一个很好的例子
是一个比较复杂的operational research分析程序,从开始第一版到最后定型,中间经
历了很多的需求改变过程,LP在其中大大节省了我的时间。有些朋友觉得javadoc就是
个很好的LP工具,可在我看来,它不强迫先设计后写的过程,同时生成的文档又有诸多
限制(比如它只能支持文字),因此不能算作LP工具。
目前LP的局限之处是缺乏足够的工具来帮助程序员高效率的做LP。我曾尝试过一些不同
的工具,最后感觉emacs中的org-mode和org-babel配合一些自己写的emacs lisp宏对我
很合适。
Knuth有一本关于LP的书,我才刚刚开了个头,里面我相信会看到他的非常有价值的建
议。
非常欢迎各位朋友来讨论这个问题,我们相互提高。
a*w
发帖数: 4495
2
我觉得LP对开发者要求比较高,需要很强的纪律性。

【在 t****a 的大作中提到】
: 这是Knuth在84年提出的编程方式。
: http://en.wikipedia.org/wiki/Literate_programming#Further_readi
: 我是个data scientist, 坚持这种编程方式已经有3年了。我使用过的literature
: programming语言中包有R, python, lisp, clojure, sql, graphviz等。现在在使用的
: literature programming tool是emacs org-mode+babel。自我感觉,这种方式刚开始
: 很难上手,习惯了以后,大大提高了我的工作效率。
: 这确实是一种很少人使用的技术。
: 我也能理解很多朋友对这种方法的质疑。毕竟它从提出开始有30年了,目前为止没有大
: 规模应用。可是我们知道很多学术概念到应用之间会相隔很久。比如OO的概念是60年代
: 就提出的。80年代C++出现之后才开始逐渐开始大规模应用。

t****a
发帖数: 1212
3
哎,我自己就是个自由散漫毫无纪律观念的家伙...

【在 a*w 的大作中提到】
: 我觉得LP对开发者要求比较高,需要很强的纪律性。
g******w
发帖数: 78
4
做data analysis用这个着实不错,我也用noweb。但觉得在develop software时未必合
适。
L*****k
发帖数: 327
5
赞coding学术贴~

【在 t****a 的大作中提到】
: 这是Knuth在84年提出的编程方式。
: http://en.wikipedia.org/wiki/Literate_programming#Further_readi
: 我是个data scientist, 坚持这种编程方式已经有3年了。我使用过的literature
: programming语言中包有R, python, lisp, clojure, sql, graphviz等。现在在使用的
: literature programming tool是emacs org-mode+babel。自我感觉,这种方式刚开始
: 很难上手,习惯了以后,大大提高了我的工作效率。
: 这确实是一种很少人使用的技术。
: 我也能理解很多朋友对这种方法的质疑。毕竟它从提出开始有30年了,目前为止没有大
: 规模应用。可是我们知道很多学术概念到应用之间会相隔很久。比如OO的概念是60年代
: 就提出的。80年代C++出现之后才开始逐渐开始大规模应用。

1 (共1页)
进入CS版参与讨论
相关主题
大家都用什么做简单图[讨论] Literate Programming
有哪些it企业招非cs专业的?除了类,c++和C区别在那?
Literate programming科班和非科班的区别
相关话题的讨论汇总
话题: lp话题: literate话题: 过程话题: 程序