julia—能满足我们贪念的语言

julia—能满足我们贪念的语言

最近有个名叫julia(请无视与其命名的其他事物)的语言突然爆火,看了他的介绍感觉这是传说中的语言,要干掉其他所有语言的节奏啊!

julia—能满足我们贪念的语言

这是他的官方介绍:“我们想要一种拥有自由许可的开源语言,同时拥有 C 的速度和 Ruby 的灵活。我们想要一种同像性语言,有像 Lisp 这样真正的宏,也有像 Matlab 这样的浅显熟悉的数学符号。我们想要一门像 Python 一样可用于通用编程,像 R 一样易于统计,像 Perl 一样自然地用于字符串处理,像 Matlab 一样强大的线性代数,像 shell 一样擅长将程序粘合在一起的语言。它简单易学,却能让严苛的黑客为之倾心。我们希望它是交互式的,具备可编译性。”

一个充满活力和繁荣的社区就围绕这种语言成长起来,世界各地的人们都在为了这个目标而不断努力改进和塑造Julia。 超过700人为Julia做出了自己的贡献,更多人创造了成千上万开源的Julia包。总而言之,我们创造了这样一种语言:

  • 快速:Julia一开始就是为高性能而设计的。Julia可以通过LLVM而跨平台被编译成高效的本地代码。
  • 通用:Julia使用多分派作为编程范式,使其更容易表达面向对象和函数式编程范式。标准库提供了异步I/O,进程控制,日志记录,性能分析,包管理器等等。
  • 动态:Julia是动态类型的,与脚本语言类似,并且对交互式使用具有很好的支持。
  • 数值计算:Julia擅长于数值计算,它的语法适用于数学计算,支持多种数值类型,并且支持并行计算。Julia的多分派自然适合于定义数值和类数组的数据类型。
  • 可选的类型标注:Julia拥有丰富的数据类型描述,类型声明可以使得程序更加可读和健壮。
  • 可组合:Julia的包可以很自然的组合运行。单位数量的矩阵或数据表一列中的货币和颜色可以一起组合使用并且拥有良好的性能。

去它官网找了找,得到其生态系统如下:

一般用途

构建,部署或嵌入您的代码

Julia允许您编写UI,静态编译代码,甚至将其部署在Web服务器上。它还具有强大的类似shell的功能,可用于管理其他进程。它提供类似Lisp的宏和其他元编程工具。

Julia具有C / Fortran, C ++, Python, R, Java和许多其他语言的外部函数接口 。Julia也可以通过嵌入API嵌入到其他程序中。具体来说,Python程序可以使用PyJulia调用Julia 。R程序可以用R的JuliaCall做同样的事情,这可以通过从R调用MixedModels.jl来证明。

数据科学

与您的数据互动

Julia数据生态系统允许您快速加载多维数据集,并行执行聚合,连接和预处理操作,并以高效格式将它们保存到磁盘。您还可以使用OnlineStats.jl对流数据执行在线计算 。无论您是在寻找方便和熟悉的 DataFrame,还是使用JuliaDB的新方法 ,Julia 都能为您提供丰富的工具。该 Queryverse包装作用的元数据包,通过它可以访问这些工具与朱利安的API。除了使用表格数据外,还有JuliaGraphs 软件包可以轻松使用组合数据。

Julia可以使用JDBC.jl和 ODBC.jl驱动程序处理几乎所有数据库 。此外,它还使用Spark.jl, HDFS.jl和 Hive.jl与Hadoop生态系统集成 。

机器学习

可扩展的机器学习

Julia为深度学习(Flux.jl和 Knet.jl), 机器学习和AI 提供了强大的工具。Julia的数学语法使其成为表达算法的理想方式,就像它们在论文中编写一样,构建具有自动差异的可训练模型 , GPU加速以及对数TB数据的支持。

Julia丰富的机器学习和统计生态系统包括 广义线性模型, 决策树和聚类的功能。您还可以找到贝叶斯网络和 马尔可夫链蒙特卡罗的包 。

科学领域

丰富的科学计算生态系统

Julia的设计从根本上讲非常擅长数值和科学计算。这可以从Julia编写的大量科学工具中看出,例如最先进的微分方程生态系统 (DifferntialEquations.jl),优化工具(JuMP.jl和 Optim.jl),迭代线性求解器 (IterativeSolvers) .jl)以及更多,可以驱动所有模拟。

Julia还提供了许多特定领域的生态系统,如生物学 (BioJulia),运筹学(JuliaOpt),量子物理学 (QuantumOptics),非线性动力学(JuliaDynamics),定量经济学 (QuantEcon),天文学 (JuliaAstro)和生态学 ( EcoJulia)。有了一群来自科学界各个部分的热情的开发人员和维护者,这个生态系统将继续变得越来越大。

并行计算

并行和异构计算

Julia专为并行性而设计,并为各个级别的并行计算提供内置基元: 指令级并行多线程分布式计算。该Celeste.jl项目达到1.5千万亿次/秒的在NERSC超级计算机的Cori使用650000个内核。

Julia编译器还可以为各种硬件加速器生成本机代码,例如GPU和Xeon Phis。诸如DistributedArrays.jl和Dagger.jl之类的包为并行性提供了更高级别的抽象。

不得不说这语言的野心的确很大,其在github已经有15千多Star,已被下载超过200万次,而Julia社区已经开发了超过1,900个Julia软件包。其社区好像也挺完善的,中文社区为juliacn.com。

其中文社区的有这么一段话 :

要求有点多,是不是?

尽管我们意识到了自己有多贪心,我们还是想要拥有这些功能。大概在两年半之前,我们开始创造这种能满足我们贪念的语言。它还没有完工——但是已经可以发布一个1.0版本了(其实等了6年才要发布)——我们创造的这个语言叫做Julia。它已经实现了我们这次乱七八糟需求的90%,而现在她需要来自更多人的乱七八糟的需求,来让她走得更远。如果你也是一位贪心不足,不可理喻,需索无度的码场二逼青年,希望你能来试试这个东东。

哈哈,心动不如行动~


分享到:


相關文章: