导读 | 面向科学计算的动态高级编程语言 Julia 。开发者建议使用 0.6 或更早版本的用户先升级到 0.7,一旦代码不再显示警告信息之后再升级到 1.0。Julia 1.0 最重要的是代表着语言的 API 稳定了,Julia 1.0 的代码将能正常工作在 Julia 1.1、1.2...等小更新版本下。 |
除了 API 稳定,1.0 版还引入了一系列新的特性,包括全新的内置包管理器;新的缺失值规范表示;String 类型能安全的保存任意数据;扩展 Broadcasting 到自定义类型;
Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。
由于 Julia 的编译器与像 Python 或者 R 语言的解释器不同,你可能首先会发现 Julia 的性能并不那么直观。如果你发现哪些地方比较慢, 我们强烈建议你在做任何尝试之前通读一下代码性能优化章节。一旦你明白了 Julia 是如何工作的,你就可以写出来速度媲美 C 语言的代码。
通过使用类型推断和即时(JIT)编译 ,以及 LLVM ,Julia 具有可选的类型声明,重载,高性能等特性。Julia 是多编程范式的,包含指令式、函数式和面向对象编程的特征。 它提供了简易和简洁的高等数值计算,它类似于 R 、 MATLAB 和 Python ,支持一般用途的编程。 为了达到这个目的,Julia 在数学编程语言的基础上,参考了不少流行动态语言:Lisp 、 Perl 、 Python 、 Lua 和 Ruby。
Julia 与传统动态语言最大的区别是:核心语言很小;标准库是用 Julia 本身写的,如整数运算在内的基础运算
- 完善的类型,方便构造对象和做类型声明
- 基于参数类型进行函数重载
- 参数类型不同,自动生成高效、专用的代码
- 高性能,接近静态编译语言,如 C 语言
动态语言是有类型的:每个对象,不管是基础的还是用户自定义的,都有类型。许多动态语言没有类型声明,意味着它不能告诉编译器值的类型,也就不能准确的判断出类型。静态语言必须告诉编译器值的类型,类型仅存在于编译时,在运行时则不能更改。在 Julia 中,类型本身就是运行时对象,同时它也可以把信息传递给编译器。
重载函数由参数(参数列表)的类型来区别,调用函数时传入的参数类型,决定了选取哪个函数来进行调用。对于数学领域的程序设计来说,这种方式比起传统面向对象程序设计中操作属于某个对象的方法的方式更显自然。在 Julia 中运算符仅仅是函数的别名。程序员可以为新数据类型定义 “+” 的新方法,原先的代码就可以无缝地重载到新数据类型上。
因为运行时类型推断(得益于可选的类型声明),以及从开始就看重性能,Julia 的计算性能超越了其他动态语言,甚至可与静态编译语言媲美。在大数据处理的问题上,性能一直是决定性的因素:在刚刚过去的十年中,数据量还在以摩尔定律增长着。
Julia 想要变成一个前所未有的集易用、强大、高效于一体的语言。除此之外,Julia 的优势还在于:
- 免费开源(MIT 协议 )
- 自定义类型与内置类型同样高效、紧凑
- 不需要把代码向量化;非向量化的代码跑得也很快
- 为并行和分布式计算而设计
- 轻量级“绿色”线程(协程 )
- 低调又牛逼的类型系统
- 优雅、可扩展的类型转换
- 高效支持 Unicode, 包括且不只 UTF-8
- 直接调用 C 函数(不需封装或 API)
- 像 一样强大的管理其他进程的能力
- 像 Lisp 一样的宏和其他元编程工具
2012年04月19日:
InfoWorld采访了数值计算程序设计语言 Julia的作者Karpinski。他表示新语言主要针对的是数字密集运算相关的应用,他本人的工作既涉及到线性代数又涉及到大量统计。线性代数的首选工具是Matlab,而统计方面的首选工具是R,它们各有所长,无法替代,也就是不能用Matlab做统计,用R语言从事线性代数计算。他创造Julia的意图就是能将两者合二为一,提高生产效率。它是一种动态语言,易于编程,编程模型简短,同时具有高性能,就像是数值计算中的C语言。Julia语言实现支持Linux/OSX/FreeBSD,采用GPL许可。
2015年11月19日:
摩尔基金会向Julia编程语言捐款60万美元,以资助开发团队加快进度开发出生产版本。Julia是一个数值和科学计算的动态语言,结合Matlab和R的长处,易于编程,提供了类似C语言的性能。Julia于2012年发布了第一个版本,最新稳定版本还是0.4。这笔捐钱将在两年内拨给Julia开发团队。该基金会的一个目标是创造出更高效更强大的科学计算工具去帮助数值驱动的研究。
2018年08月10日:
julia发布1.0版本
本文原创地址://gulass.cn/julia-10.html作者:倪家兴,审核员:逄增宝
本文原创地址://gulass.cn/julia-10.html编辑:倪家兴,审核员:暂无