cover

最好的编程语言

在程序员论坛中,有一类话题永远是最能引战的:什么是最好的编程语言?或者问得委婉一点,学什么语言比较有前途?

作为一个在网络拍砖多年的人,我已经对这类话题产生免疫,如果硬要我回答,我可以回答一个中庸的答案:

语言并不重要,任何图灵相等的语言理论上都能实现同样的功能,只要熟悉一个语言就可以触类旁通。选择语言的时候要考虑平台的支持度和团队的熟练程度,没有最好的语言。

正确的废话,不是吗?如果看到这样的回答,就说明对方在敷衍你,因为把真实想法告诉你对他没有好处,还可能引来无休止的论战。

但这样敷衍的回答其实也源自敷衍的提问,如果换一下问题,就更有可能获得有效回答:

如果开发 XX,你会用什么?

跟文章开头的问题相比,这个问题的关键在于:1)限定了领域 2)只考虑“你” 3)不是问什么好,而是问你会用什么。这里面的微妙差别在于,如果是为大众考虑,总会趋于选择最稳妥的,或者是最时髦的那一个,而自己使用的,才是自己真正觉得最好的。

那如果问我开发 Web 应用,我会用什么?我会毫不犹豫回答 Ruby on Rails。说得再直白一点,我认为在 Web 应用领域,Ruby 是最好的语言,Rails 是最好的框架。在反驳前请看题目,这都是我的想法,我的选择,我也没强迫别人认同嘛。

我可以展开说说为什么我认为 Web 领域 Ruby 是最好的语言,Rails 是最好的框架。

首先,Rails 框架很成熟。Rails 能孵化出 GitHub、Shopify 这样的公司,并沿用至今,证明它既可以适应创业公司,也能适应大公司的需要。Web 并不是一个新技术新领域,大多数情况下并不需要多么先进的技术。Rails 经过多年发展足够成熟,它的组件、方案都久经考验。

其次,Rails 在不断进步。每次 Rails 发布新版本,都会带来一两个新玩意。例如 Action Cable,Webpacker,下版本要带来的 HotWire。即使我已经多年使用 Rails 开发应用,也要不停学习新知识。有的人不喜欢框架层面经常变化,但其实 Rails 鲜有破坏性更改,如果不喜欢新玩意大可以无视。Rails 可以让你每次踏出舒适区一点,又不至于进入危险区。

然后,我最熟悉 Rails。我并不缺乏对新框架的关注,高并发?实时网络?这都是好东西,但我立即需要吗?不一定,那么,下一个项目就继续用 Rails 吧。比起踩新框架的坑,我宁愿把时间花在业务逻辑上。熟悉能带来生产力,用 Rails 让我更多时间考虑的是做什么而不是怎么做。大部分情况下,开发 Web 应用最花时间的地方是在处理业务逻辑。

最后,Ruby 和 Rails 使我快乐。Rails 的独特之处还在于它使用的是 Ruby,一个以让开发者感到快乐为宗旨的语言。Ruby 的 DSL 能力成就了 Rails,其他语言也有很多仿 Rails 的框架,但只要不是 Ruby,都只能达到“学得挺像”的程度。当然,快乐与否因人而异,如果你是对 @do ... end 等符号感到生理不适的那类人,果断放弃吧。数十年的编程人生一定要用自己感到快乐的工具。

看到这里,如果你不认同这些理由,那么再重申一遍,这都只是我的选择。Web 开发最好的一点,就是用户不会关心你用什么开发。如果你觉得最好的是 Java、JavaScript、PHP、Python、Go……,我也完全没意见,因为这是你的选择。

唯独对于那些“编程语言都一样”的看法,我要嗤之以鼻。你真的觉得任何语言都一样吗?下一个项目让你用 XY 你愿意吗?人成熟了就变得圆滑了,好东西自己藏着就好了。我就不想那么圆滑,偏好一门语言不是那么难以启齿的事情。

说了这么多,应该都知道我下一次会怎么回答“什么是最好的编程语言”了,那就是:

语言并不重要,任何图灵相等的语言……

8
7