文章目录

“ 有必要的话,在工作的闲暇时间,可以着重考察两个问题:第一,这个语言有哪些惯用法和模式,第二,这个语言的编译/解释执行机制。”——孟岩对学一门新语言的看法。
  学一门新语言一定要学习这个语言的:惯用法和模式 大家都知道设计模式或者说GOF23,其实,模式在软件各个领域都普遍存在的,从分析到部署。我们常听到有架构模式,设计模式,等等。
  其实从软件开发角度来看,架构模式是很泛或者专业术语叫粗粒度的模式,为什么这样说,因为他是系统总体设计上的模式,比较抽象,就像如今天开发大部分都会说三层架构这样术语,但是真正什么是三层架构,他们如果应用于系统,有何优缺点,估计多数不是很理解,这就是抽象缺点。
  那么,再具体一点的东西是什么?如果是做OO开发的话,那就是设计模式(如:GoF23等),这些东西就是面对具体问题具体分析时使用的设计方法,这个相对架构模式来说,已经是比较具体的东西了,但是它还是较粗粒度的东西,因为他可以与程序语言无关,而且他大部分时候考虑的系统具体问题域的设计决策,到底如果用代码实现,且如何用不同的语言中比较好的方法来实现,他并没有说。
  那么,下一个阶段就需要程序语言具体实现了,这是很具体的,细粒度的事情,代码怎么写,语言的语法规定,而且每个语言有其自身的特点,有时候,同一行代码或同一个程序逻辑用不同语言表达时,写法是不一样,这就是各个语言的习惯用法,它也可以认为是这个语言的模式。(例如:在java语言对集合进行相关操作,通常是用for循环,而ruby与C#3+中直接调用each{}或ForEach方法即可,而且ruby中都不提供基于下标的for循环),所以像ruby这样的语言对集合进行操作基本上是用iterator block来完成,这就是ruby在这个方面的惯用法,在这样的语言中,你不应该去写个像java语言那个for语句来完成相同的功能,虽然功能也能实现,但不是这个语言中较好的实现方式。

文章目录