极简Julia语言 │ Julia背后的原理

极简Julia语言 │ Julia背后的原理
文章图片
介绍Julia语言相较其他编程语言的优势 。
1
Julia背后的原理
为了迎合新的技术 , 比如机器学习 , 你需要学习机器学习社区已经开始使用的语言 。 Julia是其中一种完美的语言 , 事实上 , 它是当前发展最快的编程语言之一 , 并且相较其他语言 , 如Python脚本语言(机器学习社区喜欢的一种语言),Julia具有很多优势 。
(1)性能 。 很长时间以来 , 性能一直是Python等语言的弱点 。 对于像机器学习这种需要极高性能的应用程序 , Julia会更合适一些 。 事实上 , Julia代码的运行速度可以和C代码一样快 , 有时甚至比C代码更快!像Python这样的语言 , 其性能表现不佳是有原因的:这些语言的构建是为了满足当时的时代和程序员的目标定位需求 。 在过去5年左右的时间里 , 我们看到了科学计算领域的指数级增长 。 尽管Python和C等语言在这个方向上有所帮助 , 但它们却不是实现新技术的最佳选择 。 与此相反 , Julia已经被开发用于创建以性能为主要因素的机器学习应用程序 。
(2)JIT编译 。 使用Julia , 你的程序可以被即时编译 。 这意味着 , 如果某些操作的运行速度比你实现它们的速度更快 , 那么Julia便会对这些操作进行优化 。
(3)与Python、C和FORTRAN的互操作 。 如果你已经编写了Python、C或FORTRAN代码 , 不想在Julia中重写 , 没有问题!你可以在Julia中调用这些代码 , 并且不用担心有任何麻烦 。
(4)开源和跨平台 。 如果你有一台Darwin(macOS)、Windows或UNIX派生的(Linux、BSD等)计算机 , 你就可以使用Julia!此外 , 如果你不喜欢Julia的某些功能 , 想要帮它变得更好 , 你还可以向Julia提出你的建议和想法 , 甚至给Julia直接编写代码 , 使它更符合个人习惯 。
还有更多的原因使Julia非常适合社区 。
Julia项目于2009年由四位创立者共同启动:StefanKarpinski、ViralShah、AlanEdelman和JeffBezanson 。 他们启动Julia的主要目标是通过创建一种兼具动态与性能的语言解决双语言问题(two-languageproblem) 。 例如 , 在过去 , 大部分程序员都会使用一种简单、动态的编程语言构建应用程序原型 , 如Python , 然后将其移植到C或其他高性能的低级语言中 , 使其足够健壮、足够快 。 这是一个巨大的问题 , 因为这需要程序员去学习更多的语言 , 投入更多的时间 , 并且会引入更多不期望的错误 , 这就是双语言问题 。
双语言问题还有另一方面——也就是说 , 大多数应用程序需要高性能 , 既需要使用Python这样的高级语言编写 , 也必须使用C这样的低级语言 。 这是因为简单的代码可以用Python编写 , 而计算密集的代码则必须用C语言编写 , 这就导致了另一个问题:两种语言之间的桥梁是一个瓶颈 。 你必须拥有一个团队 , 要么完全熟练地掌握使用两种语言 , 要么将Python端和C端分开 。 这两种解决方案的缺点都大于其优点 , 但这是唯一的解决方法 , 所以没有人会抱怨它 。
随着Julia的到来 , 其通过强大的编译器能够做一些其他语言只能梦想的事情 。 例如 , 当国家能源研究科学计算中心(NationalEnergyResearchScientificComputingCenter , NERSC)需要绘制可观测宇宙中的每一个大目标时 , 就采用了Julia编程语言 。 事实上 , Julia已成为世界上第一个实现超大规模性能的高级动态编程语言 。
这是什么意思?这意味着Julia同时在超过65万台计算机上运行 , 处理超过60TB的数据 , 相当于超过16.3万个高端的、2017年版的MacBook专业产品 。 通常 , 只有C语言 , 甚至直接的机器代码才能处理这种负载 。