为什么Facebook发明了一种新语言“Hack”?(注:Hack是PHP的衍生语言)为了取代那些已经流传已久的旧代码,Facebook创造了一种新语言。本文将讲述其背后的故事。---作者:StevenMelendez这个故事来自对Facebook工程师JulienVerlaguet和EdSmith的采访。2004年2月,马克·扎克伯格的哈佛同学第一次登录Facebook,服务器上运行PHP。当时PHP击败Perl成为最热门的Web开发语言。使用当前最好的开发框架,如Ruby的Rails或Python的Django在当时不是一个选择。Rails在几个月后首次发布(注:2004年7月),Django在一年后发布(注:2005年)。十年后,PHP因笨拙的库、不一致的命名规则、内置定义的函数、多语言程序中与相关语言的语法和语义的巨大差异以及过去容易导致安全问题的设计原则而令人困惑。责备。“每个PHP程序员日复一日地处理难以捉摸或棘手的任务,”Facebook工程师JulienVerlaguet和AlokMenghrajani在最近的公司博客上写道。然而,PHP并没有离开Facebook,其他大公司和项目的数百万行代码都是用这种语言编写的。程序员仍然受益于PHP的快速开发和部署,并努力去除那些不好的特性。减轻PHP程序员的痛苦并不意味着丢掉这门语言和多年的开发经验。Facebook开发了一种新的PHP派生语言Hack。它将与现有代码和谐相处,具有源自函数式编程语言和学术研究的增强安全功能。“这是一个非常特殊的设计,可以与PHP无缝交互,”Verlaguet说。技术驱动Hack项目的发展,其背后是混合编程语言和行业经验的正规学术研究。Facebook已经在内部使用和开发Hack大约两年了。近日,该项目已经开源,并将在4月9日安排一个公开的“开发者日”。“我们这样做的目的是为了更好地听取社区的反馈,同时,开源社区也会让Hack对Facebook以外的开发者有更好的体验,”Verlaguet说。也许Hack的主要创新是引入了自动类型判断,这个概念类似于深奥的Haskell和ML语言但命令行比它们少得多,同时更接近主流编程语言。传统的PHP是动态类型的,也就是说代码中变量类型的基本性质是数字或者字符串或者其他类型并不准确,除非程序实际运行。程序员喜欢这种灵活性,但它为错误打开了空间。它不像Java或C这样的静态类型语言,在编写代码时明确告诉你变量的类型。Hack采取了一条中间路线:它让开发人员根据变量的使用逻辑来指定类型,如果代码逻辑冲突则给出错误。这个概念本身并不新鲜,但之前已经在编译语言中使用过,开发人员需要等待他们的源代码被转换为机器代码,而不是像PHP程序员想要的那样点击保存并执行,Verlaguet解释。“解决方案是构建一个类型检查守护进程,”他说。关于这个运行在开发者电脑上的守护进程。类型检查过程不是等待开发人员显式调用编译器,而是要求操作系统在源代码文件更改时通知编译器。这类似于Dropbox在同步文件需要更新时收到信号。检查更改的一种有效方法是通过类型检查器反复检查,直到确认它与其余代码一致。Verlaguet说,只要类型检查器足够快,程序员基本上不需要等待,类似于在Git版本管理系统上切换到一个新的分支。Hack还有一些其他的特性,增强的集合类型如vector和set增强了PHP的数组,函数式编程中使用了匿名函数。新语言让Facebook可以逐步完善现有的PHP代码,从而使长期投资PHP的价值继续发挥作用。EdSmith表示,Facebook的HHVM运行时引擎将同时提供给Hack和PHP。“Hack允许我们同时在同一个文件上动态地转换我们的代码”,Smith说,“切换到另一种语言将非常困难”你是这样认为的吗?Verlaguet说,其他公司和项目转向流行的Hack还为时过早,该项目只是开源的。不过从他的采访记录来看,目前整个项目都处于积极的态势。英文原文:fastcolabs翻译链接:https://img.ydisp.cn/news/20220914/kwzexkvx4kn
