ErlyBird-与dcaoyuan聊天(转)
ErlyBird-与dcaoyuan聊天
10月20日,有幸能和出差来北京的 dcaoyuan 见了一面,于是有了一次愉快而且让人获益良多的谈话,值得记录。
关于 dcaoyuan 先生
(是的,这里的 id dcaoyuan 就是他,他同时也是 netbeans 平台下的 erlang开发环境 — erlybird 的作者本人)
dcaoyuan 先生的年纪可能比我们这帮程序员都要大上好几岁,这在国内广泛持有“程序员吃青春饭”论调的中国程序员当中,是相当罕见的。实际上 dcaoyuan 先生在第一次互联网浪潮中就已经颇有建树,他于 2000 年左右出国,现居加拿大,平常“做做咨询”、“帮朋友管理一些项目”,或者干脆就“在家歇个一年半年的”,衣食无忧,随兴而为的过着传说中“功成名就归隐田园”的程序员版理想生活。他称自己是“真正对编程感兴趣的人”——确实如此。编程实非易事,若非兴趣所在,必将其视若苦旅,一有机会恐怕就会赶紧离开这个行业了,不会干到现在。而 dcaoyuan 先生时至今日都仍然活跃在编程的第一线,尤喜亲自操刀编码,闲暇之余,随手贡献了多个开源项目(股票分析软件AIOTrade, ErlangIDE开发环境Erlybird),确实是让人非常佩服。
下面是根据和 dcaoyuan 先生的交流整理出来的聊天记录。话题比较杂,分四个方面归纳。
语言
使用 Erlang 有多久?
至今已经有一年多时间,之前熟悉的编程语言是 Java, Ruby on Rails 等。
开发环境?
Mac Book Pro + ErlyBird/Emacs
语言特性?有何看法?
Record 语法难看,但有时又很方便。感觉比较复杂。
欠缺 Language/Encoding 支持,自己做了很多工作。
欠缺语言级的 Hash 支持,很多时候用 Prop List 来代替。
项目
项目大致是怎样的?
一个 LBS/Mobile 相关的 Web 2.0 项目,目前已经进入 alpha 。
系统架构?
从 ruby on rails 架构转过来,目前 web 层仍然是 ruby on rails 的,通过 web service 调用 erlang 实现的底层服务。
这个架构中 Erlang 主要解决什么问题?
应用本身有类似网关的特点,一个用户的 request 在后端可能需要服务器再发出 n 个 request 才能完成业务,在后端服务上利用 erlang 的高并发特性,优化整体性能。日后不排除也用 erlang 的方式来实现 web 层。
人员?
无 Erlang 经验的程序员(有其他语言编程经验),经培训(一个月左右),使用 erlang/otp 来独立完成系统构建。(dcaoyuan认为:在所有 FP 当中 erlang 的学习曲线算很平滑的了,在有经验的架构师指导之下,相对新手的程序员也能独立完成相应的模块)
Erlybird?
Why Erlybird?
因为项目组中的其他程序员还是难以适应 Emacs 之类的开发环境,而基于 Eclipse 平台的 ErlIDE 又有不稳定的问题,缺乏好用的开发工具。因而,用了一个多月的时间基于 netbeans 平台做了一个 ErlyBird ,目前渐渐完善,已经相当稳定。
What’s diffrent?
1. 基于 netbeans/swing (dcaoyuan认为:在跨平台下 Swing 有更加一致的外观,更易于定制的API,以及更小的 RunTime 系统,在编程良好的情况下,性能并不比 Eclipse/SWT 方案差(同样基于 netbeans 平台的AIOTrade 以 4M 多的 size 实现了实时的图形更新特性),而随着 JDK 的不断改进,性能还会进一步优化,因而是非常值得关注的 GUI 开发平台)
2. AST Inside。Erlybird 借鉴 netbeans ruby module 的做法,内置了 AST 分析。ErlIDE 对待相同问题的方式是用 Jinterface 在 Erlang Runtime 中通过 Meta 编程获取信息,检查方式为 Compile 查错。因为 Jinterface 层尚有 bug 没有解决好,常常会出现与 Erlang Node 连接不上的情况,因而导致崩溃。Erlybird 采用 netbeans 的语法分析机制,在 java 环境中实现了 erlang 代码的语法 AST 生成,因而可以进行 OnTheFly 的语法检查,无需 Compile 。
3. Index 问题?Erlybird 在第一次启动的时候需要对 Erlang/OTP 的源代码进行一遍扫描,建立 index ,这个过程很缓慢,通常需要 20分钟以上。这是因为,netbeans 内部使用 lucene 引擎对代码建立全文索引。这是 netbeans 平台的标准做法,但,这一部分的性能仍然有待提高。从柔韧性角度,对 otp 目录建立索引的方式更有灵活性,不会绑定 erlang 的版本。
What’s Next?
文档支持和Debug支持,工作量非常大,不会很快完成。
程序人生
有什么要对其他的程序员朋友说的么?
毛主席说过“凡事就怕认真二字”,对于程序员,亦是如此(国人要避免“不求甚解”的毛病)。
多与人交流(不耻下问,不怕犯错,实际上,只要是技术交流而不是人身攻击,就是论事,没有所谓的架子)。
多参与开源项目(深入研究其他人的项目,如非必要,别重新发明轮子)。
浙公网安备 33010602011771号