2008年,一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。
他们想要的是一个开源的软件,它要像C语言一般快速而有拥有如同Ruby的动态性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的数学记号。
要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊。
还有,它应该是交互式的,同时又是编译型的……
现在,一个充满活力和蓬勃发展的社区围绕着这种语言成长起来,来自世界各地的人们在追求这一目标的过程中不断地精炼并重塑着 Julia。超过 700 人为 Julia 做出了贡献,还有很多人制作了数以千计的令人惊叹的开源 Julia 软件包。
总而言之,我们建立的语言:
-快速:Julia 就是为高性能而设计的。Julia 程序通过 LLVM 编译为多个平台的高效本机代码。
-通用:它使用多个调度作为范例,使得它很容易表达众多面向对象和函数编程的模式。它的标准库提供异步 I / O、进程控制、日志记录、概要分析、软件包管理器等。
-动态:Julia 是动态类型的,就像一种脚本语言,并且很好地支持交互式使用。
-技术:它擅长于数值计算,其语法非常适合数学,支持的数字数据类型众多,并具有开箱即用并行性。Julia 的多次调度非常适合定义数字和数组类型的数据类型。
-(可选)键入:Julia 具有丰富的描述性数据类型语言,类型声明可用于阐明和巩固程序。
-可组合:Julia 的软件包可以很好地协同工作。单位数量矩阵,货币和颜色数据表都可以进行,并且性能良好。
特点:
1.免费开源
2.核心语言非常小。标准库用的是 Julia 语言本身写的
3.调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。(还在增加中……)
4.丰富的用于建立或描述对象的类型语法
5.高性能,接近于静态编译型语言。包括用户自定义类型等
6.为并行计算和分布式计算而设计
7.轻量级“绿色”协程
8.优雅的可扩展的类型转换/提升
9.支持Unicode, 包括但不限于UTF-8
10.可直接调用 C 函数(不需要包装或是借助特殊的API)
11.有类似shell的进程管理能力
12.有类似Lisp的宏以及其它元编程工具
与其他语言相比,Julia 易于使用,大幅减少了需要写的代码行数;并且能够很容易地部署于云容器,有更多的工具包和库,并且结合了多种语言的优势。据 Julia Computing 的宣传,在七项基础算法的测试中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。
目前 Julia 的应用范围已经非常广泛了,可以用于天文图像分析、自动驾驶汽车、机器人和 3D 打印机、精准医疗、增强现实、基因组学和风险管理等领域。
两年前,诺贝尔经济学奖得主 Thomas Sargent 和澳大利亚国立大学的经济学教授 John Stachurski,共同建议纽约联邦储备银行把其用于市场走势预测和政策分析的 “动态随机一般均衡模型(DSGE)” 转到 Julia 语言平台。在项目第一阶段后,他们发现,Julia 把模型运行时间缩短至原先 Matlab 代码的十分之一到四分之三。
最优解
除了语言本身的优点,Julia 还拥有非常强大的生态系统,主要应用于数据可视化、通用计算、数据科学、机器学习、科学领域、并行计算六大领域。
小伙伴们,你们准备好了学习这门新的语言吗?欢迎下方留言评论!
联系客服