热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Facebook宣布开源Hack:支撑全球12亿人访问的编程语言

Hack语言是由Facebook的爱尔兰工程师BryanOSullivan,JulienVerlaguet和AlokMenghrajani在过去几年中设计出来的编程语言,和其他语言不同,Hack能在系统崩溃前发现问题。通过与其他社交网络内部

  Hack语言是由Facebook的爱尔兰工程师Bryan O’Sullivan,Julien Verlaguet和Alok Menghrajani在过去几年中设计出来的编程语言,和其他语言不同,Hack能在系统崩溃前发现问题。

  通过与其他社交网络内部工程师合作,Hack被进一步完善,让编程者能在构建复杂代码的同时,保持较快的编程速度和代码的准确性,单从这些特点上看,很少有目前通用的编程语言能达到。据介绍Hack已经在Facebook内部使用了一年,如今它的网站的大部分都是用Hack构建的,该语言已经成功支撑起这个服务于全球12亿人的社交网络。

  参与Hack设计的工程师O’Sullivan表示,Hack已经通过了充分实践的考验。O’Sullivan是科技公司Sun Microsystems和Linden实验室的老牌工程师,曾在Haskell语言研发中发挥关键作用。

  O’Sullivan今天早晨向全球公开了Hack语言,宣称其为“开源”编程语言,在分享这一语言的同时,希望世界各地的编程者能进一步完善Hack。

  软件编码从来不缺编程语言,新的语言屡见不鲜。但如果尝试体验一下Hack,或是知道Hack设计者的背景,就会知道它绝非等闲之辈。计算机编程专家David Pollak昨天才第一次听说Hack这种语言的存在,他表示“如果是O’Sullivan的作品,无论如何我都想尝试一下。”

  扎克2003年下半年推出Facebook,选择当时很流行的PHP编程语言建立网站。PHP是一种“动态语言”,不需要程序员花时间定义程序中每个变量的特定参数,完成一段代码后就能马上运行,而省下了编译的过程,编译过程在程序编写的同时在后台运行。

  但随着Facebook的用户扩大到上千万,PHP开始显示出局限性。PHP网站扩大时,需要处理器运行网站的数量要比其他语言多,并且容易出现故障。网站规模足够大时,最好采用静态语言来构架,比如Java,更容易管理各种变量,需要的服务器数量少,更容易管理。但这种语言又有另一种局限:构架的速度很慢,需要完成代码和编译过程后才能运行。

  去年Facebook的三名顶级工程师为PHP的局限性提出了解决方案:在PHP代码虚拟机HHVM(Hip Hop Virtual Machine)上运行程序,HHVM构成了Facebook的新基础,大大减少了网站运行需要的服务器数量。而对于Java等静态代码的局限性,则被这种新的编程语言解决了,Hack让能简化代码编辑过程的同时减少出错量。

  O’Sullivan介绍说,“开发Hack语言的动机,是提高我们程序开发人员的工作效率。随着工程师团队的扩大,由于PHP动态语言的特性,让他们的工作复杂程度大大提高,工作中对代码的预测能力下降,更容易出错。”

  Hack是新型PHP? 你可以这么想。Hack也可以在HHVM虚拟机上运行,但编程者可以同时通过动态或静态的方式编写。这种运作方式被称为“gradual typing”。这种编写方式此前还只在实验室研究中提出过,Hack首次在现实中实现了其“实际的产业价值”。

  有了Hack,Facebook可以逐步用它来替换已有的PHP程序,把原本的动态编辑系统转变成静态编辑系统。O’Sullivan解释说,“这种语言让编写者能自由选择动态或静态的程度,比如可以用动态语言开始,然后逐步往其中添加静态语句,从而将这两种不同特点的语言优势发挥到最大。”

  Hack的其他优点还包括:提供了更加精确的编辑语言以减少出错率,为编程者提供了“安全网”(safety net),工程师在重新访问代码时更容易读懂等等。

  Hack在提供这些优势的同时,没有影响编程者的速度。和其他静态语言不同,Hack可以在不编译的情况下直接运行。在完成代码书写后,可以直接在网页上运行并得到运行结果,如下图所述,没有普通静态语言编辑和运行上的延迟,同时保证了安全性(及时纠错)和速度。

  用户反馈:Nils Adermann是Forumatic公司软件工程师兼联合创始人,他也用Hack语言。Adermann表示,这种语言超越了其他任何语言。PocketRent的工程师James Miller和Simon Welsh也适用Hack,并认可了上述评价。他们认为此前最接近Hack的语言是Haskell,Haskell是一种静态编译语言,代码反馈的速度也很快,能动态查看编辑效果,但Hack显然在这一点上做的更好。

  Adermann表示,Hack对于已经采用PHP编辑的网站来说具有很大的吸引力,“有些讽刺,PHP采用Hack的最主要原因,是因为它和PHP的不同之处。”这些网络也可以模仿Facebook,从PHP逐步转化到Hack。但Adermann相信,即便是还没有采用PHP的工程师也会意识到Hack的实用性,因为PHP是目前网络构架最常用的语言,而Hack解决了它连贯性差的一大缺陷,让原有的语言的可用性大大扩展了。”

  但对于Hack最大的肯定,莫过于在Facebook这一全球最大社交网络上的成功应用。一个新语言能通过如此瞩目的方式被业界所认识实属难得。但有些人对Hack的身份提出了质疑:算不上是PHP的替代,更像是PHP的补丁。那么Facebook对于这种声音的态度如何呢?O’Sullivan笑称,这是茶余饭后争论的好话题。


推荐阅读
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 深入理解Java泛型:JDK 5的新特性
    本文详细介绍了Java泛型的概念及其在JDK 5中的应用,通过具体代码示例解释了泛型的引入、作用和优势。同时,探讨了泛型类、泛型方法和泛型接口的实现,并深入讲解了通配符的使用。 ... [详细]
  • PHP插件机制的实现方案解析
    本文深入探讨了PHP中插件机制的设计与实现,旨在分享一种可行的实现方式,并邀请读者共同讨论和优化。该方案不仅涵盖了插件机制的基本概念,还详细描述了如何在实际项目中应用。 ... [详细]
author-avatar
merlion-p
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有