一般寫程式時,會有放注解的地方,或是產生一堆文件;
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!!
沒有留言:
張貼留言