【51CTO独家译文】华尔街一家公司发现计算领域的成功并不一定必须依靠传统企业Java来实现,他们利用Caml这款名不见经传的编程语言在代码简洁性与可读性之间找到了完美的平衡点。
贸易企业Jane Street表示,Caml为其带来一系列强大的工具,足以创建出速度出色且不存在运行错误的大型程序。
“在常规工作当中,很大一部分属于案例分析任务。让自己的程序正确运作实在不是件容易的事情,而且能从系统中获得的任何一款足以解决错误的工具都弥足珍贵,”Jane Street公司技术部门负责人Yaron Minsky在本周五于纽约举办的QCon开发者大会上指出。
是一家专门处理贸易相关事务的企业,也是目前世界上规模最大的Caml与OCaml(Caml的面向对象版本)用户。
Jane Street公司的全部交易与辅助类系统都在使用Caml,当然底层系统接口仍在使用部分C代码、分析电子表格则由Visual Basic脚本支持。总而言之,Caml代码在每个工作日会为Jane Street处理总值约200亿美元的交易活动。
该公司目前拥有约六十位程序员,他们要么在求学阶段已经对Caml有所了解、要么依靠出色的学习能力在培训中快速掌握了这门编程语言。除了这些专业技术人员,公司里还有约九十名非程序员会在日常工作中跟Caml打交道。
Jane Street使用Caml几乎可以说是一种偶然,Minsky指出。Caml是一种机器学习函数编程语言,这类语言被广泛应用在各大高校的编程专业教学当中,但在学术界以外始终未能获得普遍认可及实际成功。
Minsky十年前尚未从学校毕业时就已经开始了自己在Jane Street的工作。由于对Caml语言非常熟悉,他为公司创建出一大批实验方案,其中很多后来还被整合进生产环境。如此优异的表现让他在拿到分布式系统博士学位的同时也顺利获得Jane Street公司的聘书。
当时,Jane Street公司“对贸易层面的重视程度远高于技术层面,”Minsky回忆道。电子表格中充斥着大量VB代码,但这种处理方式显然无法跟上该公司的规模拓展节奏。更重要的是,当时还没有一套专门的系统能够承担变更管理工作,因此所有用户计算机上的代码也就无法得到更新。
随着Jane Street公司的贸易业务逐步迈入计算机时代,Minsky部署的Caml方案开始成为公司的核心系统。
Jane Street同样也关注过大多数贸易企业所使用的Java语言,但企业级Java程序在构建过程中需要涉及大量动态面向对象方法,这让该公司感到其内容难以理解并据此作出思考,Minsky表示。
Minsky指出,该公司的某位分析师非常喜欢查看运行在该系统中的代码——尽管他根本不是程序员。他只需坐下来认真阅读这些代码内容,就能了解到其执行目的与背后的含义。Caml代码的确非常易于理解,只要在相关语法方面做做功课、任何人都能掌握其中的内容。
Caml还具备一系列天然优势。它是一款函数编程语言,因此能够很好地支持程序中的函数计算。
“大家可以创建一个函数,将其传递给另一个函数,然后再让该函数返回一组函数,”Minsky表示。在Caml语言中,函数属于“类值,能够像其它项目一样进行任意传递。”相比之下,大部分其它编程语言都不允许开发者将函数像值那样或者以手动方式对其加以传递。
此外,数据值在函数编程语言当中是不可变的。这意味着程序的运作并非源自“数据结构中的单元变化实现,而是依靠表达式求值来完成,”Minsky解释道。
Caml是一套静态类型系统,这意味着其中具备一系列规则、用于指导系统处理每一种数据类型。一般来说,在静态类型语言中进行漏洞定位在难度上要远低于JavaScript或者Python等动态类型系统。这种特性大大加快了计算任务的速度,因为程序清楚接下来需要处理哪种类型的数据。
“关于这种编程风格,我已经积累下丰富而且深刻的开发经验。在这里,大家可以利用类型系统帮助自己掌握变化所带来的影响,”Minksy指出。“诚然,每一种语言都可能编写出糟糕的代码,但只要大家知道自己在做什么,就完全能够利用这种类型系统作为设计方案中的一部分、进而极大改善程序开发成果的正确性。”
虽然很少有人会把Caml开发经验写进自己的应聘简历,但寻找在这方面颇具心得的程序员其实并不困难,Minsky表示。那些了解Caml或者说对函数编程较为熟悉的开发人员对于这种编程模式往往充满热情。
Minsky在第一次帮助公司招聘程序员时,就是直接通过Caml邮件列表发出通知并最终从回复者中选定了三名新员工。
当然,该公司也招聘过不少对Caml一窍不通的程序员。理由很简单,只要这些应聘者有能力通过培训掌握这门语言,是否已有经验并不是大问题——事实了证明这样的判断完全正确。
随着时间的推移,该公司已经利用Caml构建起众多开发成果。除了其核心贸易系统之外,还包括一套并发库、一套复杂的订阅及发布系统以及一系列系统自动化工具。
总体而言,Jane Street公司拥有“大量依靠小型团队就能维护的系统方案,”Minsky解释道。
使用这种知名度不高的语言当然也存在一些弊端,Minsky强调称。其中最严重的一点在于缺乏适当的现成工具。最让Minsky苦恼的就是没有先进编辑工具——例如autocomplete——以及广受用户欢迎的主流IDE(即集成开发环境)可供选择。
为了解决这些问题,该公司已经开发出诸多自有工具并选择了开源机制。Jane Street公司还积极为一家名为OCamlPro的公司以及剑桥大学Caml实验室提供资助,鼓励他们打造商用Caml支持方案。
“我们尽自己所能,努力推动该语言的健康发展。我们自己编写出的300万行代码已经成为公司运营的重要基础,而以Caml语言为核心建立起来的技术社区也成为我们的重要技术依托,”Minsky指出。“如果大家依靠小众技术起家并获得了成功,就必须准备好为其后续发展买单。”