The Julia Programming Language


Star

Julia in a Nutshell



Julia is fast!

朱莉娅从一开始就为高性能而设计. Julia程序可通过LLVM编译为多个平台的高效本机代码.

Dynamic

Julia is dynamically-typed, feels like a scripting language, and has good support for interactive use.

Optionally typed

Julia具有丰富的描述性数据类型语言 ,并且类型声明可用于阐明和巩固程序.

General

Julia使用多个调度作为范例,从而易于表达许多面向对象和功能的编程模式. 它提供异步I / O调试日志记录性能分析程序包管理器等.

Easy to use

Julia具有高级语法,因此对于任何背景或经验水平的程序员来说,它都是一种可访问的语言. 浏览Julia的微基准测试,以了解该语言.

Open source

Julia是根据MIT许可提供的,所有人免费使用. 所有源代码都可以在GitHub上公开查看.




Ecosystem



General Computing

minesweeper gameover

Build, Deploy or Embed Your Code

使用Julia,您可以编写UI静态编译代码,甚至将其部署到Web服务器上 . 它还具有强大的类似于shell的功能来管理其他进程 . 它提供类似Lisp的宏和其他元编程功能.

Julia具有C / FortranC ++PythonRJava和许多其他语言的外部函数接口. 朱莉娅还可以通过其嵌入API嵌入其他程序中. 具体来说,Python程序可以使用PyJulia调用Julia. R程序可以使用R的JuliaCall进行相同的操作 ,这可以通过从R调用MixedModels.jl来证明.

Parallel Computing

parallel prefix graphical result

Parallel and Heterogeneous Computing

Julia是为并行性而设计的,并在每个级别提供了用于并行计算的内置原语: 指令级并行性多线程分布式计算 . Celeste.jl项目在NERSCCori超级计算机上使用650,000个内核, 达到1.5 PetaFLOP / s .

Julia编译器还可以为各种硬件加速器(例如GPU和Xeon Phis)生成本地代码. 诸如DistributedArrays.jlDagger.jl之类的包为并行提供了更高级别的抽象.

Machine Learning

cartpole reinforcement learning problem visualization

Scalable Machine Learning

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

朱莉娅丰富的机器学习和统计生态系统包括通用线性模型决策树聚类的功能 . 您还可以找到贝叶斯网络Markov Chain Monte Carlo的软件包.

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

Interact with your Data

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

Julia可以使用JDBC.jlODBC.jl驱动程序处理几乎所有数据库. 此外,它还使用Spark.jlHDFS.jlHive.jl与Hadoop生态系统集成.

Visualization

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

Data Visualization and Plotting

数据可视化具有复杂的历史. 绘图软件在功能和简单性,速度和美观性以及静态和动态界面之间进行权衡. 一些软件包可以显示,并且永远不会更改,而其他软件包则可以实时更新.

Plots.jl是可视化界面和工具集. 它为GR.jlPyPlot.jlPlotlyJS.jl等各种后端提供了通用的API. 希望使用更多图形样式API语法的用户可能喜欢纯粹的Julia Gadfly.jl绘图包. VegaLite.jl提供交互式图形界面的Vega-Lite语法作为Julia包. 对于那些不想离开终端的人,还有UnicodePlots.jl .






JuliaCon 2019







Packages



Julia has been downloaded over 10 million times and the Julia community has registered over 2,000 Julia packages for community use. These include various mathematical libraries, data manipulation tools, and packages for general purpose computing. In addition to these, you can easily use libraries from Python, R, C/Fortran, C++, and Java. If you do not find what you are looking for, ask on Discourse, or even better, contribute!







Recent Blog Posts



Julia的版本发布流程







Talk to us







Editors and IDEs



Visual Studio Code

VSCode Logo

Jupyter

Jupyter Logo

Emacs

Emacs Logo

SublimeText

Sublime logo

Revise

Revise Logo