2010-03-10

dream


  • 曾经有梦
    大多数程序员都像谱写一段传奇,至少曾经想过。大二时立下的梦想是成为Linux Kernel Developer,一直努力到读研,未曾动摇过。研二尚未结束便开始实习,没想到是做QA,然而Eric S. Raymond说,为OSS项目做QA是个好的开始。于是,我竟然坚持了下来。曾经想转为dev,未果,开始专心读SICP,学Scheme -- 既然不能做kernel dev,那就在编译器方面多多努力吧,我认为这是成长为一个优秀程序员的必经之路。记得当时在某个新闻组看见一篇文章,说Scheme比较适于用来模拟其 他语言。另外,老大的极力推荐也是一个原因。

  • Scheme & Functional Programming
    读了SICP后甚至觉得当初的dream有点可笑,好像一个井底之蛙梦想着要搞懂那座井是怎么建成的,而不知道井外的天空为何物。我开始了解FP是怎么回事,Scheme/Lisp的macro系统有多么强大,开始知道什么叫write programs to write programs,什么叫data is program, program is data. 此外,知道除了传统的C风格命令式编程外,还有惰性求值、非确定性编程等等以前闻所未闻的东西。用个成语来形容:别有洞天。

  • Ruby & Domain Specific Language
    接触Scheme的另外一个收获便是所谓DSL,有篇文章看得我拍案叫绝。后来知道Ruby很适合用来构造Internal DSL,而那段时间的工作中恰好用到Ruby,很巧。有了Scheme的基础,Ruby可以看做是语法比较fancy的一门Lisp方言,学起来如鱼得水。挤出一点时间用Ruby重写了之前用Scheme写的代码生成程序,效果不错。

  • Haskell & Parallel Computing
    因为Parallel Computing和DSL方面的兴趣,又接触了Haskell,以及美妙的parsec,接着是一通洗脑:GADTs,纯函数式风格,以及Monad等等。特别是这篇文章,处处透露着简洁和优雅。就像刚学Linux时领悟到pipe的强大,那种激动无与伦比。


如果Scheme是把我领到FP的大门口,则Haskell是一脚把我踢了进去。回头看去,原来我在不经意间走了一遍multi-paradigm programming,如果要为此选用一门语言,那便是Scala(或C#)。

标签:

0 Comments:

发表评论

<< Home