Julia 编程语言

下载   文档 加星


Julia 简介



快速

Julia 是为高性能而设计的。Julia 程序通过 LLVM 自动编译为高效的原生代码,并支持多个平台

动态

Julia 是动态类型的,感觉像脚本语言,并很好地支持交互式使用,但也可以选择单独编译。

可重现

可重现的环境 使跨平台使用预构建的二进制文件,每次都能重新创建相同的 Julia 环境成为可能。

可组合

Julia 使用多重派遣作为一种范式,使其易于表达许多面向对象和函数式编程模式。有关多重派遣的非凡效力的演讲解释了它为何如此有效。

通用

Julia 提供了异步 I/O元编程调试日志记录性能分析包管理器等等。人们可以用 Julia 构建整个应用程序和微服务

开源

Julia 是一个开源项目,拥有超过 1000 位贡献者。它是在MIT 许可下提供的。源代码在 GitHub 上提供。





生态系统



通用计算

minesweeper gameover

构建、部署或嵌入您的代码

Julia 使构建完整的应用程序成为可能。使用Dash.jlGenie.jl 编写 Web UI,或使用GTK.jl 编写原生 UI。从各种数据库中提取数据。使用PackageCompiler 构建共享库和可执行文件。使用HTTP.jl 部署到 Web 服务器上或嵌入式设备。强大的 Shell 集成使管理其他进程变得轻而易举。

Julia 具有针对C、FortranC++PythonRJavaMathematicaMatlab 以及许多其他语言的外部函数接口。Julia 还可以通过其嵌入 API嵌入到其他程序中。Julia 的PackageCompiler 使从 Julia 程序构建可以集成到更大项目中的二进制文件成为可能。Python 程序可以使用juliacall 调用 Julia。R 程序可以使用R 的 JuliaCall 执行相同的操作,这在从 R 调用 MixedModels.jl 中得到了证明。Mathematica 支持通过其外部评估系统调用 Julia

并行计算

parallel prefix graphical result

并行和异构计算

Julia 专为并行性而设计,并在每个级别提供用于并行计算的内置原语:指令级并行性多线程GPU 计算 以及分布式计算Celeste.jl 项目在 NERSC 的Cori 超级计算机上使用 650,000 个内核实现了 1.5 PetaFLOP/s。

Julia 编译器还可以为GPU 生成原生代码。诸如DistributedArrays.jlDagger.jl 等包为并行性提供了更高级别的抽象。诸如Elemental.jlTSVD.jl 等包提供了分布式线性代数。还可通过MPI.jl 使用 MPI 样式的并行性。

机器学习

cartpole reinforcement learning problem visualization

可扩展机器学习

MLJ.jl 包为常见的机器学习算法提供统一的接口,这些算法包括广义线性模型决策树 以及聚类Flux.jlLux.jl 是用于深度学习的强大包。诸如Metalhead.jlObjectDetector.jl 以及TextAnalysis.jl 等包为常见任务提供了现成的预训练模型。AlphaZero.jl 提供了 AlphaZero 中强化学习算法的高性能实现。Turing.jl 是用于概率编程的最佳包。

科学计算

Lorenz Attractor visualization

丰富的科学计算生态系统

Julia 从一开始就被设计为非常擅长数值和科学计算。这体现在 Julia 中编写的科学工具的大量使用中,例如最先进的微分方程生态系统(DifferentialEquations.jl)、优化工具(JuMP.jlOptim.jl)、迭代线性求解器(IterativeSolvers.jl)、快速傅里叶变换(AbstractFFTs.jl) 等等。针对科学机器学习量子计算 等提供了通用仿真框架。

Julia 还提供了一些特定领域的生态系统,例如生物学 (BioJulia)、运筹学 (JuMP Dev)、图像处理(JuliaImages)、量子物理学(QuantumBFS)、非线性动力学 (JuliaDynamics)、数量经济学(QuantEcon)、天文学 (JuliaAstro) 以及生态学(EcoJulia)。在热情的开发人员和维护人员的共同努力下,Julia 的科学生态系统正在快速发展。

数据科学

Visualization of weighted data changing as more data is plotted

与您的数据交互

Julia 数据生态系统提供DataFrames.jl 用于处理数据集并执行常见的数据操作。CSV.jl 是一个快速的、多线程的软件包,用于读取 CSV 文件,并与 Arrow 生态系统集成,正在使用Arrow.jl 进行开发。Queryverse 提供查询、文件 I/O 和可视化功能。除了处理表格数据外,JuliaGraphs 软件包也使处理组合数据变得容易。

Julia 可以使用JDBC.jlODBC.jl 驱动程序与几乎所有数据库进行交互。此外,它还通过Spark.jl 与 Spark 生态系统集成。

可视化

Visualization of waves in 3D, as a heatmap, and on the x y axis

数据可视化和绘图

数据可视化有着复杂的过往。绘图软件在功能与简洁性、速度与美观以及静态界面与动态界面之间进行权衡。有些软件包进行显示,但不会更改,而其他软件包则实时更新。

Plots.jl 是一个可视化界面和工具集。它在各种后端(如GR.jlPyPlot.jlPlotlyJS.jl)之间提供通用 API。Makie.jl 是一个用于复杂图形和动画的复杂软件包。习惯了“图形语法”绘图 API 的用户应该查看Gadfly.jlVegaLite.jlVega-Lite 交互式图形语法界面作为 Julia 软件包提供。对于那些不想离开终端舒适区的人,还有UnicodePlots.jl






JuliaCon 2023






Julia 已下载超过 4500 万次,Julia 社区已注册超过 10,000 个 Julia 软件包供社区使用。这些软件包包括各种数学库、数据操作工具以及用于通用计算的软件包。除了这些之外,您还可以轻松地使用来自PythonRC/FortranC++ 以及Java 的库。如果您找不到您要找的内容,请在Discourse 上提问,或者更棒的是,贡献一个







最近的博客文章



Julia 1.10 的亮点






与我们交谈



Discourse

Discourse Logo

GitHub

GitHub Logo

Zulip

Zulip Logo

Slack

Slack Logo

Twitter

Twitter Logo

视频

YouTube Logo

LinkedIn

LinkedIn Logo

Twitch

Twitch Logo





编辑器和 IDE






基本工具



调试器

Debugger

性能分析器

Profiler Logo

Revise

Revise Logo