今天讲一段情史,是关于世界上最好的编程语言PHP和Facebook的感情经历。

1

恋爱

PHP能和Facebook谈恋爱,主要归功于创始人扎克伯格。

小扎这个哈佛的学生,很不安分,鬼点子很多,很喜欢整一些快餐式的Web项目。

而PHP的特点就是快速开发、快速上线,被小扎一眼相中,直接抛弃了Java,C#,Python,Perl,用它开发了好多小项目,随便挑几个大家看看:

课程配对(Course Match)

在这个网站上,可以选出他们想上的课程。也可以看到其他选择了这门课程的人,当然也可以通过输入人名查看别人上了什么课。

网站非常简陋,就是纯文本,但是让小扎惊奇的是,很多人喜欢在上面点来点去。

网站部署在他的个人笔记本中,网站很受欢迎,访问量巨大,很快笔记本就瘫痪了。

Facemash:

电影《社交网络》中描述了这一幕,小扎约会失败,回到公寓,一边喝啤酒一边写代码。

他未经许可,入侵哈佛各个学院的服务器,从通讯录上把照片“偷”下来,上传到自己的网站上,两个一组显示,让用户去评比谁更Hot。

凌晨4点,Facemash在哈佛大学像病毒一样迅猛传播,流量之大,IT部门不得不给它断网。

Facemash也引发了大量投诉,扎克伯格被哈佛的管理委员会传唤,差点儿因此被开除。

奥古斯都的罗马

这是一门课,但是扎克伯格忙于编程,根本没上。

快到期末考试时他傻眼了,考试要求奥古斯都统治时期的图片和工艺品进行分析。

于是他决定用编程来解决问题,他把这门课网站上所有图片都扒下来,传到自己网站,让其他同学一起学习,大家可以在上面记笔记,查看别人的笔记。

最后,小扎这门课得了一个“优”。

2

结婚

这些小网站充分体现了小扎的特点:想法很多,并且喜欢快速实现。

PHP虽然会产生脏代码,但这都不重要,关键是快速实现,它成了小扎的最佳工具。

通过Course Match,让小扎认识到人们有强烈的渴望去了解周围的人。

通过Facemash,他知道了人们很喜欢看朋友和熟人的图片,喜欢窥探别人的隐私。

通过《奥古斯都的罗马》小扎意识到:人们乐意共享免费的内容。

一切准备停当,只差一个引爆点。

这时候双胞胎温克莱沃斯兄弟出现了,让他做一个叫做ConnectU的社交产品。

小扎满口答应,但是却不断拖延,最终用PHP推出了自己的社交网站:Thefacebook。

Thefacebook一开始并没有任何内容,它的内容需要用户去填充。

在网站上用户可以上传自己的图片,写下自己的兴趣爱好,选修的课程等等。

用户之间可以通过Poke的方式做简单的互动,更重要的是可以浏览其他人的内容,满足了一个人的“窥探”欲望。

PHP和Facebook结婚了。

3

蜜月

《亮剑》中赵刚说:一个军队的气质和性格是首任军事长官决定的。这个观点用到公司上也是合适的 。

小扎给Facebook创建的风格就是打破常规,快速行动,完成比完美更重要。

外界看Facebook的团队,经常觉得他们就是黑客,一群人在一起不断尝试,疯狂迭代,这种风格和PHP实在太搭配了。

在PHP的帮助下,快速迭代的Facebook迅速冲出哈佛,进入美国所有大学。

然后冲出美国,走向全世界。

2012年,Facebook的用户数量已经达到惊人的10亿。

这里必须提一下,Facebook当然也想进入中国,只是没有成功,小扎也从“对华友好”的人设,迅速成为反华急先锋,公然抹黑中国,还试图用地缘政治手段“杀死”竞争对手TikTok,真是闻所未闻,此处暂时不表,下次再说。

4

分手

Facebook一旦变得财大气粗,就开始嫌弃PHP了。

他经常讽刺PHP“动态一时爽,重构火葬场”。

还拿着各种图片对PHP的性能进行百般羞辱。

说什么用户体验差,需要更多的服务器(也就意味着需要花更多的钱在PHP身上),等等。

还威胁PHP说要重写!

面对指责和威胁,PHP都是一笑而过,因为它知道,Facebook规模庞大,内容复杂,再加上配套的生态系统,想要重写整个系统,怎么可能嘛!

Facebook没办法,又没法休掉PHP,只能想办法去改进PHP的执行引擎Zend,但是也没有得到想要的性能提升。

2010年,Facebook痛定思痛,终于放了一个大招:HipHop,它可以把PHP代码转换成高度优化的C++代码,编译后以本地代码来执行。

经过转换后,执行效率提升了6倍之多,相当了不起的成就。

但是,HipHop想在性能上更近一步很难了,它也无法完整支持PHP的特性,如create_function() 和 eval(),在编译和部署上也难以满足Facebook快速行动的要求。

2011年,Facebook干脆搞了一个PHP的虚拟机HipHop VM(HHVM),HHVM能把PHP转成字节码,然后在运行时动态编译成机器码执行,这和JVM就很像了。

与HHVM一起到来的,还有一个新欢:Hack语言。

Hack相当于PHP的一个方言,不过它允许程序员同时使用动态类型和静态类型。

这对于PHP是个超级打击,PHP一哭二闹三上吊,也没什么作用,毕竟性能和类型安全对一个超大型系统是非常重要的。

Facebook的系统逐渐采用Hack这个新欢,PHP没有办法,只有黯然离开。

5

后续

不过PHP的娘家人表示不服,他们推出了PHP7,性能大幅提升,性能逼近了Facebook的HHVM,在这种情况下,程序员还是选择PHP,毕竟这是开源社区的产品。

纵观PHP和Facebook的这段情史,我们注意到:PHP对于2000年初的创业公司吸引力非常大,因为它总是能快速地把网站开发出来。

在这个时候PHP可以说是魅力四射。

等到网站规模扩大,用户量增多,PHP的缺点就暴露无遗,会被人嫌弃。

嗯,刚收到PHP娘家人的抗议,他们说这篇文章不客观,从PHP7 开始,性能就大幅提升了,都逼近Facebook的HHVM+Hack了,更不用说PHP8了.....

好吧,祝愿世界上最好的编程语言越来越好!

(完)

曝一段十多年前的“情史”!相关推荐

  1. 任正非回应一切:今天的困难十多年前就有预计(附问答实录)

    作者 | 李娜 本文经授权转自第一财经 1月17日下午,身着蓝色西装,已经到了七旬之年的任正非脚步轻盈地步入采访会场,虽然只比约定的采访时间稍晚了十分钟,但他见到中国媒体的第一句话就是道歉," ...

  2. 雷军晒十多年前的手机:支持无线充电、内置8GB存储

    近日,雷军在微博上开启了怀旧风,不仅晒出了小米1代手机,还翻出了十多年前最喜欢的一部手机. 不少米粉则感慨:"陪伴小米一路走来,都这么多年了,如今小米一直到米10,慢慢走向手机市场高端,也算 ...

  3. 十多年前的 Adobe ColdFusion 漏洞被用于勒索攻击

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 网络安全公司 Sophos 表示,Adobe 公司在十多年前修复的两个 ColdFusion 漏洞遭攻击. Sophos 最近调查发现身份不明的 ...

  4. 面对一直在房价洼地的长沙,我不后悔十几年前逃离长沙

    面对一直在房价洼地的长沙,我不后悔十几年前逃离长沙 1997年笔者参加高考,第一批线第一志愿同济大学未能如愿考上,班主任老师说考上了第一批的第二志愿也就是现在的中南大学.一直记得当时高三班主任说,'你 ...

  5. 【商品架构day2】一个商品的领域模型长什么样子 - 淘宝十多年前的认知

    本文来自李平老师的分享,主要介绍一个普遍对商品模型的认知.这个认知已经很久没有更新了,十几年前的吧.所以这里在告诉大家历史是什么样,更要去思考哪里有错误.哪里要改进. SPU.SKU概念 首先我们需要 ...

  6. 怀旧服显示服务器已满,十五年前的怀旧服居然还能服务器爆满 魔兽世界正式服算不算失败...

    原标题:十五年前的怀旧服居然还能服务器爆满 魔兽世界正式服算不算失败 魔兽世界怀旧服已经开启快一个月了,到目前为止一切数据表明发展的非常顺利.很多老玩家重返艾泽拉斯大陆,即使是无尽的排队时间也没能阻挡 ...

  7. 转一篇十几年前的旧文,与各位共赏之

    从Internet说起 我的电脑还没连网,也想过要和Internet连上.据说,网上黄毒泛滥,还有些反动的东西在传播,这些说法把我吓住了.前些时候有人建议对网络加以限制,我很赞成.说实在的,哪能容许信 ...

  8. 00 后知道十几年前的手机这么好玩儿吗

    你或许觉得「丑」,但它们并不无聊. 最近<隐秘的角落>在全网大火,这部制作精良的电视剧可不仅靠剧本好和演员棒,剧中的场景和道具也是非常给力--年代感满满的街道.生活气息浓厚的房子还有那个年 ...

  9. 一个十几年前做的老游戏--隋唐演义

    春节前,给小侄儿买了一个可以模拟运行任天堂游戏的mp4,好像叫什么PMP,呵呵,小侄儿很喜欢. 不过,光有游戏机,没有游戏不行啊,我就在网上一通翻找,找了一大堆任天堂的nes格式模拟游戏,给他灌进去. ...

  10. 圆了十五年前的期待------遇见乒乓大满贯楠姐(王楠)

    2003年,刚从初中升入县城高中,第一次看楠姐打球, 后来了解越来越多, 把楠姐当偶像, 也给了我很多精神上的激励.任何关于楠姐的消息都不会错过,也期待将来某天能见面 . 后来, 读了大学, 网络信息 ...

最新文章

  1. 随机森林及重要参数解析
  2. Windows Phone 7 程序菜单栏ApplicationBar
  3. 6 种激活函数核心知识点,请务必掌握!
  4. 《尼山萨满》项目美术亲述游戏创作过程
  5. 方法级权限控制-@Secured注解使用
  6. c++ 如何获取系统时间
  7. mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...
  8. 海明距离mysql查询_海量数据,海明距离高效检索(smlar) - 阿里云RDS PosgreSQL最佳实践-阿里云开发者社区...
  9. 一文理清散乱的物联网里开发者必须关注的技术!
  10. C++奥赛一本通贪心题解
  11. C#网站发布在IIS10上,Access数据库读取为空白的解决方案
  12. javascript Date定义和体验
  13. 线索二叉树(Binary Thread Tree)
  14. VPP-20.09版本安装教程(离线版)
  15. 保姆级Ruby on rails安装教程
  16. android wifi热点 信道,wifi 热点配置最优信道(示例代码)
  17. 正确认识使用Word模板
  18. 洛谷 【入门4】数组 P1427 小鱼的数字游戏
  19. unity材质球发光_Unity3D - 发光材质(Emissive Materials)
  20. 天行健,君子以自强不息;地势坤,君子以厚德载物的解释

热门文章

  1. 跨境电商亚马逊最新骗局揭秘:所谓的跨境电商亚马逊店铺真的能赚钱吗?真的靠谱?
  2. 利用uniapp实现手机摇一摇H5项目
  3. 圆形区域的半透明填充
  4. MSOCache 文件夹是否可以删除
  5. 利用XSLT来换XML的根
  6. SmartToast
  7. Linux之iptables防火墙
  8. 键鼠共享软件分享,让你一套键鼠控制多台设备(多平台)
  9. 第十五课 简单易懂的指针
  10. 北洋园pt---一个好用的pt网站