注:本文档中存在莫名奇妙的错误信息,可以参考JuliaRoadmap
LICENSE
本项目文档部分采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可(引用说明详见“参考资料”部分),代码部分采用MIT license进行许可。
推荐阅读
参考资料
- 中文社区文档(部分参考)
前言
Julia简介
Julia 拥有可选类型标注和多重派发这两个特性,同时还拥有很棒的性能。 这些都得归功于使用 LLVM 实现的类型推导和即时编译(JIT)技术。Julia 是一门支持过程式、函数式和面向对象的多范式语言。 它像 R、MATLAB 和 Python 一样简单,在高级数值计算方面有丰富的表现力,并且支持通用编程。 为了实现这个目标,Julia 以数学编程语言(mathematical programming languages)为基础,同时也参考了不少流行的动态语言,例如 Lisp、Perl、Python、Lua、和 Ruby。
Julia 与传统动态语言最重要的区别是:
- 核心语言很小:标准库是用 Julia 自身写的,包括整数运算这样的基础运算
- 丰富的基础类型:既可用于定义和描述对象,也可用于做可选的类型标注
- 通过多重派发,可以根据类型的不同,来调用同名函数的不同实现
- 为不同的参数类型,自动生成高效、专用的代码
- 接近 C 语言的性能
实例可以参考
这也是Julia的出现原因之一:cpython
失败,pypy
无法正确编译所有python
代码,达不到足够的速度(本质是解释语言的设计不适合优化)
Julia 还拥有以下优势:
- 采用 MIT 许可证:免费开源
- 用户自定义类型的速度与兼容性和内建类型一样好
- 无需特意编写向量化的代码:非向量化的代码就很快
- 为并行计算和分布式计算设计
- 轻量级的“绿色”线程:协程(即
Task
)- 低调又牛逼的类型系统
- 优雅、可扩展的类型转换和类型提升
- 对 Unicode 的有效支持,包括但不限于 UTF-8(即
Char
和String
)- 直接调用 C 函数,无需封装或调用特别的 API(即
ccall
)- 像 Shell 一样强大的管理其他进程的能力(即
Cmd
)- 像 Lisp 一样的宏和其他元编程工具(即
macro
)Julia 的目标是创建一个前所未有的集易用、强大、高效于一体的语言。
同时,Julia仍具有一些缺点
- 预热较慢(这是所有基于JIT的语言的共有特点),1.6版本相较之前版本有了明显的提升
- 环境不太友好,包较少(Julia仍然是一门新兴语言)
前景
- 应用包括但不限于数值优化、生物信息、机器学习、数据科学、计算物理
- 第一个(存疑)支持Julia的OnlineJudge