Julia 中文社区

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

下载 v1.4.2   文档 Star


简而言之, Julia 就是



快!

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

动态

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

可选类型

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

通用

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

易用

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

开源

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





Ecosystem



General Computing

minesweeper gameover

Build, Deploy or Embed Your Code

Julia lets you write UIs, statically compile your code, or even deploy it on a webserver. It also has powerful shell-like capabilities for managing other processes. It provides Lisp-like macros and other metaprogramming facilities.

Julia has foreign function interfaces for C/Fortran, C++, Python, R, Java, and many other languages. Julia can also be embedded in other programs through its embedding API. Specifically, Python programs can call Julia using PyJulia. R programs can do the same with R's JuliaCall, which is demonstrated by calling MixedModels.jl from R.

Parallel Computing

parallel prefix graphical result

Parallel and Heterogeneous Computing

Julia is designed for parallelism, and provides built-in primitives for parallel computing at every level: instruction level parallelism, multi-threading and distributed computing. The Celeste.jl project achieved 1.5 PetaFLOP/s on the Cori supercomputer at NERSC using 650,000 cores.

The Julia compiler can also generate native code for GPUs. Packages such as DistributedArrays.jl and Dagger.jl provide higher levels of abstraction for parallelism. Distributed Linear Algebra is provided by packages like Elemental.jl and TSVD.jl.

Machine Learning

cartpole reinforcement learning problem visualization

Scalable Machine Learning

Julia provides powerful tools for deep learning (Flux.jl and Knet.jl), machine learning and AI. Julia’s mathematical syntax makes it an ideal way to express algorithms just as they are written in papers, build trainable models with automatic differentiation, GPU acceleration and support for terabytes of data with JuliaDB.

Julia's rich machine learning and statistics ecosystem includes capabilities for generalized linear models, decision trees, and clustering. You can also find packages for Bayesian Networks and Markov Chain Monte Carlo.

Scientific Computing

Lorenz Attractor visualization

Rich Ecosystem for Scientific Computing

Julia is designed from the ground up to be very good at numerical and scientific computing. This can be seen in the abundance of scientific tooling written in Julia, such as the state-of-the-art differential equations ecosystem (DifferentialEquations.jl), optimization tools (JuMP.jl and Optim.jl), iterative linear solvers (IterativeSolvers.jl), a robust framework for Fourier transforms (AbstractFFTs.jl), a general purpose quantum simulation framework (Yao.jl), and many more, that can drive all your simulations.

Julia also offers a number of domain-specific ecosystems, such as in biology (BioJulia), operations research (JuliaOpt), image processing (JuliaImages), quantum physics (QuantumBFS, QuantumOptics), nonlinear dynamics (JuliaDynamics), quantitative economics (QuantEcon), astronomy (JuliaAstro) and ecology (EcoJulia). With a set of highly enthusiastic developers and maintainers from various parts of the scientific community, this ecosystem will only continue to get bigger and bigger.

Data Science

Visualization of weighted data changing as more data is plotted

Interact with your Data

The Julia data ecosystem lets you load multidimensional datasets quickly, perform aggregations, joins and preprocessing operations in parallel, and save them to disk in efficient formats. You can also perform online computations on streaming data with OnlineStats.jl. Whether you're looking for the convenient and familiar DataFrames, or a new approach with JuliaDB, Julia provides you a rich variety of tools. The Queryverse provides query, file IO and visualization functionality. In addition to working with tabular data, the JuliaGraphs packages make it easy to work with combinatorial data.

Julia can work with almost all databases using JDBC.jl and ODBC.jl drivers. In addition, it also integrates with the Hadoop ecosystem using Spark.jl, HDFS.jl, and Hive.jl.

Visualization

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

Data Visualization and Plotting

Data visualization has a complicated history. Plotting software makes trade-offs between features and simplicity, speed and beauty, and a static and dynamic interface. Some packages make a display and never change it, while others make updates in real-time.

Plots.jl is a visualization interface and toolset. It provides a common API across various backends, like GR.jl, PyPlot.jl, and PlotlyJS.jl. Users who prefer a more grammar of graphics style API might like the pure Julia Gadfly.jl plotting package. VegaLite.jl provides the Vega-Lite grammar of interactive graphics interface as a Julia package. For those who do not wish to leave the comfort of the terminal, there is also UnicodePlots.jl.






JuliaCon 2019






Packages



Julia has been downloaded over 13 million times and the Julia community has registered over 3,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 one!







Recent Blog Posts



GSoC and JSoC 2020 Project List

GSoC and JSoC 2020 Project List

Julia 1.5 Feature Preview: Time Traveling (Linux) Bug Reporting

Julia 1.5 is gaining a cool new bug reporting capability, leveraging mozilla's rr project to automatically create fully-reproducible bug reports

Google's Code-In Contest Wrap up

Over the last couple of months, 212 young people have completed over 690 tasks using Julia as part of the Google Code-In program.






Talk to us








Editors and IDEs



SublimeText

Sublime logo

NotePad++

Notepad Plus Plus logo



Essential Tools



Debugger

Debugger

Revise

Revise Logo

GPUs

Julia GPU Logo