机器之心编辑部
PHP,祝你 25 岁生日快乐。
「只假如用过 PHP 的程序员,都知道两件事:第一,这是一种糟糕的措辞,如果有其他选择,自己绝不会再利用 PHP;第二,历史上一些非常成功的项目都在用 PHP。」
(图片来自网络侵删)Fine,这两点并不抵牾。作为一门编程措辞,PHP 是有很多的毛病,但和 PHP 环境具备的优点比较,这些毛病也就不值一提了。和其他措辞比较,PHP 为项目的搭建、变动和运行供应了更好的支持。
2020 年 6 月 8 日,「天下上最好的措辞」PHP 迎来了自己的 25 周岁生日。
print "This is the best language in the world.";
?>
PHP 走过的 25 年
与其他措辞不同,PHP 是在 web 做事器中出身的。它的优点与面向要求、做事器端实行紧密干系。
故事始于 1995 年。当时,Rasmus Lerdorf 利用 C 措辞编写了一个大略的通用网关接口 (CGI) 二进制文件集,这是 PHP 的第一个化身。这个凑集最初被用于跟踪 Rasmus Lerdorf 在线简历的访问数量,之后 Rasmus 将脚本套件命名为「Personal Home Page Tools」,简写为「PHP Tools」。
25 年说短不短,不过 PHP 的发明者 Rasmus Lerdorf 今年也才 51 岁。
1995 年 6 月 8 日,Rasmus 向"大众年夜众发布了 PHP Tools,这也是 PHP 出身的标志性事宜。
1996 年 4 月,Rasmus 重写了一次代码,推出了 PHP/FI,开始了 PHP 从工具套件向编程措辞的真正蜕变。它包含对 DBM、mSQL 和 Postgres95 数据库的内置支持,并支持 Cookie、用户自定义函数等。1997 年 11 月,PHP/FI 2.0 发布。
1997 年 12 月,以色列理工学院的学生 Andi Gutmans 和 Zeev Suraski 为他们作为大学项目开拓的电子商务运用程序探求后端。他们创造 PHP/FI 2.0 低效且短缺功能,于是开始完备重写底层阐明器。他们联系到 Rasmus,与之谈论了履行方案和他们要重新开拓的 PHP 的各个方面。
左:Andi Gutmans;右:Zeev Suraski。
1998 年 6 月,PHP 3.0 出身。Zeev 和 Andi 重写理解释器并引入了一个新的扩展 API,该 API 大大简化了社区贡献新扩展的办法。顶峰时,PHP 3 安装在互联网大约 10% 的 Web 做事器上。
1999 年 1 月,Zeev 与 Andi 成立了 Zend 公司。该公司后来成为 PHP 的创新和开拓源。它贡献了核心改进,以及用户包与框架和开拓环境工具。
Zend 的成立为 PHP 的发展带来了不小的变革。2000 年 5 月,PHP 4.0 发布。这一新版本带有 Andi 和 Zeev 开拓的全新「Zend 引擎」核心。除了性能得到显著提升外,PHP 4 还添加了对更多 Web 做事器、HTTP 会话、输出缓冲和多个新措辞构造的支持。
2003 年,PHP 被用于开拓博客软件和内容管理系统 WordPress。这一软件一经发布即风靡环球,为 PHP 增加了大量人气。时至今日,互联网上超过三分之一的网站利用 WordPress。
WordPress:以 PHP 和 MySQL 为平台的自由开源的博客软件和内容管理系统。
2004 年,PHP 5.0 发布。在此期间,Dmitry 加入 Zend 并在 PHP 5 期间帮助开拓了大多数核心 PHP 子系统。同年,Facebook.com 以大略的做事器渲染 PHP 网站形式上线。
此时,PHP 已经非常盛行了,由于它是第一批支持动态网页的工具之一,而且 WordPress 为该措辞添加了一些新功能,但这些也毁坏了它的向后兼容性。
2005 年,开拓团队认为在 PHP 6 中支持 Unicode 将非常有趣,但这一版本完备失落败了。有人认为,这也是 PHP 将自己弄得「声名散乱」的紧张缘故原由之一。
为了这个失落败的版本,开拓团队摧残浪费蹂躏了大量的韶光和精力。差不多十年之后,也便是 2015 年,PHP 团队才开拓出下一个成功的版本——PHP 7.0。在此期间,PHP 6 偃旗息鼓(2010 年被正式放弃),但 PHP 5 的多个版本仍在利用并不断更新。
PHP 7.0 是一次重大更新,包含新的 Zend Engine 3 (PHPNG)、各种改进和新功能。它的速率是 PHP 5.6 版本的两倍。但与此同时,这一版本也毁坏了相称一部分向后兼容性。这些改变提高了 PHP 的入门门槛,引发了一部分用户的不满,但也有人为 PHP 措辞性能的提升和社区的发展感到欣慰。
在之后的几年里,PHP 7 又经由了几次迭代。今年 5 月 14 日,这门措辞发布了其最新版 7.4.6 版。今年 4 月,PHP 官方还公布了 PHP 8.0 版本的发布韶光表。根据该韶光表,PHP 8.0 的 Alpha 1 版本将于 2020 年 6 月 18 日放出。
在这 25 年的发展韶光里,PHP 受到了褒贬不一的评价。有人认为,PHP 存在很多设计毛病,开拓者水平良莠不齐、安全性差。在 Stack OverFlow 的一项调查中,PHP 乃至被票选为最令人讨厌的五种编程措辞之一。但也有人认为,PHP 入门门槛低,非常适宜 web 开拓,纵然不是「天下上最好的措辞」,也不至于受过多苛责。
爱 PHP 的三个情由
如果有人深爱着 PHP,那一定是由于以下三个缘故原由。
第一, 状态。每个网页要求都是从一张完备空缺的面板开始的。除了用以供应初始功能和生命支持的标准全局变量、函数和类之外,其命名空间和全局变量都是未初始化的。通过从已知状态启动每个要求,我们可以得到一种故障隔离:如果要求 t 碰着了软件毛病并且失落败了,这个 bug 不会滋扰后续要求 t+1 的运行。
当然,状态也会存在于程序堆之外的其他地方,并且有可能毁坏数据库、内存缓存或者文件系统。但 PHP 与所有许可存在的可能环境分担了该弱点。如果将要求之间彼此隔离,可以减少大多数程序毛病的本钱。
第二,并发。单个 Web 要求在单个 PHP 线程上运行。最初看来这像是一种屈曲的限定。但由于程序是在 Web 做事器的语境中实行的,就会有一个可用的自然并发:Web 要求。异步的 CURL 到本地主机(或者到另一个 Web 做事器)可供应一种 shared-nothing、copy-in/copy-out 的并行机制。实际上,与其他大部分通用措辞所供应的锁共享状态方法比较,这种方法更加安全,并且对缺点更具弹性。
末了,PHP 程序在要求级别运行意味着程序员事情流程是快速且高效的,并且随着运用程序的变动一贯保持较快的速率。许多措辞都流传宣传这一点,但是如果它们不为每个要求重置状态,主事宜循环将和要求共享程序级状态,则它们险些总是须要一些启动韶光。
例如,对付一个范例的 Python 运用做事来说,debug 的周期大概像是「想一想」、「编辑」、「重启做事器」、「发送测试要求」。纵然重启做事器仅须要几秒,但人类大脑为了保持在这个状态上,也会花费 15 到 30 秒的韶光。
比较之下,PHP 的「想一想」、「编辑」、「重新加载页面」的周期会让开发者提高效率。对付一个漫长且繁芜软件项目来说,这将有效地提高生产力。
因此,纵然不是 “天下上最好的措辞”,PHP 也是一门精良、高效的编程措辞。随着韶光的推移,我们可以期待 PHP 团队能够开拓出更好的版本。
末了问一句:你以为什么是天下上最好的措辞?
参考链接:
https://www.jetbrains.com/zh-cn/lp/php-25/
https://slack.engineering/taking-php-seriously-cf7a60065329