原文链接:戳这里

在过去的一周中,几位同事曾两次问了我这个问题。听起来,这像是一个糟糕的问题,但事实上并不是这样的。

最简短的答案就是:尽管我们并不需要这么多语言,但我们还是想要(want)它们。 让我们再探索得更深一些吧。

难道它们不都是一样的吗?

某种意义上(In a sense),是的。创建一个网站,你可以使用 RubyJavaPythonC#Go 抑或是 Javascript。甚至,你可以使用 CC++HaskellRustCOBOLPascalPerl

事实的背后就是:这些语言都有着同样的目的——把人类的思想转变成为计算机能够读懂的 1 和 0——用夸张的(highfalutin)的计算机术语来讲:它们都是 图灵完备(Turing complete) 的。

从底层上来看,这些语言都完全一样的。但从表面(人类和它们交互的接口)上来看,它们却有很大的不同。这,便是人们关注的焦点了。

不同的任务需要不同的工具

事实上,编程语言只是工具,而对于不同的任务,我们需要选择不同的工具。拖拉机(tractor trailer)、自行车、特斯拉汽车(Tesla)都是交通工具——它们都有轮子,有转向器(steering ?),并且都会将你从一个地方带到另一个地方——但显然,我们要将它们运用到不同的场景中。

编程语言也是类似的:若是要构建网站,RubyJavascript 是不错的选择;JavaC++ 则常常被运用在金融领域;至于 PythonR,它们是统计分析的工具。

在语言的选择上,我们常常要从便捷程度、安全性和速度这几个方面进行权衡(trade-offs)——就像交通工具一样。通常来讲,需要根据手头上的工作视情况而定。

开发者们有不同的“口味”(tastes)

抛开纯粹的功能,开发者还会根据个人的“口味”来选择工具。

编程语言是人类向计算机表达想法的工具。尽管不同的开发者在许多方面都有相似之处,我们的思考方式仍存在着区别——这是自然所决定的。

由于有多种编程语言供我们选择,我们完全可以选择一种“以我们想要的方式工作”的语言。有的开发者喜欢Ruby的灵活性(flexibility),而另一些则喜欢Java的严谨(strictness)。同时,有些语言看上去和数学一样深奥,而另一些读起来却和散文一样(prose)。

以人为本

业务是以人为本的。

撇开功能和个人“口味”,通常来说,你会选择一种你了解的,或是你周围的人了解的语言。

Stack Overflow 选择了 C#,很大程度上是因为团队的创始人了解它。其次(In turn),它也是为创始人的朋友和同事所了解的。C# 使招聘工作(recruiting)变得更加简单,同时也使 Stack Overflow 更快地进入市场。

(幸运的是,C# 同时也有着超棒的技术亮点)

一种技术需要一个“生态圈”(ecosystem)来支持——那便是能为每个有需要的开发者提供工具和帮助的社区(communities)和组织(organizations)。好的“生态圈”能让个人开发者更加成功——Ruby 就是个很好的例子。

多样性就是力量

总的来说,由于我们有着各种各样的任务,同时也有着各种各样的人在完成这些任务,我们才有了各种各样的编程语言。

而正是这种多样性的存在,使得许多有趣的程序,有趣的公司甚至是有趣的职业生涯,从不可能成为了可能。


作者:hsfzxjy
链接:
许可:CC BY-NC-ND 4.0.
著作权归作者所有。本文不允许被用作商业用途,非商业转载请注明出处。