【转自:http://markmail.org上几位大人的邮件讨论。原汁原味的,大家自个儿看吧】
=================
limodou:
文学编程不是一个新东西,是由Donald
Knuth提出来的。不过我接触经时间很短,但在CPUG第九次会课上听了zoom.quiet关于leo的讲解开始有所体会。再看一看我写的django
step by
step,现在我想,如果在写教程时,其中的代码就是最终的运行代码,那么等我的教程写完了,程序不也编完了嘛。当然这其中操作起来还有难度。不过我不想使用
leo 来进行文学编程。大家有什么想法吗?可以考虑开发一个从rst中提取代码的工具?还是有更方便更好的想法。
=================
马踏飞燕:
文学编程我还没搞清楚它的精要,不过倒是leo的研究有了点进展,哈哈!
因为leo是用tree的结构组织的,所以对node的操作就很方便了。
不管是写计划,还是程序、文档,大都可以先写在一起,接下来再分离到各个节点。
可以复用的还可以单独拎出来放到一起,还可以写一写脚本来管理节点里面的内容或者文件系统的内容。
不过leo我还是略知皮毛,还需要zoom多分享经验哪!
=================
Zoom.Quiet:
手册!实例!练习!截屏!
一个都不能少哪!
否则,大家仅仅从字面的"文学化编程"来理解,一定是偏离的…………
Leo 的"文学化"是�借,文学的组织思�来比喻,全新的编程行为是也……
=================
分散的代码,这也只在python才有较大的意义,在不具备交互式的环境下,顶多也只有讲解的意义。而且从现在来讲,文档跟代码的这种整合只具有示范的意义。因为目前没有多少程序支持这样做。因此,我说双向自动化就具有了突破的意义。
另外,分离了代码再整合回去,可以让很多人参与,毕竟,没有多少人对写文档感兴趣。更多的是为了学习。学习的过程就可以贡献代码。文档支持下的代码的演化最终还可以支持文档。
=================
不会只对python感兴趣。一般写代码可能是这样的:
def main():
<<init>>
<<process>>
也就是说从粗到细。通过<<name>>的形式来包含代码块,不需要让人一下子就看到细节。这样处理的话,更方便文档的写作。因此采用这种方法,可以方便地将文档与代码穿叉起来。
文学编程本身就是更看重文档,如果对文档不感兴趣,不需要使用文学编程的形式。而且他完全可以修改生成后的东西。贡献的方式也有很多,也不一定需要直接修改原始的东西,可以通过补丁之类的来实现。而且先想到可以自已用,而且能够真正实用,再考虑给别人用为好。别人如果不接受这种思想,光有好的想法也是没有用的。
因此首先是让自已适应。不过的确可以考虑反向代码合并的处理,只不过要加些特殊的标记。其实在leo处理分布文件时也是有许多特殊的注释,你可以不用leo修改这些文件,但这些东西绝对不能破坏,如果破坏掉了,那只有重新设定了。
=================
如果一个函数比较长,又不愿意把它分成更多的小函数,那么,leo这种处理代码片断的方式是很好用的。等于是一个附加功能,在其它编辑工具上不能使用也不是很不方便。
但使用leo多了,函数会习惯写比较长的,这是leo的优点,在其它编辑器上不能看也没有办法。就像其它的预处理工具那样。离了预处理工具总是不方便。
象我上面提出的用folding来代替leo的方案,同样,有特别的标记,离了folding,用别的编辑器看代码会不舒服。
所以,我提出把leo的思想用到平常的python编程中,而不直接使用leo。把一段有意义的代码尽量做成函数。
但还是leo比较漂亮,因此,尽管leo有一些不方便的地方,但如果用惯了。还是离不了。leo来浏览代码,很容易读懂代码,代码也很漂亮。
这样说,总是很抽象,只有用过才能体会到leo的好处。才会感觉到,原来,写代码能够象写书那样漂亮,好懂。正因为leo的好处,才有人宁愿被leo锁定,增加一个编程步骤,也不放弃leo。而,也只有用过leo,体会到文学编程的好处,才能谈离开leo,否则根本不会理解什么是文学编程。
=================
看来有必要将文学编程的思想论述文章翻译出来,
之前俺讲的一些定义可能造成了误解,
文学编程从字面上看是把程序以文章的正式来看待而非严格的类,函式等等;
具体的源起我也没有研究,
只是在一定规模的使用Leo 后感觉到文学化的方便,
其实没有limodou 担心的事儿,
佷早以前就有类似 TreeEdit TreeNote 之类的树结构信息组织编辑环境,
而且也有clone 之类的操作,
Leo 不过是作的更加精简而已,
其实不论你使用什么编辑环境,人们都不由自主的使用文学化的编程,
将软件行为下意识的组织为不同类的动作,不同的动作中又抽象出共同的功能…………
只是在普通编辑环境中只能以有逻辑关系或是命名规则的形式来标识这些"章,节化的程序"
Leo 不过是显式的加强了这样的书写,
你可以自由的按照你的谅解将一堆类,函式,片段,说明,等等任何东西组织成一个节点,来快速你的程序的快捷理解和增长…………
=================
用leo就是和一般的编程不同,很多原来用函数的地方会渐渐的不用函数。当然,也只能用leo来看。leo可以看作代码的前处理。既然针对这个前处理写代码,那么就离不开它了。
当然,多处重复使用的地方还用函数。如果用root方式,多处使用也不同函数。
使用leo会和函数比较矛盾:既然都定义函数了,怎么还要再做节点?因此,我尝试不用leo了。用emasc加folding。但这个解决方案更难学,当然,也有他的好处。
使用leo的好处就是简单、友好。用了leo,感觉非常人性化,符合人的思路,想什么,写什么,较少考虑计算机的流程和实现。但,缺点是和其它工具的结合不是很好。因此,可以考虑把leo的思想融合到编程中去,而不使用leo。
另外,考虑把haskell的思想融合到python编程中去,而不用heskell。
=================
分享到:
相关推荐
leo-editor 关于 flutter 变量管理插件 Provider 官方例子文学化编程分析
leo-editor关于flutter企业级路由fluro官方例子文学化编程分析
开源项目内容分析
leo:Leo编程语言。 零知识应用程序的功能性静态类型语言
ActiveX控件容器在可视化编程系统中的实现
46--[[可作弊]66Leo66的村庄保卫战].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码46--[[可作弊]66Leo66的村庄保卫战].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码46--[[可作弊]66Leo66的村庄...
由于小卫星技术的快速发展,以及低轨卫星(LEO)相比传统的地球同步轨道卫星(GEO)具有低时延、低传播损耗等优点,宽带LEO星座卫星通信系统逐渐成为当前卫星通信领域的发展热点之一。目前,世界许多国家和卫星通信...
可作弊66Leo66的村庄保卫战-少儿编程scratch项目源代码文件案例素材.zip
LEO BREIMAN的随机森林论文
DFT_LEO_USBH_WM65.rar 用于HD2在WM6.5下的OTG驱动。
资金注入\支出(非货款)、财务状况查看 客户管理-客户资料明细 数据安全-数据备份、数据恢复 常用工具-计算器 <br/>以及相应项目的报表打印、预览等功能 <br/> msn:leo_a008@hotmail....
Leo GRADY的随机游走结合图论模型下的分割算法,比较详细。 matlab实现
<<leo购销管理系统>>是专为小型企业、店铺、个人开发的进、销、存管理、理财、客户管理的工具软件,支持小票打印机及条码扫描枪,可导出数据到EXCEL,具有如下功能: 用户管理-用户管理(可设置各自权限)、修改密码...
插件化工程,用于了解插件化
Twincat Plc编程手册,版本2,其中语法适用于版本3 编程手册 TwinCAT PLC 编程手册TwinCAT PLC 编程手册 2005 年《TwinCAT PLC 编程手册》出版以来,迄今已有 6 个年头了。本书自出版以来一 Beckhoff 产品用户...
播放课程时的小工具,以我的信誉担保,没毒:)
htc hd2 wm6.5珍藏版官方繁体中文,留作纪念,RUU_Leo_S_HKCSL_CHT_3.14.832.3_Radio_15.42.50.11U_2.15.50.14_LEO_S_Ship.exe
Leo_SQLServer
Random forests are a combination of tree predictors such that each tree depends on the values of a random vector sampled independently and with the same distribution for all trees in the forest....
在 OPNET仿真环境下, 通过对 LEO卫星网络协议构架...及切换、长时延等一些卫星网络特性给其他协议带来的影响。最后通过对作者提出的一种路由算法进行仿真, 验证了该 仿真平台能够在一定精度上模拟 LEO卫星网络环境。