英文:http://www.infoworld.com/d/data-center/dont-want-mix-programming-languages-you-already-do-239907
之前我曾经在一篇博文中就多语言开发的问题进行过探讨,这一周来很多朋友发来了评论与邮件,其中自然不乏支持与反对的声音。其实这也早在意料之中,此类争议性话题总会带来两个不同阵营,双方分执一词吵个不可开交。
我实在弄不清楚为什么事情总要变成这样,也许这一切早在我们的孩提时代就已有征兆:那时候偏爱雪佛兰品牌的小孩儿会在福特汽车上小便,而支持福特品牌的小孩儿也乐于用污物糊雪佛兰一熊脸。也许随着年纪的增长、我们不会再纠结于超人和蝙蝠侠谁更厉害,但类似的争论却仍然经常性、持续性出现在我们身边。
我们往往会对自己“最偏爱”的语言产生过度依赖,对于任何人来说挣脱自己熟悉的一切、踏出迈向未知领域的步伐都相当困难。我们都喜欢躲在自己选定的“shell(壳)”里平静生活。从通用的Bash shell转向Zsh确实能让我们接触到一个迥异于前且突破了思维惯性的新世界,但由此带来的陌生感、失落感以及学习过程所必须投入的宝贵时间都不免让人感到恼火,有时候我们甚至宁愿抛开这一切、再度回到Bash的怀抱。这并不难理解,毕竟不是每个人都拥有充足的时间来推翻自己过去几十年中积累的经验、下定决心从头学起——无论最终成果有多么诱人,这样的成本都实在太过高昂了。
然而在不同编程语言之间游弋对于开发人员来说是一种非常理想的自我提升方式,这是永远颠扑不破的真理。无论是编程语言、shell还是应用程序,我们总是会选择那些自己最为熟悉的命令及实践方式,而且一旦建立起基本工作习惯、我们就再也不想离开这个温暖而舒适的安乐窝了。
举例来说,今天在使用Vi编辑器的时候,我仍然习惯性地连敲三次“w”键来将光标向前推向三个词距,或者按下“0”来直接将光标移至本行末尾;我当然知道可以使用“3w”或者“)”这类更为简洁的运算符,但习惯的力量就是这么可怕。同样的道理,当需要上移至文件顶端时,我永远会本能地使用“1G”而非“gg”。这些直观反应已经溶化在了我的血液当中。
这类情况在开发工作中同样数见不鲜。我们拥有自己积累下来的函数认知、久经考验且稳定可靠的处理方法,也在自己喜爱的语言中掌握了拿来就用的操作模块。尽管我们清楚其它语言的用法,但在真正面对这些功能元素时、我们仍然会有种踏入未知水域的莫名恐惧感。
有趣的是,在多数情况下,浪费在反复使用固有方法上的时间足以帮助我们学习并掌握其它语言所提供的更为科学的处理机制。一旦我们拥有了数十次同一内容的编写经验,我们就会丧失观察其背后逻辑的愿望与理由。我们只知道我们可以将这些函数添加进来、为其填写内容,它们就自然会给出相应的正确答案。如此这般,青春就在重复中离我们而去。但如果换一种思路,立足于不同语言对同样的函数加以审视、我们往往会发现更多原先从未意识到的优化空间。用新视角观察旧代码既新鲜刺激又令人恐惧,但这也正是其意义所在。