作者 | BEN JAMES
译者 | Arvin,责编 | 夕颜
出品 | CSDN(ID:CSDNnews)

1995年6月,拉斯穆斯·勒多夫(Rasmus Lerdorf)在Usenet小组中发布了一则如下公告。公告至今还在,随时可以阅读。

公告 : 正式发布个人主页工具(PHP工具)1.0版本。 这些工具是一组用C编写的小巧紧凑的cgi二进制文件。

今天,25年过去了,PHP已经几乎无处不在。我敢打赌,对于本文的大多数读者来说,他们对Web编程的首次尝试均涉及PHP。

但是,无论PHP拥有多么丰富的历史和广泛的用户基础,都没有理由在一个快速发展的领域中使用这门语言。虽然PHP将不可避免地在现有的应用程序中出现数年,但它在新站点中还会有未来吗?

在展望未来之前,我们必须首先研究PHP在过去是如何发展的。

发端

Rasmus Lerdorf最初创建PHP是为了追踪浏览过他在线简历的用户。当源代码发布后,代码库被大量重写,PHP就开始流行起来。据报道,到1998年,有1%的域名安装了PHP。那时的PHP完全写在 <!-- html comments -->标记中,语法明显不同于现代版本。

Zeev Suraski和Andi Gutmans尝试用PHP建立业务,但发现它在功能上很匮乏。他们与Rasmus合作,PHP再次被重写并发布了PHP 3.0版本。当时事情有了一些进展,预计有10%的域安装了PHP 3。这也是PHP的含义从“个人主页”变成人人喜爱的递归缩写词“PHP: Hypertext Preprocessor”的转折点。这个版本和时期通常被视为PHP巩固地位的时期。在PHP 3和4过渡时期,phpMyAdmin被创建。Zeev和Andi将他们的名字组合在一起,创建了PHP服务公司Zend,古老的大象徽标诞生。

剩下的就是经典的历史了:PHP 4发布后不久,Drupal出世。2003年出现了WordPress,2004年,哈佛大学一位名叫Mark的学生(FB创始人)声名大噪。

FACEBOOK和PHP

Facebook是著名的PHP网站。但是,当成千上万的用户变成数以百万计,数以百万计的用户向数十亿用户扩张时,就出现了成长的烦恼。

特别是,PHP过去是(现在仍然是)一种脚本语言。对于开发人员的生产率来说很好,但对于资源效率来说却不然。因此,在2008年,Facebook开始从事HipHop for PHP(一种编译器)的工作。很简单,它解析PHP,将其编译为C ++,然后将生成的C ++编译为x64。鉴于PHP是弱类型且动态的,这不是什么了不起的壮举。但是结果不言而喻:CPU负载减少了50%。

我敢肯定,可以想象如果你 是Facebook的一名开发人员,使用这个程序会多么可怕。对PHP代码进行更改,运行解释器,然后运行编译器,再运行可执行文件,发现问题后返回修复。那是一个相当长的迭代周期,这就是为什么Facebook还开发了HPHPi,这是一种解释器,可以完成与解析器和编译器 (HPHPc)相同的工作,但只是用于开发。可以想象,让这两个项目保持同步是件非常头疼的事,因此在2011年,他们开发了HHVM(HipHop虚拟机)。

HHVM是一种PHP运行时。它使用JIT(即时编译)来提供两全其美的方法。这非常酷,如果你有兴趣,可以在Facebook自己的博客文章中内容。

下一个重大进展是在2014年,出现了一种专门为HHVM构建的语言Hack。它既是PHP的超集又是其子集,添加了可选的类型注释和诸如异步架构之类的附加功能。它还帮助HHVM的JIT更加高效,因为它可以通过使用指定的类型提示使HHVM的JIT放心地进行优化。很快,Facebook上的新代码开始用Hack编写,在往后的时间里也把现有代码向Hack转化。Hack和HHVM都是开源的,现在都在积极维护。

Facebook发现原生形式的PHP无法大规模扩展的事实,是否意味着它是一种设计拙劣的语言?不,我不这么认为。我不认为当时存在的选项是针对Facebook所需的规模或细节创建的。但是,这并不能阻止人们用PHP构建Facebook。

PHP的仇恨者

在广阔的软件社区中,随着PHP的发展壮大,它不可避免地引来了越来越多的愤世嫉俗者的攻击。不过,客观地讲,PHP比大多数其他语言更令人讨厌。根据最近的2020 Stack Overflow开发者调查,PHP在最可怕的语言中排名第六。为什么?

我不想在这里讨论技术细节,如果你感兴趣,可以看看《PHP:糟糕设计的化身》,这篇文章简直被PHP仇恨者奉为圣经。这篇博客写于2012年,其所提及的一些问题此后已得到解决,但许多问题尚未得到解决。(例如:为什么在2020年仍没有本地异步支持?)

我认为PHP在语言哲学上的问题更大。这是一个用复杂方式实现的用于相当狭窄领域的工具。在理想情况下,如果应用程序必须是复杂的,那么开发人员应该在用户代中看到复杂性,而不是语言本身。你不需要用一个复杂的工具来创建复杂的项目。当我说PHP很复杂时,我并不是说它对初学者来说很难使用(事实上恰恰相反),我是说它有不一致的命名约定和许多非常具体的函数,这两者都很容易产生错误,直到运行时这些错误才会暴露出来。但是,这些仅仅是PHP时代的属性吗?虽然这可能是一个因素,但肯定不是大家讨厌它的原因。毕竟,Python创建于1989年,比PHP早6年,在Stack Overflow 调查中,它在最受喜爱的语言中排名第三,也是当今增长最快的语言之一。

Stack Overflow 2020调查:最可怕语言

当谈到安全性时,关于PHP站点上超过平均水平的漏洞数量,是该语言的错误还是站点开发人员的错误,存在一些争论。

一方面,为了吸引包括非程序员在内的广泛人群而设计的编程语言,不管语言本身有什么优点,这些人用几十年前的教程编写的代码组合在一起创建网站,这种编程语言总是会遇到问题。另一方面, PHP试图以令人费解的方式修复基本的安全问题,例如先用escape_string()修复SQL注入,然后通过添加real_escape_string()修复漏洞,再添加addslashes()、mysql_escape_string()、pg_escape_string()等等。将此添加到其复杂的错误/异常处理(是的,错误和异常是不同的)中,如果不熟悉语言的细微差别,那么很容易出错。运行过时、不受支持的PHP版本的站点数量的数量还将以惊人的速度继续增长,因此在未来几年里,PHP站点仍将是黑客唾手可得的目标。

尽管如此,我不认为这门语言存在的问题有人们所说的那么严重。尽管人们对PHP的抱怨有合理的理由,但在我看来,大部分的污名都是因为它很受欢迎而遭受的嫉妒,而不是什么个人原因。

未来

本人深知在地址栏中使用post.php的页面输入对这门语言的评论,是很有讽刺意味的。但这与现有的网站无关。我认为即使是最热心的用户也不会建议我们重写所有使用PHP创建的网站。问题是,在2020年,如果我想创建一个新网站,我应该考虑使用PHP吗?

毫无疑问,当前的web开发趋势正在为单页面应用程序设定一个方向——在这种应用程序中,你的浏览器永远不会重新加载,但是导航是通过Javascript使用API调用(例如:浏览GitHub或Google Drive)得来的数据重新呈现页面来实现的,这样的调用快得像闪电一样。Javascript库、框架和工具在浏览器中构建反应式和高性能应用程序的生态系统不断增长,其中React和Vue最受欢迎。

归根结底,PHP是用于服务器端呈现的。这对大多数网站来说是不错的,也是大多数网站的最佳选择。但是如果你要在2020年建造新的产品,你必须接受这一点将带来的限制。虽然PHP风格的服务器端渲染还没有死(大家是不是都忘了SEO了?),但是现代的网站很可能是同构的,也就是说,能够在服务器和客户端渲染相同的Javascript,使用诸如Next.js(用于React)或Nuxt.js(用于Vue)等框架,能够将PHP从服务器端清除。

但是我们不能忽视PHP也在不断发展的事实。Laravel自诩为“web工匠的PHP框架”,它提供了一种MVC架构,用于安全快速地创建PHP应用程序。受到社会的高度重视,它的发展积极迅速。此外,PHP 8也在今年8月推出,带来一大堆新特性(其中许多特性和Facebook章节中介绍的类似),比如JIT、Union类型和改进的错误。

最后,祝PHP 25岁生日快乐,虽然PHP古怪得很,将来很长时间也将保持这份怪异。你给了很多人力量,并在web的崛起中发挥了关键作用。但是,如果人们到别处寻找未来,你也不要太沮丧,毕竟现在都2020年了。

本文为CSDN翻译文章,转载请注明出处。

原文链接:

https://hackaday.com/2020/06/29/does-php-have-a-future-or-are-twenty-five-years-enough/

PHP 还有未来么,还是 25 岁就“寿终正寝”了?相关推荐

  1. 25 岁“天才少年”曹原再发一篇 Nature!9 个月的第三篇 Nature!

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源 | 微算云平台(Sapere Aude).Nature.纳米人 ...

  2. 17岁读大学,25岁博士毕业,高颜值医生爆红网络,却坦言只是普通人

    1990年出生,毕业于中山大学中山医学院临床医学八年制专业,临床医学博士,主持省级课题1项,市级课题1项,发表SCI论文5篇,总影响因子20分以上,发表核心期刊论文1篇,专利1项.年初,因为一部纪录片 ...

  3. JavaScript,25 岁生日快乐!

    1995 年 12 月 4 日,网景和 Sun 发表了一份联合声明,宣布推出 JavaScript.它是一种开放的.跨平台的.易于使用的对象脚本语言,用于在企业网络和互联网上实时创建和定制应用程序.历 ...

  4. 2021新年伊始,25岁“天才少年”曹原再发一篇Nature!9个月的第三篇Nature!

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 本文募格学术整理自微算云平台(Sapere Aude).Nature.纳米人.安徽商报.新安晚 ...

  5. 曹原25岁,今天第8篇Nature

    丰色 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 曹原,又发Nature了! 你没听错,就是那个石墨烯大神曹原,刚刚发表了人生中第8篇Nature. 依旧是"一作+通讯作者& ...

  6. 25岁,在一个需要工作的周末……

    25岁,工作后的第一个生日,是在一个需要工作的周末-- 以前每年生日都会做一个复盘,对这一年的成就和不足做些回顾,对将来做一些展望. 在学校的时候,有过对美好未来的意淫,也有过对未知生活的恐慌:却很少 ...

  7. 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!

    全世界只有3.14 % 的人关注了 爆炸吧知识 本文转自:募格学术 魏嘉,16岁考上南大,25岁博士毕业,是南大医学院最年轻的博导,已在J Natl Cancer Inst等国际著名杂志上发表64篇S ...

  8. 上海交大25岁博士奶爸!6块腹肌,Science一作,人民日报都点赞了

    上海交通大学 在读博士生王言博火了! 热搜上是他的名字 "人民日报"微信也为他点赞了 王言博是谁?为什么会火? ▽ 他是上海交通大学年度人物 Science一作.校园歌赛冠军 他还 ...

  9. 25岁,一位女程序员的幸运几年

    最近刚满25岁,上天也送我一个幸运的礼物,我成为我们组的开发经理. 虽然很小很小的一个职位,但是对于最近犹豫彷徨的我,这无疑是一针镇定剂. 我是一个女生,从事后端开发的女生.这一路走来,很多心酸,很多 ...

最新文章

  1. 使DataGrid中的某些列隐藏起来
  2. springMvc 的参数验证 BindingResult result 的使用
  3. 理解GBDT算法(三)——基于梯度的版本
  4. java面试题二十一 异常
  5. nginx 代理多个服务器——多个server方式
  6. mongodb备份还原
  7. SQL Server中全角和半角字符的比较问题
  8. div+css命名大全
  9. atitit.seo 发帖关键词以及链接的制作.doc
  10. python调用百度查询关键字_Python模拟搜索百度关键字
  11. idea 谷歌翻译
  12. 【毕设狗】【单片机毕业设计】基于单片机的红外遥控器-实物设计
  13. 美国华盛顿州通过 ArcBlock 支持的区块链法案
  14. 二项分布算法(伯努利实验)
  15. 华为mate30pro和华为p40pro哪个好
  16. return的返回用法
  17. [PyQt5]基本控件19 - 分割条QSplitter
  18. 用textpad使abaqus(inp).fortran,python 代码语法加量
  19. java 调用飞信发短信(转)
  20. 小米电视2 android版本,教你如何打开小米电视2 1.1.25版本的adb调试

热门文章

  1. 计算机视觉的深度学习实践【第二期】视频教程
  2. Community找不到Workspace按钮的处理方法
  3. fbx模型加载的材质球路径
  4. R第四章:基本数据管理
  5. redis13---事务处理。
  6. 2014 ACM/ICPC Asia Regional Beijing Site
  7. 实体商店与虚拟商店购买保护流程:
  8. SQL Server调优系列进阶篇(查询优化器的运行方式)
  9. ExtAspNet发展规划
  10. 连续特征离散化--汇总