为什么 Facebook 发明新语言“Hack”

标签: 综合新闻 | 发表时间:2014-04-09 00:23 | 作者:
出处:http://www.oschina.net/?from=rss

为什么Facebook发明新语言“Hack”

 (注:Hack是一种PHP的派生语言)

为了替换掉那些有年头的老代码,Facebook创建了一个新的语言。这篇文章将会告诉背后的故事。

By Steven Melendez

这个故事来自Facebook工程师Julien Verlaguet和Ed Smith的一次访谈。2004年2月,扎克伯格(Mark Zuckerberg)的哈佛同学们第一次登陆Facebook,服务器里运行着PHP。那个时候PHP击败了Perl成为最炙手可热的Web开发语言。

使用类似Ruby的Rails或者Python的Django这些当下最流行的开发框架都不是那个时候的选择。Rails第一次发布是在几个月之后(注:2004年7月),而Django在一年后才被发布(注:2005年)。十年后,PHP因为笨拙的库,不一致的命名规则,内置定义的函数,在多语言程序中语法和语义与相关语言巨大差异使人混淆,过去的设计原则极容易导致安全性问题等而被指责。

“每一个PHP程序员日复一日地处理着难以捉摸或者棘手的任务”,Facebook的工程师Julien Verlaguet和Alok Menghrajani在最近的公司博客上写道。

但是,PHP并没离开Facebook,并且其他的大公司和工程的数百万行代码都是用这个语言写的。程序员们仍然得益于PHP的快速开发和部署,且努力去除那些不好的特性。

减轻PHP程序员的痛苦不是说抛弃这个语言和多年的开发成果。Facebook开发了Hack,这是一种新的,派生于PHP的语言。它将与已有的代码和谐相处,增强了安全特性源于函数式编程语言和学术研究。

“这是一种很特别的设计,能与PHP进行无缝的交互”,Verlaguet说。技术引领着Hack项目的发展,它的背后是一份混合编程语言和行业经验的正式学术研究。Facebook已经在内部使用和发展Hack大概有两年时间了。最近,已经将项目开源,并且在4月9日安排公开的“开发者日”。

“我们这样做的目的是希望能更好地倾听来自社区的反馈, 同时开源社区也会让Hack面对Facebook外的开发者有更好的体验”,Verlaguet说。

也许Hack的主要创新是引入了自动类型判断,概念类似于深奥难懂的Haskell和 ML语言但是比他们少得多的命令行,同时更接近主流的编程语言。

传统的PHP是动态类型,这意味着在代码中的基本的本质的变量类型是一个数还是一个字符串或者其他类型是不确切的,除非程序实际运行着。程序员们享受这种灵活,却为错误开辟了空间,它不像Java或者C那样的静态类型语言,代码被写出来的时候就明确告诉你变量的类型。

Hack走了一条中间路线:它可以基于变量怎样被使用的使用逻辑让开发者指定类型,如果代码的逻辑冲突,就会给出一个错误(error)。这个概念本身不是新的,但是它以前都是被用在编译型语言上的,开发者需要等待他们的源代码被转换成机器码,不能像PHP程序员希望的那样点完保存立即执行,Verlaguet说。

“解决方案在于建立了一个类型检查守护进程”,他说。关于这个后台程序运行在开发者的电脑里。它代替等待开发者去显示调用一个编译器,当源代码文件被改变的时候,类型检查进程要求操作系统去通知编译器。这类似于同步文件需要更新时,Dropbox就得到一个信号。

被改变检查的有效的方法是通过类型检查器被反复检测,直到其确认与其他的代码是一致的。只要类型检查器足够快,程序员基本就不需要等待,类似于在Git版本管理系统上转换到新分支那样,Verlaguet说。

Hack还有其他一些特性,增强的集合类型如vector和set来增强PHP的数组,匿名函数被使用在函数编程上。新的语言让Facebook逐步提升已有的PHP代码,使得长期投资在PHP上的价值继续发挥作用, Ed Smith说,Facebook的HHVM运行引擎将会同时提供给Hack和PHP。

“Hack 让我们能在同一时间和同一文件上动态转换我们的代码”,Smith说,“换做其他的一种语言将会有很大的困难”你认为是吗?

其他的公司和工程转换到时髦的Hack还为时尚早,项目刚刚开源,Verlaguet说。不过,从对他采访的记录来看,整个项目目前是处于积极的态势中。

英文原文: fastcolabs

相关 [facebook 发明 语言] 推荐:

为什么 Facebook 发明新语言“Hack”

- - 开源中国社区最新新闻
为什么Facebook发明新语言“Hack”.  (注:Hack是一种PHP的派生语言). 为了替换掉那些有年头的老代码,Facebook创建了一个新的语言. 这个故事来自Facebook工程师Julien Verlaguet和Ed Smith的一次访谈. 2004年2月,扎克伯格(Mark Zuckerberg)的哈佛同学们第一次登陆Facebook,服务器里运行着PHP.

Facebook 推出 PHP 语言规范草案

- - 开源中国社区最新新闻
PHP是最广泛使用的脚本语言之一,被数以千万计的网站使用,但直到现在它才有一个正式的语言规范. Facebook工程师和PHP核心开发者 Sara Golemon在上月初举行的OSCON会议上 宣布了制定正式规格的计划,现在规格的草案已经发布在Github上. Facebook网站主要是基于PHP语言,过去几年Facebook向PHP贡献了许多开源项目,如虚拟机HHVM,翻译器HPHPc.

从NLP到“自然语言理解”,Facebook如何让Messenger更懂人类?

- - 雷锋网
雷锋网按:Facebook的AML和FAIR团队合作进行自然语言处理对自然语言理解进行着合作研究. 在2017年4月19日举办的F8开发者大会上,Facebook向公众介绍了他们的研究进展、自然语言理解在Facebook产品中的应用,并且介绍了平民化的自然语言理解平台CLUE,希望依靠大家的力量,继续丰富自然语言理解的应用.

C语言发明人丹尼斯-里奇去世

- 刘 - cnBeta.COM
维基百科资料显示,美国著名计算机专家、C语言发明人之一丹尼斯・里奇(Dennis Ritchie )已于10月9日去世,享年70岁. 他发明了包括C语言在内的多种编程语言,并研发了Multics和Unix等操作系统.

Lisp语言发明者、“人工智能之父” John McCarthy与世长辞

- InterMa - 36氪
Lisp语言发明者、“人工智能之父”John Maccarthy今天与世长辞. 以下是关于这位计算机大师的简介:. -1948年,加州理工,数学学士. -1951年,普林斯顿大学,数学博士. -1956年Dartmouth会议的发起人(该会议被视为AI作为一门学科诞生的标志). -1955年在为该会议写的建议书中提出Artificial Intelligence一词,从而被视为“人工智能之父”.

Lisp语言发明者 人工智能奠基人 John McCarthy昨日病逝

- Woooon - cnBeta.COM
图灵奖获得者,Lisp语言的发明者,人工智能的奠基者之一,计算机科学家John McCarthy昨日病逝. John McCarthy生于美国马萨诸塞州波士顿,计算机科学家. 他因在人工智能领域的贡献而在1971年获得图灵奖. 实际上,正是他在1955年的达特矛斯会议上提出了“人工智能”这个概念.

Lisp语言发明者、“人工智能之父” John McCarthy与世长辞

- Hector - 东西
Lisp语言发明者、“人工智能之父”John Maccarthy今天与世长辞. 以下是关于这位计算机大师的简介:. -1948年,加州理工,数学学士. -1951年,普林斯顿大学,数学博士. -1956年Dartmouth会议的发起人(该会议被视为AI作为一门学科诞生的标志). -1955年在为该会议写的建议书中提出Artificial Intelligence一词,从而被视为“人工智能之父”.

9种编程语言,看看其发明者是怎么说的

- - 博客 - 伯乐在线
从 Node.js到C++,看他们的发明者是如何评价他们的语言的未来. Dahl:Node与其他的语言有一点明显的区别,就是处理I/O. 它要求用户不断的处理新事物,因此它很适用于网络编程. 在你的服务器上要与很多人打交道,你必须处理链接. Node鼓励人们用非阻塞的模式. 由于这个特性,你会发现Node在开发服务器上比传统 编程语言更加方便.

中国的Facebook?

- Lorna - It Talks--上海魏武挥的博客
腾讯近日很低调地推出了一个名为“朋友”的网络服务(也是一个使用独立域名的网站),这是一个与时下社交网站,比如人人、开心等非常类似的产品. 与它们一样,目前这个“朋友”上也加载了一些应用,当然,一贯的,以腾讯自家出品为主. 而且,我个人以为,未来会有更多的腾讯在QQ这个客户端上的应用,逐步向这个网站迁移.

Facebook初探

- 亦农 - 王建硕
今天的湾区阳光灿烂,280州际公路两边的绿色山坡和蔚蓝的白云,让人觉得自己是Windows XP桌面上的一个图标. 下午,2点,终于来到Facebook这个神奇的公司. 他们的新家在南加利福尼亚街的最里面,一幢两层的楼里. 他们刚刚从车位紧张的Palo Alto城里搬到这里,据说一层楼又要搬了. 我好像是他们再次搬地方前的最后一批访客.