2013年1月29日 星期二

Literate Programming 文學編程(LP)

第一次看到這個字眼是因為org mode中有一個org-babel,號稱是LP的實作

一般寫程式時,會有放注解的地方,或是產生一堆文件;

LP的思路完全相反,但也更符合人性︰寫文件,然後程式只是附帶的產物

當然也可能有些盲點,例如,會失去IDE中的許多便利,如auto complete等,這己經夠令人頭大了

而且程式中的語意,LP未必有對應的工具去表達,例如#include的含入檔

當直接對tangle的產出程式修改時,要把修改反映回LP文件中也是一件麻煩事

http://josephj.com/event/2012/frontend-beijing/%E6%96%87%E5%AD%B8%E7%B7%A8%E7%A8%8B.html

這個網頁介紹得相當的不錯,作者是從iOS的Leo來作介紹

http://angelonotes.blogspot.tw/2012/07/literate-programming-cweb.html

原汁原味的LP介紹,Knuth當年的cweb,可讀性有點…難怪org mode會取代它

http://kanru.info/blog/archives/2011/07/07/literate-programming/

這是另一個使用notangle的例子,比較有一點實用性

http://www.cnblogs.com/bamanzi/archive/2012/05/12/org-mode-so-powerful.html

這裏面有一段關於LP的介紹,及org babel在實作.emacs的LP時需要的設定

http://www.perlmonks.org/?node_id=735862

LP的爭議一直存在,主要是說,這麼詳盡的注解是否反而降低了生產力?

但是如果是用org mode來取代原版LP使用的文件系統TEX/LaTEX的話,能突顯當前關注的焦點所在,我認為很有用

不過更麻煩的一件事是,編譯時錯誤訊息回報的行號,在LP的原始文件對應到哪裏呢?debug時也會遇到相同的問題。這可能才是使LP發展停滯不前的主因…

http://www.jstatsoft.org/v46/i03/paper


以org mode中LP的應用為題發表的論文,我覺得沒有把org mode的優點發揮出來

http://www.sdragons.org/Software/Perl/LitPerl.html

這是比較實際的例子,用perl作為實作語言。附帶一提,該作者的網頁滿有可看性,例如perl的cheatsheet

WEB/CWEB/NOWEB/NUWEB


 http://www.cs.tufts.edu/~nr/noweb/nuweb.html

這篇文章中解釋了LP的起源和流變,而它本身也就是nuweb的原始檔,brilliant!!

沒有留言:

張貼留言