在万家灯火,元宵节的烟花绚烂绽放的时刻,checkin了代码,随手统计了下代码行,恰好1000行整(包括空行)。冥冥中自有天意?
这个项目是一个分布编译打包发布程序,需要控制多台远端的服务器进行编译,编译过程有很多步骤,还要根据需要增删build 的步骤即参数。
最早的程序是用Python写的,只在一台机器上作,后来随着项目越来越复杂,打包编译花的时间越来越多。于是决定重写,那谁说重写代码是创业公司自杀行为来着?简直扯淡。
我决定使用 Common Lisp 来重写它。经过一周多时间,基本完成。
这一千行代码作的事情却一点也不少,它包含了:
1. 一个web界面,大概6、7个控制器,两个主要的view (没有html模板文件,都是通过lisp代码生成)
2. 一大堆的编译配置选项
3. 操作数据库的部分
4. 解析遗留系统 json 文件的部分
5. 通过ssh 执行命令,并将命令输出结果显示到web页面的部分
6. 编译任务的部分 : 创建、运行状态跟踪、命令输出
再整理下代码,估计可以缩减到 700行以内。
通过这个项目实践,对自己使用lisp的信心更足了。越复杂的项目,它的优势体现的越明显。
Common Lisp开发相比其他语言的一个核心优势是它的开发流程!
通过emacs + slime 这类工具,可以实现程序边运行边修改。程序运行中,可以修改函数代码,也可以修改程序中的变量的值,而不需要重新启动程序。这一点是相比其他开发语言来说非常显著的优势。
用common lisp开发的一个典型工作状态是: 打开emacs , 通过slime 开始执行程序,然后在源代码的各处敲敲打打,边修改边看执行的状态,还可以立刻在 repl 环境下修改变量的值。
这种边运行边开发的模式与PHP那种还不同,PHP程序虽然修改完可以在网页上立刻看到效果,但是是重新启动了一个执行的进程,之前的运行环境都要重新来。
Python也一样,虽然python有类似Lisp REPL那样的交互环境,但是却难以修改源代码,并非不可能,实在是没有趁手的工具。
再往下说 Java C++一类编译型语言,写程序与编译调试运行,整个流程分的太开,流程太长。
这种快速增量开发的模式,带来的就是更高的开发效率,和更复杂问题的处理能力。
分享到:
相关推荐
java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目开发心得java项目...
Winform项目开发心得
Autolisp编程心得.doc
敏捷开发学习心得,自己通过实际的项目总结的经验。
FPGA开发心得,新手必看。。。专业指导。
熟悉了一整个项目的开发、测试的流程。对相关的很多软件有了熟练的操作,包括数据库、服务器、系统、相关网络的搭建。
项目开发心得之人力资源配置.docx
在项目实践部分,文章以一个名为“智慧校园”的项目为例,详细介绍了iOS开发的流程和技巧。通过描述项目的需求分析、设计、编码实现和测试等环节,读者可以了解到iOS开发的完整过程,并学习到一些实用的开发经验和...
2021年网站开发心得体会.docx2021年网站开发心得体会.docx2021年网站开发心得体会.docx2021年网站开发心得体会.docx2021年网站开发心得体会.docx2021年网站开发心得体会.docx2021年网站开发心得体会.docx2021年网站...
MTK开发心得,MTK开发心得,MTK开发心得.
项目管理心得体会与学习合集 项目管理心得体会与学习合集 项目管理心得体会与学习合集 项目管理心得体会与学习合集
一个程序员工作多年的心得体会,不见得对。这个因人而异,也许对你有帮助。
别样诠释 一个Visual C++老鸟10年学习与开发心得
在项目实践部分,文章通过一个具体的“校园助手”项目案例,展示了Android开发在实际应用中的魅力和挑战。读者可以从中了解到项目开发的完整流程,包括需求分析、设计、编码、测试等环节,以及可能遇到的问题和解决...
学习嵌入式系统开发心得,重点结合作者自身经验,谈嵌入式系统学习经验
东南大学学生会管理系统——SRTP项目开发心得体会
pb的开发的心得 很值得看的
总结了revit二次开发中的4个要点: 1.如何编程创建墙饰条 2.如果变成创建管道类型 3.可停靠对话框使用心得 4.为类型添加参数以及修改参数的事件触发。
项目经理心得体会参考.doc