曝一段十多年前的“情史”!
今天讲一段情史,是关于世界上最好的编程语言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月17日下午,身着蓝色西装,已经到了七旬之年的任正非脚步轻盈地步入采访会场,虽然只比约定的采访时间稍晚了十分钟,但他见到中国媒体的第一句话就是道歉," ...
- 雷军晒十多年前的手机:支持无线充电、内置8GB存储
近日,雷军在微博上开启了怀旧风,不仅晒出了小米1代手机,还翻出了十多年前最喜欢的一部手机. 不少米粉则感慨:"陪伴小米一路走来,都这么多年了,如今小米一直到米10,慢慢走向手机市场高端,也算 ...
- 十多年前的 Adobe ColdFusion 漏洞被用于勒索攻击
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 网络安全公司 Sophos 表示,Adobe 公司在十多年前修复的两个 ColdFusion 漏洞遭攻击. Sophos 最近调查发现身份不明的 ...
- 面对一直在房价洼地的长沙,我不后悔十几年前逃离长沙
面对一直在房价洼地的长沙,我不后悔十几年前逃离长沙 1997年笔者参加高考,第一批线第一志愿同济大学未能如愿考上,班主任老师说考上了第一批的第二志愿也就是现在的中南大学.一直记得当时高三班主任说,'你 ...
- 【商品架构day2】一个商品的领域模型长什么样子 - 淘宝十多年前的认知
本文来自李平老师的分享,主要介绍一个普遍对商品模型的认知.这个认知已经很久没有更新了,十几年前的吧.所以这里在告诉大家历史是什么样,更要去思考哪里有错误.哪里要改进. SPU.SKU概念 首先我们需要 ...
- 怀旧服显示服务器已满,十五年前的怀旧服居然还能服务器爆满 魔兽世界正式服算不算失败...
原标题:十五年前的怀旧服居然还能服务器爆满 魔兽世界正式服算不算失败 魔兽世界怀旧服已经开启快一个月了,到目前为止一切数据表明发展的非常顺利.很多老玩家重返艾泽拉斯大陆,即使是无尽的排队时间也没能阻挡 ...
- 转一篇十几年前的旧文,与各位共赏之
从Internet说起 我的电脑还没连网,也想过要和Internet连上.据说,网上黄毒泛滥,还有些反动的东西在传播,这些说法把我吓住了.前些时候有人建议对网络加以限制,我很赞成.说实在的,哪能容许信 ...
- 00 后知道十几年前的手机这么好玩儿吗
你或许觉得「丑」,但它们并不无聊. 最近<隐秘的角落>在全网大火,这部制作精良的电视剧可不仅靠剧本好和演员棒,剧中的场景和道具也是非常给力--年代感满满的街道.生活气息浓厚的房子还有那个年 ...
- 一个十几年前做的老游戏--隋唐演义
春节前,给小侄儿买了一个可以模拟运行任天堂游戏的mp4,好像叫什么PMP,呵呵,小侄儿很喜欢. 不过,光有游戏机,没有游戏不行啊,我就在网上一通翻找,找了一大堆任天堂的nes格式模拟游戏,给他灌进去. ...
- 圆了十五年前的期待------遇见乒乓大满贯楠姐(王楠)
2003年,刚从初中升入县城高中,第一次看楠姐打球, 后来了解越来越多, 把楠姐当偶像, 也给了我很多精神上的激励.任何关于楠姐的消息都不会错过,也期待将来某天能见面 . 后来, 读了大学, 网络信息 ...
最新文章
- 随机森林及重要参数解析
- Windows Phone 7 程序菜单栏ApplicationBar
- 6 种激活函数核心知识点,请务必掌握!
- 《尼山萨满》项目美术亲述游戏创作过程
- 方法级权限控制-@Secured注解使用
- c++ 如何获取系统时间
- mediarecorder添加时间戳_Python脚本实现数据处理(官方实例)和Hive自带时间函数...
- 海明距离mysql查询_海量数据,海明距离高效检索(smlar) - 阿里云RDS PosgreSQL最佳实践-阿里云开发者社区...
- 一文理清散乱的物联网里开发者必须关注的技术!
- C++奥赛一本通贪心题解
- C#网站发布在IIS10上,Access数据库读取为空白的解决方案
- javascript Date定义和体验
- 线索二叉树(Binary Thread Tree)
- VPP-20.09版本安装教程(离线版)
- 保姆级Ruby on rails安装教程
- android wifi热点 信道,wifi 热点配置最优信道(示例代码)
- 正确认识使用Word模板
- 洛谷 【入门4】数组 P1427 小鱼的数字游戏
- unity材质球发光_Unity3D - 发光材质(Emissive Materials)
- 天行健,君子以自强不息;地势坤,君子以厚德载物的解释