题目很大,不见得文章也要大,可以一点点写,持续改进才是王道。

我一直觉得对比“计算机科学”和“IT行业”的热点是很有趣的事情,在过去的若干年里,“IT行业”忙着鼓噪多层架构、分布式计算、SOA、Web 2.0等等概念的时候,“计算机科学”既守旧又激进的前行着:说它守旧,因为它这么多年也没跳出John von NeumannAlan Turing还有Donald Knuth这些大师们创造的体系,还在研究被Frederick P. Brooks断言的“本质困难”问题;说它创新,只要举出一个例子,MSR的Simon Peyton Jones的一份报告中说,编程语言的平均寿命是2年,大部分语言被创造出来供研究,在使用者不超过50个人的情况下1-2年之内死亡——当然这个死大部分时候还是有意义的,一大堆全新的概念就此被创造出来,作为一个突出的例子,有兴趣的朋友可以研究下Lisp语系(大概没有哪个其他编程语言有Lisp这么多的方言变种了吧),那简直就是计算机科学的一部发展史。

编程语言经历了机器语言、汇编语言、过程语言、面向对象等主流变迁,不远的过去,Java成功的突围而出进入主流,今天,新的革命者开始进入大部分人的视野,这就是以Python和Ruby为代表的动态编程语言(Dynamic Programming Language),以及以Haskell、Scheme为代表的函数编程语言(Functional Programming Language),其实它们并不完全是两种东西,这个我们下面还会提到。关于这些语言的口水仗多如牛毛,一般通称Language War,还记得当初C/C++语言的拥护者是怎么说Java的么?基本上换个主语就可以扣在这些新贵身上。对于这一类论战我当然有自己的态度,用我们中国人最伟大的哲学来思考,世界上没有最好的编程语言,Ruby的创造者Matz是日本人,显然很具有这种东方的智慧,他在一篇名为The Philosophy of Ruby的对话中阐述了这个概念,这个叫英雄所见略同——所以当我想找一个“不一样”的编程语言来研究下的时候毫不犹豫的选择了Ruby!Matz可能是现在最出名的黄皮肤geek了,很多证据都显示他是深得中国老庄哲学真传的,关于他的有趣话题之前有提到过

言归正传,为什么要研究动态编程和函数编程?用处有三:

  1. 了解新的技术,以及为什么需要这些技术,它们解决了什么问题,也许某天你就会碰到其中一个。
  2. 理解老的理论,一天到晚趴在Java之类的东西后面,会忘记很多重要的东西,了解计算的实质比写出代码更加重要。
  3. Get some fun, it’s really cool!!

好,我们来看看Ruby的基本语言特性。

  • Everything is an object
  • Dynamic Programming
  • Functional Programming more
  • Duck Typing
  • Module and Mixin
  • Miscellaneous

我将针对每个特性写一篇,有时候想到一些新的东西也会放进去,形成一个系列,慢慢来。