设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Julia语言:让高性能科学计算人人可用

2014-3-27 13:53| 发布者: joejoe0332| 查看: 4533| 评论: 0|原作者: 卢鸫翔,王江平|来自: 《程序员》

摘要: Julia是个灵活动态的语言,最初针对数值计算而发明,项目起初是MIT 的研究课题,现已发展成富有活力的软件系统,也是目前最受关注的编程语言之一。日前,Julia的四位发明者Jeff Bezanson、Stefan Karpinski、Viral B ...
  一群科学家对现有计算工具感到不满:他们想要一套开源系统,有C的快速,Ruby的动态,Python的通用,R般在统计分析上得心应手,Perl的处理字符串处理,Matlab的线性代数运算能力……易学又不让真正的黑客感到无聊。


  Julia是个灵活动态的语言,最初针对数值计算而发明,项目起初是MIT 的研究课题,现已发展成富有活力的软件系统,也是目前最受关注的编程语言之一。日前,Julia的四位发明者Jeff Bezanson、Stefan Karpinski、Viral B. Shah、Alan Edelman接受了《程序员》杂志的专访。


  让高性能科学计算为人人所用


《程序员》:你们因何设计Julia?想要解决的问题或达成的目标是什么?

Alan:对我来说,首要的问题是让高性能科学计算能为世界上的每一个人所用。我时时想着这一目标尚未完全实现,但Julia的出现使问题的解决成为可能。

  我 对并行计算的兴趣始于1988–1989年间在Thinking Machines工作时,Thinking Machines的产品是新潮的Connection Machine。2003年12月,Viral跟Parry Husbands等人一起凭借我们的Star-P并行MATLAB软件在MIT创业大赛中获胜。受此鼓舞,我创立了Interactive Supercomputing公司,从2004到2009年,公司做得风生水起。

  在ISC,Parry、Viral和我认识到,通过一种慢速的动态专有语言来实现快速的并行化是荒唐的。Jeff也是ISC的员工,在这个问题上也有自己的独到见解。我真心希望看到这个问题的解决方案。

  我永远不会忘记,那是2009年3月,我们要在办公楼的停车场上拍最后的团队合影,拍照花了很长时间,晚些时候Jeff和我就在停车场里走了走,在那里我们商定了Jeff来MIT做这个方案。


  Jeff:科学计算语言中你所看到的特性通常都很复杂。多数系统中这些特性都是“内置魔术”——通过编译器和解释器内部的客户逻辑来实现,难于修改或扩展。我想看到一种更加全面的、可扩展的方法来实现这类功能。


  Viral: 我一直对科学计算感兴趣,这也是我的博士研究方向。我和Alan Edelman,以及我的导师John Gilbert一道,致力于构造一套并行的MATLAB。当时我同一些数学家、物理学家、化学家和生态学家一起负责几个科学应用,将他们的程序并行化以提 高性能。在此过程中,有一件事变得清晰起来,那就是问题不在于并行化,而在于现有的语言根本没有足够的表达力。这些语言的设计使之难于实现高性能。很多这 样的语言都由一些非计算机科学家设计,他们脑子里想的多是生产率而不是编译器设计。Julia团队的独特之处在于,我们四个人组合了多种学科——语言设 计、数学和工程。结果我们便拥有了一种不仅为科学家和工程师喜欢,也为计算机科学家喜欢的语言;在我看来这是罕有的事情,对此我们都倍感幸运。


  Stefan: 读研时我真正想做的是程序语言设计,结果却进了网络研究实验室。到离开UCSB之前,我在用线性代数、机器学习和数据统计做网络流量的分析与建模。这需要 一种弗兰肯斯坦式的编程语言组合:用于网络跟踪处理的C,准备数据的SQL,线程代数和机器学习的MATLAB,统计分析和视觉化的R,然后Ruby管理 这一切。我的时间更多花在了查找问题,而不是做有用的工作上。

  Viral和我在同一部门,常年一起玩“终级飞盘”。有一天我扔着盘片发泄着 心中不快:这类工作的工具真是一团糟糕。Viral对我说:“我认识一个人,你可以跟他聊聊。”第二天他就通过Email把我介绍给了Jeff。我们便开 始讨论用于数据分析的理想编程系统应该是怎样的。后来我们决定着手做点什么——以三个月为限,届时我们将决定是否继续。我完成了第一次git提交,搭好了 服务器,并为Jeff和Viral开放了权限。Jeff提交了一个语法分析器,以及随后一个简单的解释器,Viral开始用新的语言写些代码。起初错误不 断,速度也奇慢——但我们已可以用它做些事情,玩一玩语言的语法和语义。三个月来了又去了,我们完全没有停下的想法。

  就在那无人察觉的三个月期限前后,Alan开始为MIT的Jeff提供资金支持。那时我们已把项目命名为Julia了。如今我们在MIT有一个完整的研究小组专注于基于Julia的高效率、高性能并行计算。


  《程序员》:Julia这个名字有典故吗?

  Alan:许多人问过这个问题。事实证明这个名字很棒,部分是因为每个人都有自己的解读理论。

  Jeff: 给语言起名字着实不易。很高兴我们能有一个好听又好记的名字。

  Stefan:坊间传言那是我的中名。对这一说法,我不能确认也不能否认。


  《程序员》:能否介绍一下你们的背景?之前有语言设计方面的经验吗?

  Jeff: 语言本来是我主要的业余爱好。业余时间我便做一些语言设计和解释器方面的工作。我从互联网上了解到了Interactive Supercomputing公司,我意识到如果能去那儿工作,就可能获得少有的专业的程序语言方面的工作机会,于是便投了简历。我在那里大多数时间都在 做一种针对.NET平台的编译器。

  Viral:我从读博时就认识Alan,那时我们在加州大学Santa Barbara分校,与MIT的团队合作研发Star-P。毕业后我到Interactive Supercomputing公司工作,在那里认识了Jeff。不久后微软买走了这家初创公司,我们便琢磨接下来该做什么。

  Stefan: 我依然清晰地记得假期里造访瑞典亲人的家,在海滩上阅读《Programming Language Pragmatics》(中译本《程序设计语言——实践之路》),并因此被表弟温言揶揄的情形。不过我后来没有去做编译器,而是无意中走入了之后称为“数 据科学”的领域。那时我正好有一堆数据,想搞清楚数据背后的含义。然而,作为一名数据科学家,我始终关注着语言设计方面。对我来说,编程语言绝不只是可以 替换的工具。我相信更好的语言能让我们成为更好的程序员,使我们能解决更困难的问题。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部