The way I write Perl programs

Perl程序写多了,便形成一定的开发套路。我写程序的习惯一度很不好,没有自动单元测试,没有版本控制,现在这两个陋习正在改掉,尽管做得仍然不够严谨。

我习惯先把程序写出来。在实现一定的功能之前,只是简单地手工测试一下,版本控制也不做。当程序具备一定规模之后,才做版本控制,然后加测试。很多时候都是凭感觉,犹豫便是开始做版本控制的信号,面对自己熟悉的Emacs和Perl,却不敢敲入哪怕一个字符,这是理智在提醒自己,到Subversion上场的时候了。感觉自己在上版本控制前后写程序的风格也不同,之前是大开大阖,之后是谨小慎微,频繁提交。

人以群分,物以类聚。好习惯也一样,做了一个,就想着做另一个。所以版本控制之后,通常便盘算着怎么做自动单元测试。写测试可不像把程序放入版本控制那么简单,总是要费一番脑筋,对程序做较大的改动,才好写出一个个单元测试来。一个容易测试的程序,很有可能是一个容易理解的程序。我看自己做了测试的程序,往往函数体短小,功能单一。

因为写测试很费脑筋(看来还是功力不够啊),所以完成之后容易厌倦,开发出现停滞,需要休息一段时间才能重燃激情。

Programming language war

争论要有理有据,尤其是说别人不好的时候(这年头大家都爱听好话),别像微软那样老是FUD来FUD去的。程序设计语言之间的比较往往很难做到准确公平,然而比较各种语言之间的优劣却是很多人最感兴趣的事。说自己中意的语言好无可厚非,却偏偏要夹带着对其它语言的攻击、贬低,甚至动不动就宣称某某语言已日薄西山,马上就完蛋了。这不,有人终于受不了了,因为

It seems every day I am questioned about why I write in Perl versus PHP, Java, C#, Ruby, Python, or [insert your favorite language here]. People say things like, “Perl isn’t used anymore is it?”

我尝试学过多种语言,多数都半途而废了,但从没因自己学习吃力而贬低过哪种程序设计语言,所以无法理解为什么有些人会这样做,尤其是将一些很主观的话用客观的方式说出来,比如,不说“我不喜欢ABC”,而要说“ABC的存在毫无意义”;不说“我认为XYZ”,却直接说“XYZ”,仿彿事情真的就是那样。

也许不是所有人都是有意识这么说的,但我确实很反感这种貌似言之凿凿却偏偏毫无根据的所谓“断言”,最近就因此发飙过一次