先看一则有点老掉牙的笑话:

女神:你能让这个群的人都吵起来,我今晚就跟你走。
程序猿:PHP语言是最好的语言!
群炸锅了,各种吵架。
女神:服了你了,我们走吧,你想干啥都行。
程序猿:今天不行,我一定要说服他们,PHP语言是最好的语言。

当然,笑话仅仅是笑话,在现实中并不一定有这样的事情发生。不过从这个笑话,我们还是可以看出三点:
  1. 在程序员界,“某某是最好的编程语言”是一个最能引起纷争的话题。
  2. 不少程序员,都会去信奉某某真是最好的编程语言这一死理。
  3. 相比获得妹子的欢心,程序员更在意自己的观点得到认同和说服。
笔者从业10余年以来,也前后学过了 Basic、Pascal、C、C#、C++、Java、Perl、PHP、JavaScript(Nodejs)、Python、Go、Objective-C、Swift 等不下 10 种编程语言,大部分语言,都做过项目。就以自身的经历来分析有没有最好的编程语言。
首先讲清楚,我们对所谓编程语言也是有界定的,严格上说,像我没有提到的,但是在当前很流行的技术,都不能称之为编程语言,比如 SQL、HTML、CSS 或者 XML,它们要么是标志,要么是描述,没有严谨的编译或者解释转码执行过程,所以自然也不在讨论范围之内。
其次,任何问题讨论的根基,都要有一个相对公允的出发点,如果没有这个出发点,讨论也是无意义的,会变成公说公有理,婆说婆有理。我的出发点就是实用主义的出发点,语言在项目开发和实际中的作用,其他都是次要的。
我觉得一门语言,之所以成为流行优秀的编程语言,离不开以下三个因素:
1、语言本身出现的历史背景
语言的发展,是需要适逢其时的,俗话说时势造英雄。比如 PHP 到今天才出现,除非一下子做到现在 PHP7 的水平,否则我想,基本上只有被鄙视的份儿,就是一个玩具语言罢了。但是我们放在 1994 年,中国互联网刚刚接上互联网的那一年,还是 Perl 大行其时的时代,PHP 相比 C 语言,写 CGI 更加灵活简单,就相当于 过去大家都用 PhotoShop P 图,突然美图秀秀在手机上的出现,一战成名,到今天,我们再去做一个美图秀秀,也不会有什么市场了,这就是历史因素。
JavaScript 也如是,也是一种几天时间就开发出了使用原型的语言,并且在演进的过程中经历了各种混乱的浏览器环境和版本实现,但是架不住生于 Web 的历史大潮中,应用的需求,促使这门语言越来越完善,由于 Web 开发者众多,也促使这门语言的应用范围越来越广泛,到今天,已经无所不能,成为通吃前后端,横跨各设备的 JavaScript!
2、语言发展中出现的配套设施。
“一个篱笆三个桩,一个好汉三个帮”,语言的发展也是如此,PHP 在其迅速成长的过程中,赶上了互联网的快速发展,同时,相关的基础设施也得以迅速巩固、稳定和完善,就是其著名的搭档,Linux 操作系统,MySQL 数据库和 Apache Web服务器(后面是Nginx )。因为有了这三者,加上语言本身简单易用,所以迅速低成本能做出生产用的产品,并且经得起检验。如果没有与这三者的完美配合,组成 LAMP(或者LNMP)黄金搭档。以 PHP 语言的成熟度,发展到今天并不容易。
3、语言社区的成熟程度
 
语言本身的发展,需要有相关的社区,其中包括:
  • 开发者社区,对语言本身的积极改进程。
  • 开发者社区对相关库开发的支持程度,因为语言本身并不能做什么,关键是大量的开发库支撑起语言强大的功能。
  • 文档的完善,易用,以及多语言版本的翻译支持等。
这三者互相促进,互相补充,如果好,则形成良性循环,越多的开发者改进语言,语言越来越好用,越多的开发者完善语言库,语言功能越来越强大,参加开发者越多,文档也越来越完善,从而开发者加入得更多。这里以 Python为例,Python 语言本身的精巧,比 PHP 的设计是更为良好的,虽然在国内来说,目前使用面不是很广泛,但是在国外使用比较广泛,从而有更多的开发者在人工智能、大数据领域提供了更多的开发库,到了今天,尽管国内中文文档也是不是很完善,但是明显感觉,尤其人工智能、大数据这两个领域在迅速兴起,Python 可以想见,在未来的应用会越来越广,如果初入门,除了学习 PHP之外,也建议学习 Python。
总结了上述三点,就从我的理解来分析一下,上面有所涉及的编程语言:
1、Basic、Pascal、Perl 基本上可以说是过时了
 
尽管 Visual Basic.NET 也可以开发Web页面,但它们本质属于桌面软件甚至更之前的时代,除非是在办公软件上使用 VBScript 来操作文档,以及使用 Visual Basic做目前而言比较小众的桌面软件,否则已经没有市场了。
而Pascal 也随着 Delphi 的没落退出了历史的舞台,而Perl则有了更好的替代方式。
2、C、C++ 是语言的王者
 
这两者是底层软件开发所必须的语言,尤其是 C ,可以说是语言的王者,发明了40多年了,再用 100 年也没有问题。当然,即使它们,也不是没有争议。 C++ 就曾被大神所不满,比如 Linus 大神曾经就撕过 C++,不过我们要注意前提,Linus 对 C++ 语言的不满是有前提的,他本人是 C++ 高手,但是觉得 C++ 的一些特性导致 C++ 猪队友太多了。
但是这表层应用开发领域,它们的份额是小的。如果职业选择这两种语言,会面临水平要求高,找不到工作的尴尬,你要是大牛就无所谓了,可以去做底层开发。
3、PHP 和 Python 前途可持续,C# 则一般。
 
由于 PHP 语言本身的简单易用,基础设施完善,历史基础好,现在 PHP7 本身又发展到一个非常成熟的境界,效率也比之前的版本高了一倍以上,尤其是国内可以想见,PHP 必然还将热下去,因为无论如何,后端是永远缺不了的。而 C# 由于早期被绑在了 Windows 上,命运就没有这么好了,不过最近有所转机,就是在游戏和VR领域,Unity的核心语言是C#,会一定程度上促进C#的应用。但是说 PHP 是最好的语言,我觉得绝大多数程度员,都是程序员们自己的调侃,并不见得是真的。从语言本身设计和效率上来讲,PHP 并不见得能超越 Python,在未来的发展中,也不见得 PHP 能永远保持优势,但目前在国内,PHP 的使用环境好于 Python。
4、JavaScript(Nodejs)、Go、Python 都有其非常大的潜质,在未来的发展中,获得重要的地位。
 
  • JavaScript 不用说了,现在已经快一统天下了都。
  • Go 语言,在高并发领域显示出了强大的优势 ,在未来的云计算,万物互联的时代,所有的设备,都连入云端,Go 语言会比 Python、PHP等更有优势 。
  • 而 Python 呢,前面也说了,人工智能和大数据相关的处理方面,已经有了良好的基础设施。
5、Java、Objective-C、Swift 
 
Java 作为应用广泛的语言,当然还会有强大的生命力,可惜的是还是偏于复杂,尤其在 Web 开发领域。不是非常地快速地适用于原型构建和快速开发,也不适合技术积累浅的小团队,在 Android 等领域,目前是主导地位,但是也有被替代的危险,但是还需时日吧。
而Objective-C 我想苹果不会再主推这门语言,三年以来,尤其是最近发布的 Swift Playgrounds这样的教程,我们看到苹果的决心 。所以如果是新进入iOS开发,建议既学Objective-C,也一定要学习Swift,并重点学习Swift。
我想任何资深的开发人员,都不会去执着地坚持某一门语言是最好的语言,也决不可能只去学会一门编程语言,在这个过程中,应该在项目的应用中,看到实际的需要,比如在前面的文章中说过 ,排序一个文件的字段,我们可以用 Shell、PHP、Python,但是如果是不重复的海量数字,可能我们用 C 语言写个位图法,可能是最合适的。

所以建议大家以开放的心态来看待语言之争,找到最合适完成当前任务所需要的语言,那就是最好的编程语言,但不要执着于此,同时保持对发展趋势保持关注,学习不止,不断进步。

有没有最好的编程语言?