(从左到右):Julia Computing公司的几位联合创始人Stefan Karpinski、Viral Shah、Jeff Bezanson、Alan Edelman、Deepak Vinchhi和Keno Fischer。
编程语言可谓种类繁多;数学家、研究人员和数据科学家面临的一大问题常常是,找到实际上适合手头处理的任何任务的某一种语言。
为了避免困难,总部位于孟加拉国和美国的初创公司Julia Computing的几位联合创始人开发出了一种通用编程语言:Julia,不是程序员的人经过培训就能使用这种语言。
Julia Computing的联合创始人Stefan Karpinski说:“相比其他语言,Julia运行起来快得多,用起来容易得多,还可以无限扩展。”
2009年,Karpinski与Viral Shah、Alan Edelman和Jeff Bezanson三人共同创办了Julia这个开源项目。由于市场反响极好,几位开发者联同Deepak Vinchhi和Keno Fischer在2015年创办了Julia Computing公司。Julia Computing为客户提供收费的支持、培训和咨询服务,不过Julia本身仍可以免费使用。
Karpinski说:“Julia可以帮助数据科学家、物理学家、定量金融交易员和机器人设计师解决问题,不必非得成为计算机程序员,也不必雇用计算机程序员其功能转换成计算机代码。”
集两者之所长
数值计算方面的编程语言通常分为两大类:一是静态语言,比如C、C++和Fortran,其优点是执行速度快,但缺点是开发速度慢。二是动态语言,比如Python、R和Matlab,其优点是开发速度快,但执行速度常常很慢。
Karpinski声称,Julia集两者之所长,解决了“两种语言的问题”。
Karpinski说:“我们渴望一种语言的速度与C++一样快,但又有Python、R或Matlab的高级功能。于是,我们开发出了这样一种语言:Julia,它让我们可以用同一种语言来进行原型设计和实际开发。”
如此一来,Julia的采用率迅速提高也就不足为奇了。Karpinski说:“用户采用的热情之高涨超出了我们的预期。”这家初创公司的客户名单中有全球知名的一些大公司,从投资管理公司黑岩集团(BlackRock,将Julia用于时间序列分析),到英国保险公司英杰华(Aviva,将Julia用于风险计算),不一而足。
Julia Computing的首席执行官Shah说:“亚马逊、苹果、迪士尼、Facebook、福特、谷歌、Grindr、IBM、微软、美国航空航天局(NASA)、Oracle和优步都是Julia的用户、合作伙伴以及招聘Julia程序员的组织。”今年6月,这家成立才两年的初创公司从总部位于美国的两家投资公司:General Catalyst和Founder Collective筹集到了460万美元的种子资金。Shah补充道:“今天,Julia的下载量已超过100万人次,年增长率高达161%。”
它是如何起家的?
这一切要从2009年说起,当时Karpinski与加州大学圣巴巴拉分校的研究生Shah、麻省理工学院(MIT)的Bezanson和Edelman希望简化编写代码的过程,他们都有语言设计和应用数学方面的经验。由于Shah搬到班加罗尔从事印度的Aadhaar项目(这是该国一套新的生物特征识别系统),他们基本上通过电子邮件开发出了这种“理想语言”。
Julia的第一个公众版于2012年发布,它是在100多名开源代码贡献者的帮助下开发而成的。Shah说:“启动这个开源项目是为了使编程大众化,不过为了满足市场对商用产品的需求,我们随后创办了Julia Computing。”
Shah表示,现在面临的最大挑战是满足市场对新的产品功能和软件包的需求。“开发一款产品需要几个月到一年不等,每款产品在不断改进,以便充分利用Julia开源语言的最新成果和改进之处,并提供客户和用户所要求的额外功能。”
对印度来说具有重大意义
2017年6月印度孟买,在基于云的团队协作服务Flock工作的员工。
摄影师:Dhiraj Singh /彭博社
Shah表示,由于Julia核心语言是免费开源的,所以它对印度来说具有重大意义。“Julia对印度初创公司以及关注成本,又有大批工程师的大企业来说很管用。”
Karpinski补充道:“Julia是人工智能、机器学习、深度学习和并行计算这些应用的最佳选择――所有这些领域在印度的发展势头非常迅猛。”
Julia还用于美国航空航天局和劳伦斯伯克利国家实验室的研究,而麻省理工学院专门设有一个致力于研究和发展这种语言的Julia实验室。Shah说:“麻省理工学院林肯实验室的工程师们在研究联邦航空管理局新的下一代飞机防撞系统,他们使用Julia来计算经过优化的逻辑表中的65亿个决策点,以便找出故障。”
Julia还被用于Celeste项目,这是为天空调查而设计的一种统计分析模型。Shah补充道:“研究团队在短短14.6分钟内,借助NERSC Cori-II超级计算机,用Julia对1.88亿颗恒星和星系进行了分类,这台超级计算机是全球功能最强大的十台计算机之一。”
即使Java和C++的主导地位不大可能被动摇,Julia依然在如今的众多编程语言中找到了一席之地。
相关阅读: