编程语言与思维:科技公司如何自我重构?



编程语言与思维:科技公司如何自我重构?

从 PHP 在 Facebook 的发展看互联网公司的文化土壤和思考方式

    

虎嗅注:原文来自 MIT Technology Review,本站编译。


当日本计算机科学家松本行弘决定创造一种名叫 Ruby (这种技术支撑了 Twitter、Hulu 以及其他许多现代 Web 流行网站) 的程序语言时,他是从 1966 年一部名为 Babel-17 的科幻电影中获得了灵感。这本书主要讲的是一种新发明的语言能够让那些使用它的人升级自己的头脑思维。“Babel-17 是一种极精确的分析语言,几乎可以确保任何情况下的技术优势。”影片中的主人公有这样一句台词。通过发明 Ruby,松本行弘希望实现同样的效果:重编并改进程序员思考的方式。


这目标听起来很宏大,但他的想法是一种主流。软件开发者做为一个工种,普遍认为程序语言对于思维有影响力,大到足够可以改变你解决问题的方式——甚至是你选择解决哪些问题。这也是他们如何扩大公司规模、改进产品、招聘团队的方式:“你用什么编程语言?”


明白这一点能够让圈外人了解软件公司的运作,尤其是在它们变得如此强大又赚钱,制造的产品和服务进入我们生活各个角落的今天。如果你想知道为什么 Facebook 的外观和工作方式是现在这个状态,Facebook 未来能为我们或对我们做什么,你就需要知道一些关于 PHP 的知识,因为这是马克•扎克伯格 (Mark Zuckerberg) 最初打造 Facebook 使用的程序语言。


在程序员当中,PHP 可能是所有编程语言中最不被“仰视”的一种。有人在博客文章里评价其为“糟糕的设计”,而那些愿意使用 PHP 的人则被看作是业余选手。“有这种传奇的事,那些去 Facebook 工作的顶尖工程师,他们在 Windows XP 上写 PHP 代码,”程序问答网站 Stack Overflow 创始人杰夫 (Jeff Atwood) 说道,“他们可是那种毁三观级的黑客。”在近 10 分钟的谈话中,杰夫用如下的词语描述 PHP:“一个消瘦的怪兽”,“一场大瘟疫”,一个鬼屋里的住客爱上了幽灵。


大部分得到承认的程序语言都有一个总体的设计哲学或是指导原则,用来组织关键字和语法——也就是交给程序员使用的指令集合——并形成一个逻辑上的整体。PHP 没有。其设计者 Rasmus Lerdorf 主动承认他当初是东拼西凑的。“我不知道该怎么停止,”2003 年他在接受一次采访时说到,“我根本不知道要如何写一个程序语言——我只是一边用一边增加新的逻辑模块。”


程序员最爱用的一个例子是 PHP 函数“mysql_escape_string”,该函数能够将一段混合字符剔除掉之后再提交数据库。(混合字符的例子可以参考一般网站会要求你输入电邮地址之类,黑客能够嵌入一段代码,从网站获得你的密码。) 当这个函数的一个漏洞被发现时,一个新的版本出现了,叫做“mysql_real_escape_string”,但是原有的版本并没有被替换。这种结果就好像在飞机驾驶仓上有两个外观接近的按钮并列排放一样:一个用来把起落架放下,另一个用来把起落架安全地放下。这可不是什么友好的操作——这是导致灾难的原因。


但是尽管对 PHP 的嗤之以鼻随处可见,如今的 Web 网络有许多都是基于 PHP 设计,全网有 39% 的网站使用 PHP。Facebook、Wikipedia 和 WordPress 都是 PHP 项目。这是因为 PHP 虽然有许多缺陷,但是上手很快。PHP 这个名字来自最初的“个人主页”,可以很容易地让用户在静态 HTML 页面中添加诸如日期和用户名之类的动态内容。PHP 实现了从设计一个网站到编写一个 Web 应用程序的飞越,而投入却很小,你完全不需要成为专业人士就可以做到。


而 PHP 这种“即刻运行”的特性对于 Wikipedia 的成功至关重要,维基媒体基金会的总软件工程师奥瑞 (Ori Livneh) 这样认为。“我一直讨厌 PHP,”他对我说。维基百科过于依赖 PHP,导致了大规模的设计缺陷。(这也是为什么直到 2008 年维基百科才推出移动端版本,直到 2013 年编辑界面才变得友好起来。) 但 PHP 让那些不是——或几乎刚刚是——软件工程师的人能够提交新功能:这也是为什么维基百科词条可以在古埃及文明页面显示象形文字,并且可以处理五线谱的原因。


但是你用 PHP 设计不了 Google,因为 Google 之所以成为 Google 需要把一件事做到最好——搜索结果。设计 Google 的是更加精炼和强大的语言,比如 Java 和 C++。而 Facebook 恰恰相反,更像一系列的小试验:按钮、信息流、信息模块等等只是为了抓住你的注意力。PHP 是为了快速制造新东西而生的。


你可以想象扎克伯格在哈佛宿舍里完成 Facebook 的情景。互联网发展如此之快,用户多变,唯一能够抓住机会的办法就是快。无论他做的是一团泥也好,或者是一盘意粉,甚至是什么都好。他把东西做成了,人们可以用。他当时没有考虑什么优雅代码的问题;他想的是让好友们可以登陆 Thefacebook 去看他们认识姑娘的图片。


如今 Facebook 已经是价值超 2000 亿美元的公司了,办公室里到处可以见到标语“完成要比完美更重要”;“快速推进,打破常规”。这就是 Facebook 的“黑客”文化,但也恰恰是 PHP 的价值观。快速推进打破常规实际上正是 PHP 的本质,任何使用这种语言的人都会这样思考。可能你会说,正是这种编程语言,打造并维系了 Facebook 的文化。


2010 年末,Facebook 迎来了一场危机。PHP 并不是一种性能优化的设计,但是现在要求提升性能。Facebook 发展速度太快,如果没有重大的调整,看起来可能会出现问题。


整体更换程序语言并不是一个可选的方案:Facebook 有数百万行 PHP 代码,上千名 PHP 工程师专家,超过 5 亿用户。Facebook 的做法是,由资深工程师组成的一个小团队被分配到一个特别的任务。其中之一就是设计一个编译器,能够将 Facebook 的 PHP 代码转换成运行更快的 C++ 代码。另外一个任务则是由计算机语言专家完成,他们要让 Facebook 的程序员保持 PHP 风格文化,但是编写更可靠的代码。


于是 PHP 的一个分支版本 Hack 应运而生,这种语言是带有可选的类型系统的 PHP。也就是说,你既可以用老式的方法快速编写 PHP 代码,或者选择让类型系统检查你的代码正确度。Facebook 希望他们的程序员用自己熟悉的语言继续快速推进,但是不想让他们像之前那样打破东西。(去年扎克伯格宣布了一个新的工程师口号:“快速推进,稳定架构”。)


当创业公司终于解决了营收问题而“变成熟”之后,他们可以聪明地利用编程语言的威力来操纵企业组织的文化。曾经在 Google 供职 7 年的程序语言设计者罗桑 (Guido van Rossum) 认为,一旦软件公司发展到一定的体积,解决混乱局面的唯一方式,就是使用一种要求程序员在一线做更多工作的语言。“感觉上就好像你被拖慢了一样,因为你要把每件事说三次。”这也是为什么许多创业公司在更换语言之前希望能等越久越好。你会失去一些最初帮你起步的牛逼黑客,也会失去小团队突击新功能的可能性。但是一种更精确的语言会帮助公司的其他人了解彼此的代码,获得产品稳定性,这也是公司每天运作所必须的。


软件创业公司能够做到这一点调整,或许能够帮助解释为什么他们如此强大。计算机不端扩张的触及领域也是如此。这些软件公司同样具有独特的能力,重新构建自我。随着变化和发展,它们能够做的不仅仅是组织机构调整,因为它们基于代码设计,所以能够实现更加巨大的变化。它们能够重编自身,它们的文化,以及它们思考的方式。

HHVM即HipHop Virtual Machine,目前是3.0版本,出自Facebook,它先将PHP和Hack程序编译为中间字节码,然后通过just-in-time (JIT)编译器将字节码动态翻译为x64机器代码,应用上了非常多的编译优化技术。       JIT就是HHVM高效率的所在,所谓字节码:是一种人类无法阅读的代码,专门用来给编译器高效执行的。当HHVM首次加载项目时,它会将所有的PHP代码转换成字节码;字节码的生成是与平台无关的。       机器码是一系列供CPU执行的指令。用过汇编的都应该清楚机器码,估计没人喜欢用汇编编程。通过编译器就可以把汇编转成机器码,然后供CPU处理。JIT(即时)编译器是指在运行时才会去编译字节码。字节码会存放在内存中,然后JIT编译器会根据需要加载并编译所涉的字节码。       通过以上技术,HipHop和HHVM获得了性能的提升。据官方介绍,与PHP 5.2引擎 APC相比,HHVM可以处理的Web请求吞吐量增加了9倍,而内存消耗减少了5倍。实际上HHVM之前有朋友留言提起过它,亲自测试过后发现HHVM在提升PHP处理速度上非常有优势,非常适合大型的网站。       最近,HHVM已经更新到了3.0版本,HHVM几乎已经完全支持PHP 5.5了,但还是有不少bug,所以不是所有应用程序都可以运行。因此,Facebook准备让最流行的20个开源PHP项目能够运行在HHVM上。第一个已经支持的项目就是Wordpress。不过对于国内的Discuz兼容还不太完美。        除了开发出 HHVM 的 FaceBook 公司外,还有很多其他公司也采用了这个方案,在服务器上用 HHVM 运行 PHP 应用,包括 Wikimedia 和电子商务网站 Etsy。Wikimedia:Wikimedia 拥有大量的教育内容,包括著名的在线百科全书维基百科。维基百科每 个月吸引着近五亿的互联网用户,为了满足这样高级的需求,需要优化服务器的性能,和 PHP相比 HHVM 有一个显著的优点,它可以同时加载多个 SPU 核心, 而 PHP 是单线程语言,不能被并行化。维基百科部署了 HHVM 后,CPU 的负载从50%降到了10%,用户提交编辑时的平均响应时间减少到原来的一半,页面的平均加载时间从原来的1.3秒降到了0.9秒。
 Etsy: 拥有五千四百万用户的 Tesy 同样迫切需要提高服务器性能,Etsy 的工程师对比了HHVM 和 PHP5.4 的性能,发现 HHVM 每秒可以处理280个服务器请求,而对于 PHP5.4,如果每秒的请求数超过了190次,服务器的响应时间就会急剧增加。
官网地址是:http://hhvm.com/ (不过国内无法访问) 标签:facebook开源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值