g****t 发帖数: 31659 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: guvest (我爱你老婆Anna), 信区: Programming
标 题: [bssd]看完了hacker news上的所有literate programming帖子...
发信站: BBS 未名空间站 (Mon Sep 5 11:57:53 2016, 美东)
这几天一直在考虑python的working flow for my own usage。
本版问了很多问题,也问了很多同事。再次感谢之前参与讨论和
回答问题的各位朋友。
那么现在总结一下。分享给大家。欢迎批评指正。
勿上封面,主页头条。本贴已转去侦探版保存。
先说结论:
--------------------------------------------------------------
反正现在我的结论就是要两套代码。一套Jupyter或者knitr/Rmarkdown
生成。一套按把前面的代码修改补充,封装,重新安排组织,
用sublime做。
--------------------------------------------------------------
1.
我个人认为,这一两年来,python/R的崛起是因为jupyter notebook和
R markdown等等类似的tool。很多场合下,太好用了。
2.
我开始不知道literate programming这个概念。
因为我有Mathematica的经验,所以理解jupyter的坑。Jupyter最大的问题是
不同的cell可以以不同的顺序evaluation。那这很容易跑乱。我当初
Mathematica就老出这个问题。最后我的解决办法就是永远只是顺序执行
cell。
那么这时候我意识到,我其实只需要一个支持好的格式的heavily注释的工具
就行了。然后查到了Docco, org-mode, ....
最后发现这就是克努奇的literate programming。
可以说从Mathematica和Jupyter, Rmarkdown的思考,
我自行发现了这个系统的哲学和其中的道理。
3.
克努奇的literate programming也对也不对。
我自己分析了以下对我自己的价值和原理。
a.市面上大多数的literate programming不支持程序块的顺序重排。
Rmarkdown不行。但是Mathematica, Jupyter可以对程序块改变次序执行。
leo可以。其他的不行。
b.literate programming按克努奇的说法是,instead of 教电脑
干什么,说明为什么人让电脑干什么。这样甚至可以取代unit test。
我不这么看。我认为这个文档和code,code的结果混排的好处在于容易
卖东西。
有的算法容易用code的片段,以及片段的结果来解释,有的算法容易用
文字来解释。这就要求混合起来的可执行。
我个人观点:
literate programming = 天生的销售员利器。
4.
那么回到coding。现在就有一个矛盾。
按照
(A)销售逻辑或者slides 逻辑,也就是人类的装B逻辑来组织代码,
(B)还是按照电脑语言的实现逻辑,性能逻辑来组织代码?
这两者是互动的。因为你选一个A和B之间的trade off。
那么为了解释这个trade off,这又是一个逻辑,然后你就进入了AA,AB,ABA,...
这个问题literate programming没有解决。
有人说literate programming是有害的。其实说的很对。因为有的程序是
60ms定生死的。或者逻辑差一点,后面会引起严重的维护困难和后果。
对这个问题,我也没有答案,也没找到tool。现在这方面的讨论都是各执一端。
那么我换个脑子想一下。既然不能一次性解决问题。那不如找个中间点。
所以现在认为的最好的答案就是:
写两套代码,
(A)一套是literate programming的。
(B)一套是从literate programming里面自己tangle出来的,可以高效
被电脑执行的代码。
我希望达到这样的目的,A,B所需的工作量可能是只写一套的1.2倍。
但是这20% 的额外功夫是完全值得的。且不说对代码质量的提高,
只说销售,花20% 的时间弄销售或者内部communication是很便宜的。
------
反正现在我的结论就是要两套代码。一套Jupyter或者knitr/Rmarkdown
生成。一套按把前面的代码修改补充,封装,重新安排组织,
用sublime做。
------
<回头有空再补充资料链接,以及其他研究> | h*******2 发帖数: 5093 | 2 看不懂
哥只用c, 是不是老古董了!
【在 g****t 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: guvest (我爱你老婆Anna), 信区: Programming : 标 题: [bssd]看完了hacker news上的所有literate programming帖子... : 发信站: BBS 未名空间站 (Mon Sep 5 11:57:53 2016, 美东) : 这几天一直在考虑python的working flow for my own usage。 : 本版问了很多问题,也问了很多同事。再次感谢之前参与讨论和 : 回答问题的各位朋友。 : 那么现在总结一下。分享给大家。欢迎批评指正。 : 勿上封面,主页头条。本贴已转去侦探版保存。 : 先说结论:
| g****t 发帖数: 31659 | 3 我讨论的是销售的学问。
literate programming最开始是pascal,更古董。
【在 h*******2 的大作中提到】 : 看不懂 : 哥只用c, 是不是老古董了!
| g****t 发帖数: 31659 | 4 這是我當年的一點Notes。Jupyter notebook肯定比演示效果ppt強。因為ppt不包含可
執行代碼
,這方面演示效果不強。最多弄個gif,
Video |
|