《麻省理工科技评论》近日发表刊文称,编程语言塑造了用户的思维方式。这也可以反映科技行业创业公司的策略,以及他们为何有能力实现自我变革。
  以下为文章全文:
  作为Twitter、Hulu和许多当代互联网服务的开发语言,Ruby备受关注。而当日本计算机科学家松本行宏决定设计这一语言时,他借鉴了萨莫埃尔·德拉尼(Samuel R. Delany)1966年科幻小说《Babel-17》中的概念。这部小说的核心是一种名为“Babel-17”的人造语言,能明显提高使用者的思维水平。“Babel-17是一种准确的分析语言,能让你精通任何技术。”小说主角曾经这样说。通过Ruby,松本行宏希望实现类似的目标:变革及优化程序员的思维方式。
  这一目标听起来非常宏大,但松本行宏的观点已经成为主流。软件开发者通常都会相信,编程语言足以扭转他们的思维方式,从而改变解决问题的方法,甚至改变他们对于应该去解决哪些问题的认识。这也是他们估计某家公司、某一产品和竞争对手规模的方式:“你们使用什么语言?”
  对编程语言的审视将有助于外部人士了解,这些软件公司为何能如此强大,有着如此高的价值,以及它们的产品和服务如何融入我们的生活。这些企业的内部决策,即使用什么样的语言,无论是Ruby、PHP还是C,将对我们所有人产生影响。如果你希望知道,为何Facebook看起来及用上去是当前的模样,以及未来会有什么样的发展,你需要去了解马克·扎克伯格(Mark Zuckerberg)使用的编程语言PHP。
  在程序员之中,PHP或许是不受尊重的编程语言。由于存在许多缺陷,知名技术博客Eevee认为,PHP是“糟糕设计的一块碎片”,而愿意使用PHP的开发者很业余。编程问答网站Stack Overflow联合创始人杰夫·艾特伍德(Jeff Atwood)则表示:“聪明的工程人才纷纷前往Facebook,这非常奇怪。他们在Windows XP环境中开发PHP代码。他们是黑客,但这里的‘黑客’是一种贬义。”艾特伍德将PHP称作“笨拙的巨兽”、“流行病”,以及吸引神秘事件爱好者的“鬼屋”。
  成功的编程语言有着整体化的哲学,或是一整套逻辑自洽的指导原则,以组织词汇和语法(即提供给程序员的指令)。但PHP并非如此。这一语言的设计者拉斯姆斯·莱尔多夫(Rasmus Lerdorf)曾经承认,他只是将许多东西混合在一起。“我不知道怎么阻止这一切。”他在2003年接受采访时表示,“我完全不知道如何编写一款编程语言,我只是在这一过程中不断加入新的逻辑步骤。”
  程序员喜欢讲的一个例子是PHP函数“mysql_escape_string”。在将信息发往数据库之前,这一函数能从中去除恶意输入请求。(恶意输入的例子包括网站上表格请求用户的电子邮件地址,以及黑客植入一段代码窃取网站用户的密码。)在发现该函数的一个漏洞之后,一个名为“mysql_real_escape_string”的新版本被创建出来,但老版本并未被替换。因此目前的情况像是在飞机驾驶舱中并排放两个功能类似的按钮:其中一个按钮用于放下起落架,而另一个则用于安全地放下起落架。这不仅违背常理,甚至会引起灾难。
  尽管许多人都不喜欢PHP,但PHP仍是很大一部分网站的基础。一项研究显示,在当前互联网的所有域中,基于PHP技术的部分多达39%。Facebook、维基百科,以及的发行平台WordPress均利用了PHP来开发。这是由于,尽管存在许多缺陷,但PHP对入门者来说几乎完美。PHP的名称初是“个人主页”的英文缩写。通过这一语言,程序员可以方便地在静态HTML页面上添加日期和用户姓名等动态内容。PHP的兴起推动了从网站开发向网页应用开发的飞跃,而开发者甚至不必是专业人士。
  维基媒体基金会负责维基百科项目的首席软件工程师奥利·利夫尼(Ori Livneh)表示,PHP易于上手的特点正是维基百科成功的关键。不过他指出:“我一直讨厌PHP。”由于对PHP的依赖,维基百科在用户规模扩大之后出现了设计漏洞。(正是由于这一原因,在2008年之前,维基百科一直没有支持移动设备。而直到2013年,该网站才提供了对用户友好的编辑界面。)不过,基于PHP,一些不熟悉软件编程的人士也可以开发新功能。例如,利用PHP语言,维基百科在“埃及古物学”条目上展示了象形文字,并可以在页面上实现音乐播放。
  谷歌(微博)无法使用PHP语言,因为当前的谷歌需要非常出色地完成一项工作,即迅速而准确地进行搜索。因此,谷歌搜索引擎采用了更强大的语言,例如Java和C++。与谷歌相比,Facebook是一个小规模实验的集散地,一个按钮、消息流和小发明的大杂烩。在这种情况下,PHP可以更快地实现功能。
  你甚至可以想象,哈佛大学宿舍里的扎克伯格如何在决定性时刻选择Facebook的开发方式。他需要以小的成本使网站上线。网络发展速度很快,用户的喜好变幻无常,把握机会的方式是成为市场的先行者。究竟是做成一盘大杂烩,还是一份精致的意大利面,这无关紧要。他首先需要完成这一网站,让用户可以使用。他考虑的并不是代码是否优美,而是如何让好友们登上这一名为TheFacebook的网站,评价他们熟悉的女生。
  ,Facebook的市值超过2000亿美元,而该公司办公室的墙上有这样的标语:“完成工作比完美更重要”,以及“快速行动,打破僵局”。这些大胆的口号是为了确保员工符合该公司的“黑客”文化。而这也准确体现了PHP的价值。快速行动,打破僵局,这正是PHP的本质,代表了PHP程序员思考问题的方式。你甚至可以这样说:PHP本身创造并维持了Facebook的文化。
  秘密武器:更强大的语言
  如果你希望找到与PHP截然相反的另一种理念,看看另一个极端是什么样,那么金融交易公司Jane Street Capital位于纽约下曼哈顿的总部值得一看。这家有着400名员工的公司目前处理着美国每日证券交易量的约2%。
  当我见到Jane Street Capital技术主管雅隆·明斯基(Yaron Minsky)时,他正坐在办公桌旁,旁边放着一台恩尼格玛密码机,这是为数不多仍然现存的二战时代装备之一。我原本以为,这是他房间中酷的秘密武器,但随后我发现自己犯了错误。明斯基谈到了一款名为OCaml的编程语言。作为计算机科学博士,明斯基于10年前说服自己的老板,使用OCaml重新编写公司的整个交易系统。
  在此之前,几乎没有人在实际应用中使用过OCaml。这一语言的设计者是法国一家研究机构,而初目的是为了优化能自动证明数学定理的计算机系统。明斯基在自己的研究生阶段接触到了这一语言。他认为,这一语言可以取代Jane Street Capital交易系统中使用的Excel电子表格。
  OCaml的大特点在于“输入检查系统”。这类似于微软Word的语法检查功能,能在系统认为错误的代码下方使用绿色波浪线做出标记,随后禁止这样的代码运行。利用这一系统开发出的程序有着极强的可靠性,而当所开发的软件每天需要处理300亿美元的交易时,这一点很重要。
  明斯基表示,通过捕捉漏洞,OCaml的输入检查系统使Jane Street Capital的程序员可以专注于更高大上的问题。而如果该公司能将OCaml的检查功能进一步内化,那么将培养出一种习惯,使程序员不可能再去思考错误的想法。
  此外,为了让输入检查工具发挥功能,程序员需要在代码中添加复杂的注释。这好比说,Word的语法检查工具要求你对所有句子进行标注。在输入受限制的情况下编写代码有些麻烦,甚至会令人丧气。而更糟糕的是,与其他编程语言相比,OCaml会涉及非常抽象的数学,从而给大部分程序员带来困难。
  不过,这一语言的精确性对某些人来说极具吸引力,同时也给Jane Street Capital带来了不同寻常的招聘优势。尽管一些软件开发者不理会PHP的缺陷而加入Facebook和维基百科,但明斯基表示,OCaml语言以及他的著作《现实世界的OCaml》有助于吸引的编程人才。吸引力并不仅仅在于语言,也在于使用这一语言的人群。在Jane Street Capital,员工在休息时间会去下象棋。这种智力竞争的文化似乎与对OCaml语言的使用密切相关。
  谷歌似乎也试图凭借自主设计的高性能语言Go来实现同样的目的。为了让网络服务变得更优雅、更高效,针对大型网络服务背后的服务器开发更先进的软件颇有益处。此外,对于喜欢新鲜事物、喜欢挑战困难的程序员来说,这也是一种吸引力。