池建强的公开课

讲讲咱互联网行业自己的故事

个人成长,观点,认知, 软技能

池建强 极客时间创始人、墨问西东创始人

第86期 | 讨厌编程的PHP之父

讲述:池建强 大小:9.77MB 时长:00:10:10
00:00
1.0×

你好,这里是卖桃者说。

在程序员扎堆的地方,如果你要引起争论,只需要说,某某编程语言是最好的,就行了,肯定吵作一团。不过,如果说哪个语言是最具争议性的,那PHP肯定当仁不让。

年初的时候,Hired 网站发布了《2019 年软件开发者现状》报告,报告中PHP“荣获”开发者最讨厌的编程语言的第一名,但与此同时,在TIOBE、RedMonk等各个编程语言排行榜中,PHP的排名也从来没有掉出过前十。可见,PHP就跟当红的明星一样,粉多黑也多,任你腥风血雨,我自岿然不动。

今天,我就跟你聊聊编程语言中的争议明星PHP的创造者,PHP之父 Rasmus Lerdorf,为了方便,接下来我就都称呼他为勒多夫了。

勒多夫跟其他编程语言之父、系统之父不同,比如我之前在卖桃者说里跟你分享过的Linux之父林纳斯、Python之父范罗苏姆等,对他们来讲,虽然创造语言或系统之初是为了解决某个问题,但他们本身对技术、对编程都有着超乎想象的兴趣和追求,甚至视之为快乐来源乃至人生信仰。但勒多夫不同,他在多次采访中都表示自己真心讨厌编程,写代码和写程序非常枯燥和无聊,也不理解有些人为什么会那么喜欢编程,对他来讲,解决问题才是最重要的,他真正享受的是解决问题后的成就感,而编程只是他解决问题的工具和手段。

我不是一个真正的程序员,我会把东西扔到一块儿,直到它能工作,然后就继续前进。真正的程序员会说,“是的,虽然它可以工作,但你泄露了内存,我们应该解决这个内存泄露问题。”而我,只会每隔10个请求就重新启动Apache。

这是勒多夫在一次访谈中的回答,是不是听起来特别“PHP”。果然,有什么样的创造者就有什么样的编程语言,创始人的理念和气质会深深影响到语言本身。

勒多夫出生于丹麦格陵兰,在加拿大长大,1993年毕业于滑铁卢大学,并获得系统设计工程学的学士学位。在学生时代,他并没有展露出他对编程的兴趣和天赋。毕业后,勒多夫在一家小公司做程序员,做一些开发工作,他和互联网的缘分,就是从那时开始的。

闲暇之余,勒多夫给自己写了一个个人网站,很自然的,他想对自己网站的流量、留言等信息进行统计和维护,但当时并没有很好的工具能提供类似的功能。程序员嘛,没有工具就自己创造工具,1994年,勒多夫用Perl语言简单编写了一个程序软件,能用来统计网站的访问者,后来又用C语言重新编写了这个软件工具,添加了访问数据库的功能。

勒多夫越用越觉得这个工具好用,到了 1995 年,他以Personal Home Page Tools (PHP Tools) 的名字对外发布了第一个版本的PHP,直译过来就是“个人主页工具”。是的,PHP并不是以一个编程语言的姿态诞生的,最开始,它只是一个工具,一个“用C写的小型紧凑的CGI可执行程序集合”,估计勒多夫自己都没想到他随意写的这个工具,会对之后的网络发展产生那么大的影响。

他曾在采访中说过:

最初我并没有想要创建一种新的语言,我只是需要一个方法来解决Web服务器中的已知问题,我不需要Perl中的那么多东西,也不想像C那样对所有内存进行管理,我需要的是一个精简版的C,也不能很Perl,可以很容易的嵌入到网页中。

无心插柳,PHP 1.0提供的访客留言本、访客计数器等简单但实用的功能恰好戳中了当时网站开发者们的痛点,很快就流行了起来。越来越多的网站开始使用PHP,并且强烈要求增加一些新的特性,比如循环语句、数组变量等。随后,在同一年(1995年),PHP 2.0发布,定名为PHP/FI(Form Interpreter),加入了对MySQL的支持。这个功能大受好评,一下子建立了PHP在动态网页开发上的地位。

其实,PHP的成功也有点时势造英雄的意思。PHP 1.0和2.0两个版本都在1995年的上半年发布,而直到当年8月份IE 1.0才发布首个版本,到11月份,HTML 2.0才正式发布,HTTP 1.0也要到次年的五月份才出现。当时,NCSA HTTPd是使用最广泛的网络服务器,而网景的Navigator则是最流行的网络浏览器。换句话说,PHP的开端刚好撞上了浏览器战争的前夜。

到了1996年底,全球就有15000个网站使用PHP 2.0,而到了1997年,使用PHP 2.0的网站数字已经超过了五万个。当时PC互联网起步不久,总共才多少网站,几乎一多半都使用了PHP来进行开发。1999 年中国的阿里巴巴成立,第一代淘宝网也是用 PHP 写的。

而接下来数十年,整个互联网都是PC端的天下,浏览器作为PC互联网的重要入口,地位举足轻重,全世界的网站数量急速扩张,而当时最好用的Web开发语言就是 PHP,PHP的地盘也随之不断扩大,被更多的程序员接受。即便到今天,依旧有大量网站和 Web 服务是用PHP开发的,地位无可撼动。

到了 1997 年,两个以色列工程师Zeev Suraski和Andi Gutmans 加入进来,和勒多夫一起组成了PHP的核心开发小组。Suraski(苏拉斯基)和Gutmans(古特曼斯)重写了PHP的解析器,成为PHP 3的基础,PHP也在这个时候正式改名为PHP:Hypertext Preprocessor,洗去了原本的工具烙印,开始以语言的姿态发展。在这之后,PHP的核心开发团队稳定了下来,和开源社区一起,推进着PHP的开发和迭代。

可以说,PHP是一个在实践中不断迭代和完善的语言,立足于帮助程序员更快的解决问题,但这一发展模式,再加上本身是工具出身,语言设计就没有那么精巧,也缺乏一些前瞻性,造成了PHP的很多遗留问题,比如语法不够严谨、代码混乱、功能缺失、Bug 频出等等,常年被程序员们吐槽。

当然,设计时考虑得不够长远,很大程度上也源于勒多夫本身的理念,他通常只规划半年内的事情,也痛恨要帮未来考虑太多。在他看来,互联网变化太快,现在决定半年以后的事情,可能会做出错误的决策,反而让事情更糟。

如果你没有解决当下的问题,就去想象未来会发生的事情,这并不值得,我宁可解决眼前看得到的问题,真正聚焦在当下需要的产品上。

值得一提的是,在1999年,苏拉斯基和古特曼斯,也就是另外两个小组成员,成立了公司Zend Technologies来管理 PHP的开发和商业化发展。勒多夫虽然依旧深度参与PHP的开发,但却并没有加入Zend公司,而是加入了雅虎担任架构师。正如他所说的:“相比对编程的追求,解决问题才是他的兴趣所在。”

勒多夫是一个典型的实用主义者,在他看来,程序不需要写得完美,而是要简单有效,这才是最重要也是最困难的事情。同时要根据不同的工作来选择不同的语言和工具,即使是Web开发者,尝试用PHP解决所有问题也是不科学的,还会浪费时间。所以,当PHP玩不转的时候,果断去尝试其他语言吧。

另外,勒多夫对于“快”的追求也是贯穿始终,他希望PHP的代码能够足够简单,同时在遇到问题时,不需要花费太多时间在写代码这个动作本身上,就能解决问题。而这恰恰是PHP吸引开发人员的一大法宝,为什么大家吐槽PHP吐槽得那么厉害,还是会选择它来开发程序呢,就是因为它写起来实在是太快了,真是唯快不破。所以,在需要快速开发的时候,PHP就成了第一选择。

你用过 PHP 语言做过实际项目开发吗?你最喜欢和最常用的编程语言是什么?

好,今天的话题就先聊到这儿。卖桃者说,明天见。

(编辑:成敏)