Julia 有丰富的数据类型描述语言,标注类型声明可以使程序更清晰可靠。
Julia 拥有高阶的语法,这让具有不同编程语言背景和经验的程序员都能使用它。查看 Julia 的微基准来感受这门语言吧。
Julia 允许你编写 UI、 静态编译代码, 甚至将代码部署到 Web 服务器上。 它还具有类似 shell 能管理其他进程 的强大能力。它也提供类似 Lisp 的宏和其他元编程工具。
Julia 提供了许多语言的接口(FFI): C/Fortran、 C++、 Python、 R、 Java 等。 Julia 也能通过它的嵌入式 API 嵌入其他程序。 举例来说:Python 程序可以通过 PyJulia 包来调用 Julia。 R 编写的程序可以使用 R 中的 JuliaCall, 这种做法已经由 在 R 中调用 MixedModels.jl 这篇文章实践过了。
Julia 是为并行设计的,它为每一层的并行计算提供了内置的原语: 指令级并行、 多线程 和 分布式计算。 Celeste.jl 项目在 NERSC 的 Cori 超级计算机 上 实现了 1.5 PetaFLOP/s 的计算能力。
Julia 编译器还可以为 GPU 生成本地代码。 像 DistributedArrays.jl 和 Dagger.jl 这样的包为并行性提供了更高级别的抽象。 分布式线性代数是由类似 Elemental.jl 和 TSVD.jl 的包提供的。
Julia 天生就擅长数值和科学计算。 这一点可以从用 Julia 写的大量科学工具中看出。 例如:最先进的微分方程生态系统(DifferentialEquations.jl)、 优化工具(JuMP.jl 和 Optim.jl)、 迭代线性求解器(IterativeSolvers.jl)、 健壮的傅立叶变换框架(AbstractFFTs.jl)、 通用的量子模拟框架(Yao.jl)等工具。 它们可以满足驱动你所有的模拟需求。
茱莉亚还提供了一些特定领域的软件生态, 比如生物学(BioJulia)、 运筹学(JuliaOpt)、 图像处理(JuliaImages)、 量子物理学(QuantumBFS、 QuantumOptics)、 非线性动力学(JuliaDynamics)、 计量经济学(QuantEcon)、 天文学(JuliaAstro) 和生态学(EcoJulia)。 有了一群来自各个科学社区、高度热情的开发人员和维护人员,这个生态系统只会越来越大。
Julia 的数据生态允许快速地加载多维数据集,并行执行聚合、连接和预处理操作,并以高效格式将它们保存到磁盘。 您还可以使用 OnlineStats.jl 对流数据执行在线计算。 无论您是在寻找方便和熟悉的 DataFrames, 还是使用 JuliaDB 的一种新方法,Julia 都提供了丰富的工具。 Queryverse 提供查询、文件 IO 和可视化功能。 除了表格数据处理外,JuliaGraphs 包还使处理组合数据变得更加容易。
Julia 可以通过 JDBC.jl 和 ODBC.jl 驱动处理几乎所有的数据库。 此外,它还通过 Spark.jl、 HDFS.jl 和 Hive.jl 与 Spark 和 Hadoop 的软件生态集成在一起。
数据可视化有着复杂的历史。 各种绘图软件都在不同方面做着取舍:功能与简洁性、速度与美观、静态与动态界面。 一些包在显示图像后就不再更新图象,另一些则选择实时更新。
Plots.jl 是一个数据可视化接口和工具集。 它通过不同的后端提供统一的 API 接口, 例如: GR.jl、 PyPlot.jl 和 PlotlyJS.jl。 喜欢图形风格 API 语法的用户可能会喜欢纯 Julia 实现的 Gadfly.jl。 VegaLite.jl 包在 Julia 中提供了类 Vega-Lite 的交互式图形接口语法。 对于那些不希望离开终端的人,还有 UnicodePlots.jl 包可供选择。