Home > misc > WebMine 编码后记

WebMine 编码后记

May 30th, 2007 :: jackyz

WebMine 是我对 Erlang + Push + Ajax 架构模式的试验,作为我的第一个真正的 Erlang 程序。记录一点开发心得吧。

思路

在编程思路上 Erlang 与 Java/.Net 等主流“面向对象”的语言很不一样。如果说 OOP 的体验是“对象=数据+操作”,那么在我看来,在 Erlang (不知道其他 FP 是不是这样)中编程的体验大概更类似于 Pascal 时代的“程序=算法+数据结构”。写程序,就好像是广袤大地上挖出一条一条的沟渠,而数据就像流水,他们流经你的程序,沿着你设计好的路线,流向你希望的地方。你可以设计阀门,水车,机关,源源不断的流水会推动它们的运行。

Erlang 的程序设计思路是“Programming by observing the real world”也就是说“用程序来写生现实世界”。这种思维方法对于习惯了 OOP 的我来说,还是有点困难。从第一版的 request/response 方式过度到第二版的 event 方式,可没少费脑细胞。现在想来,确实第二种比第一种更简单,更贴近于实际情况。

语法

模式匹配太爽了。对于 by communicate – for communicate 的系统来说,没有模式匹配的支持,那样的代码真是让人不可想象。

小心 if/case 从句。其他语言中的 if 语句,只需要处理满足条件的情况就行了。而 Erlang 中的 if 如果处理不当,有可能导致函数匹配不上,而出现运行时的异常。要知道,这样的问题,在编译阶段是无法被发现的。

list 是 Erlang (或者其他FP)的核心问题。到处都是 list ,可以说,没有 list 就寸步难行。

其他

部署 ebin 和部署 .class 一样。 windows 编译 linux 发布,有 vm 的语言就是爽。

大多数情况下(尤其是你不需要在服务器端生成 HTML 的情况下) inets httpd 都已经够用了 yaws 有时有点重。之前看过一个比喻,inets 和 yaws 就好比 servlet 和 jsp 的关系,如果你不需要生成 HTML 那 jsp 的意义是不是就大打折扣了呢?而 inets 的 esi 本来就已经相当的好用了(晕死,我还费劲在 yaws 上写了一个类似于 esi 的东西,相见恨晚啊)。

misc

  1. piggybox
    July 11th, 2007 at 20:38 | #1

    erlang的模式匹配检查不如ocaml/haskell那么严,不小心会漏点什么。

  1. No trackbacks yet.