Julia到底哪好在哪,让数学学霸接触2年就定了终生?还传授读者学数学的秘诀

2018 年 10 月 17 日 人工智能头条


大家好,我是为人造的智能操碎了心的智能禅师。

今天内容很有料,禅师这里就不多说了。只提醒一句,有彩蛋。

全文大约4000字。读完可能需要好几首下面这首歌的时间

👇

天下武功,唯快;新秀出世,求快

2009年的一个下午,中国还没有完全从北京奥运会的亢奋中恢复平静。

在世界的某个角落里,有四个年轻人。他们正在合租房中,默默无语的埋头摆弄着手里的Matlab。屋里的气氛有些安静,有些单调,有些无聊。

终于,其中一个人按捺不住,一拍桌子站了起来!其余三人停止了手上的动作,抬头看着他。

”沙雕Matlab!”站起来的那个人,从嘴里挤出这几个字。其余三个人互相对视一眼,点了点头,表示赞同。

站起来的那个人,环视一圈,突然眼中精光四射,青筋暴起。他的头发仿也佛被无形的气流扰动,开始飘舞起来。


午后的阳光透过打开的窗户,射到他的脸上,使得他的脸上泛起了一层金色的光芒。他转头向窗外的远山望去,其余人跟着他的目光也都望向窗外…


谁也没有想到,3年后,一个武林新秀甫一出世便锋芒显露。

谁也更没想到,9年后,这位武林新秀会成长为江湖中的第一快剑。

至此,禅师实在编不下去了…

上文中提到的4个年轻人,分别是Jeff Bezanson, Stefan Karpinski, Viral B. Shah, 和Alan Edelman。

这群计算机和数学天才们,将Matlab的不满,转化成开发一门新语言的动力,创造了Julia这门编程语言。

Julia是什么?能做什么?

Julia对比R和Python有什么区别呢?

最新TIOBE排行榜中,Python排名第4;R第15;Julia第43。对应的,Python是1989年出世的语言,R是1995年,R是2012年。

在一些特定的场合下,Julia的速度是超越R和Python的。这三种语言各有所长,每个都有不少死忠用户。

大家对Python和R已经很了解了。Julia虽然现在也获得了不少关注,但真正了解这门语言、研究比较透彻的人,还是比较少。

其实很好理解。大家都觉得程序员是一个高薪、刚需的岗位,于是很多人投身于码农大军中。

然而企业并不在乎你对某种语言的热爱程度。企业最关心一门语言是否值得信赖、是否有充足的维护资源、是否被验证过拥有很好的撸棒性。

👆这位小哥给出了好的撸棒性的示范💪

对新手来说,选择一门拥有成熟生态系统的语言,也更划算。基本上在学习过程中遇到的问题,无论角度有多刁钻,总能找到前人留下的解决方案。

但总有一些人,不在乎为了所谓的高薪去迎合主流。他们有着超越常人的心智、能力和毅力,更有比常人强数倍的独立精神。

他们只为自己的兴趣工作,而不是为了工资。Chris Rackauckas,就是这样一个人。他同时也是Julia内部成员之一,为Jualia编写了第三方库DifferentialEquations.jl

项目地址 👇

http://julidiffeq.org/

他在接触到Julia之前,就已经精通包括Python、R在内的多种编程语言。但是当他开始接触到Julia的时候,他义无反顾、全身心的投入到Julia的怀抱。

所以,“到底是道德的沦丧还是人性的扭曲”?就让禅师来揭开这层神秘的面纱。

谁是Chris Rackauckas?

禅师:先让我们的读者认识一下你吧,请来一段自我介绍吧。

Chris(以下简称C):亲爱的中国朋友们大家好,我叫Chris Rackauckas,来自南加州的Mission Viejo,一个与Irvine相连的城市,这也被称为橙县。虽然是洛杉矶和圣地亚哥之间的一个小点,有点偏,但我敢说这儿的海滩全世界最美!😏


我是马里兰大学巴尔的摩分校的高级研究员,加州大学欧文分校的博士后学者,以及麻省理工学院的应用数学讲师。 

我刚获得数学博士学位,研究了如何使用随机微分方程在发展中的斑马鱼后脑中控制生化相互作用的随机性(随机性)。在这项工作中,我为Julia编程语言构建了微分方程求解器库DifferentialEqu

结缘Julia

禅师:你是怎么和Julia结缘的?

C:大概是在两年半前吧。开始我写了一些关于在Julia做有限元法的文章,后来很快开发了DifferentialEquations.jl

Juliacon 2017上遇到了Julia的创始人。然后又遇到了来自马里兰大学的Vijay Ivaturi,当时Vijay正在寻找在用Julia建一个药物计量学 模拟器。

他联系到了Julia Computing的作者,提到他需要微分方程,因此他们就我来接手,Julia Computing为JuliaDiffEq起到了很大的帮助。

我现在是Julialang Google Code夏令营的管理员,都吸引了大量学生,Julia Computing资助了机器学习培训材料(我是该团队的一员)。

在过去我深入研究了许多语言:MATLAB,Mathematica,R,Python,Javascript,C,Fortran…,还为每个语言都做了Package。但现基本是纯“Julia控”了,自己都觉得不可思议。

Julia优缺点


禅师:我也觉得很不可思议。Julia最吸引你的地方是什么呢?人工智能头条翻译过一篇文章《Julia vs R vs Python》(没看过的读者可以点击文末阅读原文链接),讲Julia在第一次运行慢但是后续就更快。所以关于Julia的优缺点,展开讲讲吧。

C: 用Julia写数学算法、自动优化方面,超级容易!注意,我说的是自动优化,而不是普通意义上的优化。

你给算法X做一个通用代码片段,针对GPU,TPU,任意精度数字,双数字(输出值及其衍生物) ,具有不确定性的数字(误差条)等,它可以自己进行自我优化!

一个代码就能完成所有这些,并且完成的非常高效。而Cython和Numba也就能完成64位浮点数,却无法做到上述的自我优化。

缺点嘛,因为需要生成上述的通用代码生成,Julia启动时候会慢一点。如果你只是编写一个64位浮点数的简单脚本,那么 C/Fortran/Cython/Numba可能更好用。否则,Julia还是更快、更好用。

关于 DifferentialEqu

禅师:说说你自己的项目吧。

C:因为我为一篇论文创建了新的随机微分方程求解器,这是以前算法的大规模性能升级。我觉得这需要一个优化的参考实现,以便人们可以在实践中实际使用它,因为算法本身非常复杂。

做完之后我花了很多时间来优化。我为一些ODE求解器做了同样的事情,仅仅是出于自用的目的。但做完后我发现速度快的跟狗一样,所以我觉得这玩意儿肯定有用就一直在做了。 

不就我就注意到,这回是一个非常有用的微分方程生态系统。所以我就一边做,一边分享,并且获得了足够的资金支持我的开发。到博士学位结束时,DifferentialEqu已经成为一个独立的大型项目。

禅师:那Julia更新的时候,你的lib也需要更新吧?Julia终于走到了1.0,对你来说意味着什么?

C:基本上,Julia每次更新,我都停下博士毕业论文,花一个月时间来升级DiffEq和所有相关软件包(优化,插值,线性代数等)。

Julia v1.0,意味着未来几年不需要有大的升级变动了,我觉得,也确实是时候真正冷静下来,并优化现有的内容了。

我觉得,越来越多的人会来尝试Julia v1.0,因为它不再是“业余爱好者的玩具”了,他现在指的信赖了!

禅师:这个lib主要解决了什么问题?

C:如果你有一个常微分方程,随机微分方程,随机微分方程,微分代数方程,延迟微分方程,离散随机(连续马尔可夫)方程,或以上的任意组合,都可以交给DifferentialEquations.jl处理。 

它是第一个以自适应全自动方式完成大量工作的产品,它可以匹配、封装最高效的包,或者做出比以前更高效的全新产品。这些方程式在生物建模,制药建模,物理学(量子力学,广义相对论,电磁学等),控制理论,天气/气候建模等方面都有很重要的应用价值。

这么说吧:微分方程,在整个科学中无处不在。

学习数学的诀窍

禅师:我觉得我这辈子是没机会感受作为一个资深数学研究员是怎样的体验了。所以我很好奇这是一种什么样的体验,是像魔术一样还是像功夫一样?可以跟我们的读者讲讲你学习数学的诀窍吗?

C:解决数学问题的过程吧,看起来仿佛很神奇,但其实是和武侠游戏一样,刚开始跟小伙伴一起打小怪不,直到最后征服了大Boss。但因为大家没看到之前的过程,只看到打Boss了,就会觉得超厉害。

学会数学的诀窍在于:学会蚕食难题。就像水滴穿石一样,你碰到一个难题,肯定一次性解决不了,那么就寻找各种方式和途径,把这个难题的各个枝节一点点的解决掉,最后这个难题就迎刃而解了。


像Euler和Ramanujan这样的着名数学家,老被认为是用魔法解决数学难题。但实际上,这些人整天都在拿着小本本研究数学难题。

包括我之所以能够成为Julia的核心成员,被大家广泛认可,无非也是将别人吃鸡的时间,用研究、重构Julia代码上,用在了解决微分方程、求解器上(当然Chris有可能不知道吃鸡这个哏,禅师这么写就是为了大家更容易理解)。

这个我坚持了近6年,这比大多数人上大学时间都长。

禅师:说白了还是那句话:天道酬勤。

花絮

禅师:说说你用的最顺手的编辑器吧。

C:Atom。漂亮,配色方案也好,键盘命令很直观。它具有很好的交互式窗口,这对于科学建模代码的可视化调试是必需的。

禅师: 最喜欢的语言和最不喜欢的语言是什么?

C:最喜欢的当然是Julia。最不喜欢的嘛,Perl吧。因为只要有人给我的代码里面有$$这样的变量,整个程序就是翔。

禅师:写不出代码的时候通常怎么做?

C:不存在的。这么多代码等着写呢,根本不会出现写不出来的情况,只会出现没时间写的情况。

禅师:给你一把刀,你最想砍谁

C:设计。

禅师:觉得最高效的工作环境是什么样的

C:只要有狗狗在脚边卧着,手上有Kombucha喝着,3个大屏幕用来编程,我能敲20个小时的键盘。

我编程时候,我的狗会绕着我兜圈子。我室友给她弄了个鲨鱼头罩,兜圈子的时候看着特别好玩儿。

(禅师:其实我们很多中国程序员也是一天20个小时,甚至通宵敲代码的……[手动狗头])

禅师:接下来有什么打算?

C:肯定继续做Julia嘛。为此我去了MIT,以便有更多时间继续深入,为他奉献青春。

禅师:能读到这里,说明你是对Julia非常感兴趣了。所以,禅师在最后,为大家推荐👇这本Julia学习教材:






幸福

无非就是

我 & 你

我  AI  你






登录查看更多
1

相关内容

MATLAB 是 Matrix Laboratory 的缩写,是一款由美国 MathWorks 公司出品的商业数学软件。是一种适用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
【实用书】Python数据科学从零开始,330页pdf
专知会员服务
141+阅读 · 2020年5月19日
干货书《数据科学数学系基础》2020最新版,266页pdf
专知会员服务
318+阅读 · 2020年3月23日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
做机器学习和AI必备的42个数学知识点
AI前线
9+阅读 · 2018年12月6日
各编程领域最好的入门书籍
程序猿
27+阅读 · 2018年7月29日
零基础小白,如何入门计算机视觉?
计算机视觉life
9+阅读 · 2018年3月8日
大学数学不好,或许是数学教材的锅?
算法与数学之美
15+阅读 · 2017年8月1日
EfficientDet: Scalable and Efficient Object Detection
Arxiv
6+阅读 · 2019年11月20日
Arxiv
23+阅读 · 2018年10月1日
Labeling Panoramas with Spherical Hourglass Networks
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
Arxiv
3+阅读 · 2018年5月21日
Arxiv
7+阅读 · 2018年3月21日
VIP会员
Top
微信扫码咨询专知VIP会员