当前在线人数16834
首页 - 博客首页 - 文摘 - 文章阅读 [博客首页] [首页]
[bssd]看完了hacker news上的所有literate programming帖子...
作者:guvest
发表时间:2016-09-05
更新时间:2016-09-05
浏览:229次
评论:0篇
地址:173.
::: 栏目 :::

这几天一直在考虑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做。
------

<回头有空再补充资料链接,以及其他研究>








提示: 本博文来自于 Programming 版

[上一篇] [下一篇] [发表评论] [写信问候] [收藏] [举报] 
 
暂无评论
 
用户名: 密码:
发表评论
评论:
[返回顶部] [刷新]  [给guvest写信]  [文摘首页] [博客首页] [BBS 未名空间站]
 
Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有BBS 未名空间站(mitbbs.com) since 1996