妄论编程语言之争
人生有三重境界:
第一重:看山是山,看水是水。
第二重:看山不是山,看水不是水。
第三重:看山还是山,看水还是水。
编程语言之争由来已久,也是编程之余谈笑之资。有段子问,如何用最简单的方法让一个技术论坛迅速沸腾?答:发一贴:PHP 是世界上最好的语言。如此就可以挑起编程语言的大战,各方阵营你来我往,左的,右的,中立的,摇摆的,都得插上一两句。于是就闹起来了,一个论坛也就沸腾了。也有人将不同编程语言比作不同的武器,Java 是自动机枪,C 是加兰德步枪等等,依据各语言典型特点做一个比喻,也是饶有趣味。
去除作为基础课程的 C 语言。我的第一个学习和正式使用的语言是 C#,那时候对“巨硬“大大谜之感兴趣,对 C#之父安德斯·海尔斯伯格(也是 Delphi 和 TypeScript 之父)也一脸崇敬。C#语言本身,在语法和特性方面也是优雅而又超前。但最终我的吃饭家什却变成了 Java,只因毕业后,C#(.net 平台)在国内已经没有什么市场地位,市场招聘清一色的 Java,PHP 等。所以,其实现在很多语言之争都是工作和市场所需之争。
我个人是比较赞同语言之争的。但不是逞口舌之快的语言争论。编程语言百花齐放,不同领域需求不同,自然适用不同的语言。我也希望不同语言有自身不同的特性。我也认为一个程序员在自己的主语言之外可以去了解另一门不一样的语言,什么叫不一样的语言?风格和特性不一样,比如面向对象的 Java,可以去了解脚本式的 Python,也可以了解函数式的 go,甚至 Jvm 平台的 scala 也可以,而应该避免同样的 C 系语言。跳出语言的桎梏,可以认识到一些编程更本质的思维。
如开篇讲到的人生三境界,其实对编程语言的认识也如此三境界。当你对一门语言只停留在使用层面,那么你眼中的编程就是这门语言展示给你的;当你跳出其外,认识了更多,思考了更多,你会慢慢开始觉得不再是那样;当你最终摸透了本质,你所见的所有编程语言,也就都一样了。甚至这个时候让你自己编一门编程语言也不是不可能。
另外,我认为编程工作的最大区别不是语言之别,而是领域之别。同样是做 Web,用 Java 和用 PHP 思维差不太远。而同样使用 Java,做 Web,和做大数据,做安卓却是如隔行隔山。这就是领域思维不一致导致的,所以有时候我们也应该跳出自己的领域去看更多的世界,甚至于跳出编程,跳出工科,跳出理性世界,去体验更多不同的思维方式。
公众号以原创技术文章为主,偶尔品品人生,发发感慨。欢迎订阅。