您错过了 JuliaCon 2024 吗?在 YouTube 上观看第 11 届年度 JuliaCon 演讲!
Julia 使构建完整的应用程序成为可能。使用Dash.jl 和Genie.jl 编写 Web UI,或使用GTK.jl 编写原生 UI。从各种数据库中提取数据。使用PackageCompiler 构建共享库和可执行文件。使用HTTP.jl 部署到 Web 服务器上或嵌入式设备。强大的 Shell 集成使管理其他进程变得轻而易举。
Julia 具有针对C、Fortran、C++、Python、R、Java、Mathematica、Matlab 以及许多其他语言的外部函数接口。Julia 还可以通过其嵌入 API嵌入到其他程序中。Julia 的PackageCompiler 使从 Julia 程序构建可以集成到更大项目中的二进制文件成为可能。Python 程序可以使用juliacall 调用 Julia。R 程序可以使用R 的 JuliaCall 执行相同的操作,这在从 R 调用 MixedModels.jl 中得到了证明。Mathematica 支持通过其外部评估系统调用 Julia。
Julia 专为并行性而设计,并在每个级别提供用于并行计算的内置原语:指令级并行性、多线程、GPU 计算 以及分布式计算。Celeste.jl 项目在 NERSC 的Cori 超级计算机上使用 650,000 个内核实现了 1.5 PetaFLOP/s。
Julia 编译器还可以为GPU 生成原生代码。诸如DistributedArrays.jl 和Dagger.jl 等包为并行性提供了更高级别的抽象。诸如Elemental.jl 和TSVD.jl 等包提供了分布式线性代数。还可通过MPI.jl 使用 MPI 样式的并行性。
MLJ.jl 包为常见的机器学习算法提供统一的接口,这些算法包括广义线性模型、决策树 以及聚类。Flux.jl 和Lux.jl 是用于深度学习的强大包。诸如Metalhead.jl、ObjectDetector.jl 以及TextAnalysis.jl 等包为常见任务提供了现成的预训练模型。AlphaZero.jl 提供了 AlphaZero 中强化学习算法的高性能实现。Turing.jl 是用于概率编程的最佳包。
Julia 从一开始就被设计为非常擅长数值和科学计算。这体现在 Julia 中编写的科学工具的大量使用中,例如最先进的微分方程生态系统(DifferentialEquations.jl)、优化工具(JuMP.jl 和Optim.jl)、迭代线性求解器(IterativeSolvers.jl)、快速傅里叶变换(AbstractFFTs.jl) 等等。针对科学机器学习、量子计算 等提供了通用仿真框架。
Julia 还提供了一些特定领域的生态系统,例如生物学 (BioJulia)、运筹学 (JuMP Dev)、图像处理(JuliaImages)、量子物理学(QuantumBFS)、非线性动力学 (JuliaDynamics)、数量经济学(QuantEcon)、天文学 (JuliaAstro) 以及生态学(EcoJulia)。在热情的开发人员和维护人员的共同努力下,Julia 的科学生态系统正在快速发展。
Julia 数据生态系统提供DataFrames.jl 用于处理数据集并执行常见的数据操作。CSV.jl 是一个快速的、多线程的软件包,用于读取 CSV 文件,并与 Arrow 生态系统集成,正在使用Arrow.jl 进行开发。Queryverse 提供查询、文件 I/O 和可视化功能。除了处理表格数据外,JuliaGraphs 软件包也使处理组合数据变得容易。
Julia 可以使用JDBC.jl 和ODBC.jl 驱动程序与几乎所有数据库进行交互。此外,它还通过Spark.jl 与 Spark 生态系统集成。
数据可视化有着复杂的过往。绘图软件在功能与简洁性、速度与美观以及静态界面与动态界面之间进行权衡。有些软件包进行显示,但不会更改,而其他软件包则实时更新。
Plots.jl 是一个可视化界面和工具集。它在各种后端(如GR.jl、PyPlot.jl 和PlotlyJS.jl)之间提供通用 API。Makie.jl 是一个用于复杂图形和动画的复杂软件包。习惯了“图形语法”绘图 API 的用户应该查看Gadfly.jl。VegaLite.jl 将Vega-Lite 交互式图形语法界面作为 Julia 软件包提供。对于那些不想离开终端舒适区的人,还有UnicodePlots.jl。