先来看个例子。两个工匠制作国际象棋,其中一个工匠使用传统的工具——各种规格的凿子、锉刀和锤子,首选的材料是石头。他仔细地雕刻细节,像他的父亲做的那样。另一种工匠使用更现代的技术去熔化金属、使用模具制作,他使用火以及可以承受极高温度和压力的模具和工具。最终,这两个工匠的作品同样精致、细腻、美丽。
谁的方法更好?
这两个工匠产生了同等价值的东西——美丽的国际象棋。你可能更喜欢经典样式的石质棋盘,或者更喜欢冰冷的沉甸甸的金属制品。你的选择与工匠们所使用的方法没有任何关系,你只关心最终产品。
同样,开发一个应用程序,选择什么语言真的不是很重要。自各种编程语言诞生以来,关于孰优孰劣的争论一直没有停止过,比如“Python更好,因为……”、“PHP是战斗力不足5的渣,Ruby才是王道”……此类话题如同一针鸡血,可以瞬间点燃码农们的斗志。
眼中体:编程语言拥护者眼中的编程语言
选择编程语言和工匠选择材质是一样的,其中一个工匠之所以选择石头,可能他认为石头比金属好一些。争论这些毫无意义——因为两种方法创造了类似的结果和价值,而且这两种方法都是有用的。
其实,我们应该将时间花费在如何创造更有价值、更具创新的东西上,而不是在这些无关的讨论上。
我们几年前开发的一个产品中包含了一个Python后端和PHP前端,尽管我的很多同事都讨厌PHP,但一点都不妨碍该产品的开发和使用。去年,我们才迁移到一个新的基于Python的Web框架。这一决定并不是因为PHP不好用,而是出去其他方面的考虑,如开发者的技能、PHP框架老化(一些功能需要重写)等。尽管迁移到了Python框架,该产品中还是包含了基于其他语言的代码。
编程语言只是一个工具,重要的是使用这些工具做出的产品。每个开发者应该尽可能了解如何使用不同的语言和不同的方式来完成同样的事情。一旦开发者开始思考他们选择的语言是否优于另一种语言时,就应该回顾一下文章开头的工匠的故事。
最后要说的是,语言并不重要,重要的是你拿它做什么。