注:本文档中存在莫名奇妙的错误信息,可以参考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 语言的性能

简介 - 图1

实例可以参考
这也是Julia的出现原因之一:cpython失败,pypy无法正确编译所有python代码,达不到足够的速度(本质是解释语言的设计不适合优化)

Julia 还拥有以下优势:

  • 采用 MIT 许可证:免费开源
  • 用户自定义类型的速度与兼容性和内建类型一样好
  • 无需特意编写向量化的代码:非向量化的代码就很快
  • 为并行计算和分布式计算设计
  • 轻量级的“绿色”线程:协程(即Task
  • 低调又牛逼的类型系统
  • 优雅、可扩展的类型转换和类型提升
  • 对 Unicode 的有效支持,包括但不限于 UTF-8(即CharString
  • 直接调用 C 函数,无需封装或调用特别的 API(即ccall
  • 像 Shell 一样强大的管理其他进程的能力(即Cmd
  • 像 Lisp 一样的宏和其他元编程工具(即macro

Julia 的目标是创建一个前所未有的集易用、强大、高效于一体的语言。

同时,Julia仍具有一些缺点

  • 预热较慢(这是所有基于JIT的语言的共有特点),1.6版本相较之前版本有了明显的提升
  • 环境不太友好,包较少(Julia仍然是一门新兴语言)

前景

  • 应用包括但不限于数值优化、生物信息、机器学习、数据科学、计算物理
  • 第一个(存疑)支持Julia的OnlineJudge