Julia 中文社区

社区驱动,致力于 Julia 编程语言中文支持的开源组织

下载最新版   中文文档 为 Julia 点赞


简而言之,Julia 就是



快!

Julia 一开始就是为高性能而设计的。 Julia 程序通过 LLVM 编译成高效的 多平台 机器码。

动态

Julia 是动态类型的,使用起来像脚本语言,同时有很好的交互体验。

可选类型

Julia 有丰富的数据类型描述语言,标注类型声明可以使程序更清晰可靠。

通用

Julia 使用多分派范式,很容易表达面向对象和函数式编程模式。 同时提供了异步 I/O调试日志性能分析包管理等工具。

易用

Julia 拥有高阶的语法,这让具有不同编程语言背景和经验的程序员都能使用它。查看 Julia 的微基准来感受这门语言吧。

开源

Julia 采用 MIT 许可证,每个人都可以免费使用。所有源代码都可以在 Github 上公开查阅。





语言生态



General Computing

minesweeper gameover

构建、部署或者嵌入你的代码

Julia 允许你编写 UI静态编译代码, 甚至将代码部署到 Web 服务器上。 它还具有类似 shell 能管理其他进程 的强大能力。它也提供类似 Lisp 的宏和其他元编程工具。

Julia 提供了许多语言的接口(FFI): C/FortranC++PythonRJava 等。 Julia 也能通过它的嵌入式 API 嵌入其他程序。 举例来说:Python 程序可以通过 PyJulia 包来调用 Julia。 R 编写的程序可以使用 R 中的 JuliaCall, 这种做法已经由 在 R 中调用 MixedModels.jl 这篇文章实践过了。

Parallel Computing

parallel prefix graphical result

并行和异构计算

Julia 是为并行设计的,它为每一层的并行计算提供了内置的原语: 指令级并行多线程分布式计算Celeste.jl 项目在 NERSC 的 Cori 超级计算机 实现了 1.5 PetaFLOP/s 的计算能力。

Julia 编译器还可以为 GPU 生成本地代码。 像 DistributedArrays.jlDagger.jl 这样的包为并行性提供了更高级别的抽象。 分布式线性代数是由类似 Elemental.jlTSVD.jl 的包提供的。

Machine Learning

cartpole reinforcement learning problem visualization

可伸缩的机器学习

Julia 为深度学习 (Flux.jlKnet.jl)、 机器学习和人工智能。提供了强大的工具。 Julia 的数学语法使其成为一种理想的表达算法的方式,就像在论文中写的那样, 构建具有 自动微分GPU 加速 和支持处理 TB 级数据的可训练模型。

Julia 丰富的机器学习和统计生态系统包括: 广义线性模型(GLM)决策树聚类。 您还可以找到贝叶斯网络蒙特卡洛马尔可夫的包。

Scientific Computing

Lorenz Attractor visualization

丰富的科学计算生态系统

Julia 天生就擅长数值和科学计算。 这一点可以从用 Julia 写的大量科学工具中看出。 例如:最先进的微分方程生态系统(DifferentialEquations.jl)、 优化工具(JuMP.jlOptim.jl)、 迭代线性求解器(IterativeSolvers.jl)、 健壮的傅立叶变换框架(AbstractFFTs.jl)、 通用的量子模拟框架(Yao.jl)等工具。 它们可以满足驱动你所有的模拟需求。

茱莉亚还提供了一些特定领域的软件生态, 比如生物学(BioJulia)、 运筹学(JuliaOpt)、 图像处理(JuliaImages)、 量子物理学(QuantumBFSQuantumOptics)、 非线性动力学(JuliaDynamics)、 计量经济学(QuantEcon)、 天文学(JuliaAstro) 和生态学(EcoJulia)。 有了一群来自各个科学社区、高度热情的开发人员和维护人员,这个生态系统只会越来越大。

Data Science

Visualization of weighted data changing as more data is plotted

交互式的处理你的数据

Julia 的数据生态允许快速地加载多维数据集,并行执行聚合、连接和预处理操作,并以高效格式将它们保存到磁盘。 您还可以使用 OnlineStats.jl 对流数据执行在线计算。 无论您是在寻找方便和熟悉的 DataFrames, 还是使用 JuliaDB 的一种新方法,Julia 都提供了丰富的工具。 Queryverse 提供查询、文件 IO 和可视化功能。 除了表格数据处理外,JuliaGraphs 包还使处理组合数据变得更加容易。

Julia 可以通过 JDBC.jlODBC.jl 驱动处理几乎所有的数据库。 此外,它还通过 Spark.jlHDFS.jl Hive.jl 与 Spark 和 Hadoop 的软件生态集成在一起。

Visualization

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

数据可视化与绘图

数据可视化有着复杂的历史。 各种绘图软件都在不同方面做着取舍:功能与简洁性、速度与美观、静态与动态界面。 一些包在显示图像后就不再更新图象,另一些则选择实时更新。

Plots.jl 是一个数据可视化接口和工具集。 它通过不同的后端提供统一的 API 接口, 例如: GR.jlPyPlot.jlPlotlyJS.jl。 喜欢图形风格 API 语法的用户可能会喜欢纯 Julia 实现的 Gadfly.jlVegaLite.jl 包在 Julia 中提供了类 Vega-Lite 的交互式图形接口语法。 对于那些不希望离开终端的人,还有 UnicodePlots.jl 包可供选择。






JuliaCon 2021






软件包



Julia 已经被下载超过 4000 万次,并且 Julia 社区已经注册了超过 9000 个 Julia 包供社区使用。 这些包涵盖各种数学库、数据处理工具和用于通用计算的包。 除此之外,您还可以轻松地使用来自 PythonRC/FortranC++Java 的库。 如果你找不到你想要的东西,在论坛上问问别人, 或者更棒一些,自己开发一个新包







关注我们








编辑器与集成开发环境






必备工具



调试

Debugger

性能分析

Profiler Logo

动态修改

Revise Logo

GPUs

Julia GPU Logo