欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Julia
来自开放百科 - 灰狐
(版本间的差异)
小 (→IDE) |
小 (→新闻) |
||
(未显示1个用户的53个中间版本) | |||
第1行: | 第1行: | ||
{{SeeWikipedia|Julia (programming language)}} | {{SeeWikipedia|Julia (programming language)}} | ||
+ | [[文件:julialang.png|right]] | ||
− | + | [[文件:julia-computing.png|right]] | |
+ | Julia是一个面向科学计算的高性能动态高级程序设计语言,其语法与其他科学计算语言相似,在许多情况下拥有能与编译型语言相媲美的性能,主要用于数值计算,但不仅仅只有这些,它有着广泛的生态系统。 | ||
− | 受[[MATLAB]]和[[Mathematica]] | + | ==新闻== |
+ | *[https://www.infoq.cn/article/B0dpMASUNf3LBB8y2Svq 开源编程语言 Julia 融资 2400 万美元,人气 10 倍速飙升] (2021.07) | ||
+ | *[https://mp.weixin.qq.com/s/alHRzMmHaFABbZZO5mUt0g 集Python、C++、R为一体!Julia 1.0重磅发布] (2018.08) | ||
+ | |||
+ | ==简介== | ||
+ | [https://julialang.org/blog/2012/02/why-we-created-julia-zh_CN 为什么我们要创造Julia] | ||
+ | |||
+ | 我们想要的是一个自由开源的语言,并且它同时拥有[[C programming language|C]]的速度和[[Ruby]]的动态性;我们想要一个具有同像性(可以将语言的脚本本身当作数据进行处理)的语言, 它有着真正的和[[lisp]]一样的宏,但是却像[[MATLAB]]一样有着显然的,类似于数学表达式的标记;我们想要一个既可以像[[Python]]一样作为通用编程语言的工具, 又可以像[[R]]那样适用于统计分析,能像[[Perl]]那样自然地处理字符串,能像[[MATLAB]]那样给力地处理矩阵运算,它还要能像shell一样作为胶水将各种程序粘合在一起;我们想要一个简单易学的语言,同时它还能让最苛刻的魔法师们([[hacker|hackers]])开心。我们希望它是交互式的,但我们也希望它能被编译。 | ||
+ | |||
+ | 受[[MATLAB]]和[[Mathematica]]Wolfram等编程语言启发,Julia可简单看作数值计算和科学计算领域一个开源的编程语言,Julia采用MIT许可协议。 | ||
+ | |||
+ | 除了语言本身的优点,Julia 还拥有非常强大的生态系统,主要应用于[[Data visualization|数据可视化]]、通用计算、[[data science|数据科学]]、[[machine learning|机器学习]]、科学领域、[[parallel computing|并行计算]]六大领域。 | ||
==特点== | ==特点== | ||
− | * | + | * 核心语言非常小,标准库用的是Julia语言本身写的; |
− | * | + | *擅长于数值计算,其语法非常适合数学; |
− | * | + | * 调用许多其它成熟的高性能基础代码:如线性代数、随机数生成、快速傅里叶变换、字符串处理等; |
− | * | + | * 丰富的用于建立或描述对象的类型语法; |
− | * | + | * 高性能,接近于静态编译型语言,包括用户自定义类型等; |
− | * | + | * 为并行计算和分布式计算而设计; |
− | * 优雅的可扩展的类型转换/ | + | * 轻量级协程; |
+ | * 优雅的可扩展的类型转换/提升; | ||
* 支持Unicode,包括但不限于UTF-8 | * 支持Unicode,包括但不限于UTF-8 | ||
− | * | + | * 可直接调用C函数(不需要包装或是借助特殊的API); |
− | * | + | * 有类似shell的进程管理能力; |
− | * 有类似[[Lisp]] | + | * 有类似[[Lisp]]的宏以及其它元编程工具。 |
+ | |||
+ | ==版本== | ||
+ | *[https://julialang.org/blog/2018/08/one-point-zero-zh_cn 1.0] | ||
+ | *[https://github.com/JuliaLang/julia/releases/tag/v0.6.0 0.6] | ||
+ | *[https://github.com/JuliaLang/julia/releases/tag/v0.5.2 0.5] | ||
==指南== | ==指南== | ||
+ | $ brew cask install julia // macOS | ||
+ | julia> versioninfo() | ||
+ | julia> varinfo() | ||
+ | julia> x = typemax(Int64) | ||
+ | 9223372036854775807 | ||
+ | julia> for T in [Int8,Int16,Int32,Int64,Int128,UInt8,UInt16,UInt32,UInt64,UInt128] | ||
+ | println("$(lpad(T,7)): [$(typemin(T)),$(typemax(T))]") | ||
+ | end | ||
+ | Int8: [-128,127] | ||
+ | Int16: [-32768,32767] | ||
+ | Int32: [-2147483648,2147483647] | ||
+ | Int64: [-9223372036854775808,9223372036854775807] | ||
+ | Int128: [-170141183460469231731687303715884105728,170141183460469231731687303715884105727] | ||
+ | UInt8: [0,255] | ||
+ | UInt16: [0,65535] | ||
+ | UInt32: [0,4294967295] | ||
+ | UInt64: [0,18446744073709551615] | ||
+ | UInt128: [0,340282366920938463463374607431768211455] | ||
+ | julia> function f(x,y) | ||
+ | x + y | ||
+ | end | ||
+ | julia> f(2,3) | ||
+ | 5 | ||
− | == | + | ==Jupyter== |
− | *[ | + | [https://github.com/JuliaLang/IJulia.jl IJulia] Julia kernel for [[Jupyter]] |
− | *[http:// | + | julia> using Pkg |
+ | julia> Pkg.add("IJulia") | ||
+ | julia> Pkg.build("IJulia") | ||
+ | julia> using IJulia | ||
+ | julia> notebook() | ||
+ | |||
+ | $ jupyter notebook --ip=127.0.0.1 | ||
+ | 新建Julia 1.0.0的notebook | ||
+ | |||
+ | ==项目== | ||
+ | *[https://github.com/svaksha/Julia.jl Awesome Julia] [[image:awesome.png]] | ||
+ | *[https://github.com/svaksha/Julia.jl/blob/master/Mathematics.md Julia Mathematical] | ||
+ | *[[Juno]] is built on [[atom editor|Atom]]. | ||
+ | *[http://www.mpfr.org/ The GNU MPFR Library] | ||
+ | *[https://gmplib.org/ The GNU MP Bignum Library] | ||
+ | *[[Jupyter]] | ||
+ | *[[Light Table]] | ||
+ | *[https://juliastats.github.io/ JuliaStats] Statistics and [[Machine learning]] made easy in Julia. | ||
+ | *[https://github.com/JuliaComputing/JuliaDB.jl JuliaDB] 并行分析型数据库 | ||
+ | |||
+ | ==C/C++== | ||
+ | Julia语言[https://github.com/JuliaLang/julia/tree/master/src 核心]由[[c programming language|C语言]]和[[C++]]编写。 | ||
+ | |||
+ | ==数学物理== | ||
+ | *[https://github.com/svaksha/Julia.jl/blob/master/Mathematics.md Mathematics] | ||
+ | *[https://github.com/svaksha/Julia.jl/blob/master/Physics.md Physics] | ||
+ | *[https://github.com/JuliaOpt/JuMP.jl JuMP] | ||
+ | *[http://juliadiffeq.org/ Differential Equations] 微分方程 | ||
+ | *[https://github.com/JuliaMath/IterativeSolvers.jl Iterative Solvers] 迭代求解 | ||
+ | *[https://qojulia.org/ Quantum Dynamics] 量子动力学 | ||
+ | *[https://github.com/JuliaDynamics Nonlinear Dynamics] 非线性动力学 | ||
+ | *[https://juliaastro.github.io/ Astronomy and Astrophysics] 天文学和天体物理学 | ||
+ | *[https://julialang.org/blog/2019/04/fluxdiffeq-zh_tw DiffEqFlux.jl – Julia 的神經微分方程套件] | ||
+ | |||
+ | ==包== | ||
+ | *[https://docs.julialang.org/en/stable/stdlib/Pkg/ Pkg文档] | ||
+ | *[https://pkg.julialang.org/ Package] | ||
+ | *[https://github.com/JuliaLang/Pkg.jl Pkg.jl] | ||
+ | |||
+ | ==图书== | ||
+ | *[https://en.wikibooks.org/wiki/Introducing_Julia Introducing Julia] | ||
==图集== | ==图集== | ||
+ | <gallery> | ||
+ | image:julia-python-r.png|Julia-Python-R | ||
+ | image:Julia-using-jupyter.png|使用Jupyter | ||
+ | image:type-hierarchy-for-julia-numbers.png|数值类型 | ||
+ | </gallery> | ||
==链接== | ==链接== | ||
*[http://julialang.org/ Julia官网] | *[http://julialang.org/ Julia官网] | ||
+ | *[https://github.com/JuliaLang/julia Julia @ GitHub] | ||
+ | *[http://juliacon.org/ JuliaCon] | ||
+ | *[https://julia.mit.edu/ Julia Lab @ MIT] | ||
*[http://docs.huihoo.com/julia Julia文档] | *[http://docs.huihoo.com/julia Julia文档] | ||
+ | *[https://juliacomputing.com/ Julia Computing] | ||
+ | *[https://github.com/JuliaCN/julia_zh_cn Julia中文计划] | ||
+ | *[https://archive.is/YzR6y Is Julia the Future for Big Data Analytics?] | ||
[[category:programming language]] | [[category:programming language]] | ||
− | [[category: | + | [[category:data science]] |
+ | [[category:data analysis]] | ||
+ | [[category:computational science]] | ||
[[category:mathematics]] | [[category:mathematics]] | ||
+ | [[category:numerical analysis]] | ||
+ | [[category:LLVM]] | ||
+ | [[category:jupyter]] | ||
+ | [[category:huihoo]] |
2021年7月27日 (二) 07:07的最后版本
您可以在Wikipedia上了解到此条目的英文信息 Julia Thanks, Wikipedia. |
Julia是一个面向科学计算的高性能动态高级程序设计语言,其语法与其他科学计算语言相似,在许多情况下拥有能与编译型语言相媲美的性能,主要用于数值计算,但不仅仅只有这些,它有着广泛的生态系统。
目录 |
[编辑] 新闻
- 开源编程语言 Julia 融资 2400 万美元,人气 10 倍速飙升 (2021.07)
- 集Python、C++、R为一体!Julia 1.0重磅发布 (2018.08)
[编辑] 简介
我们想要的是一个自由开源的语言,并且它同时拥有C的速度和Ruby的动态性;我们想要一个具有同像性(可以将语言的脚本本身当作数据进行处理)的语言, 它有着真正的和lisp一样的宏,但是却像MATLAB一样有着显然的,类似于数学表达式的标记;我们想要一个既可以像Python一样作为通用编程语言的工具, 又可以像R那样适用于统计分析,能像Perl那样自然地处理字符串,能像MATLAB那样给力地处理矩阵运算,它还要能像shell一样作为胶水将各种程序粘合在一起;我们想要一个简单易学的语言,同时它还能让最苛刻的魔法师们(hackers)开心。我们希望它是交互式的,但我们也希望它能被编译。
受MATLAB和MathematicaWolfram等编程语言启发,Julia可简单看作数值计算和科学计算领域一个开源的编程语言,Julia采用MIT许可协议。
除了语言本身的优点,Julia 还拥有非常强大的生态系统,主要应用于数据可视化、通用计算、数据科学、机器学习、科学领域、并行计算六大领域。
[编辑] 特点
- 核心语言非常小,标准库用的是Julia语言本身写的;
- 擅长于数值计算,其语法非常适合数学;
- 调用许多其它成熟的高性能基础代码:如线性代数、随机数生成、快速傅里叶变换、字符串处理等;
- 丰富的用于建立或描述对象的类型语法;
- 高性能,接近于静态编译型语言,包括用户自定义类型等;
- 为并行计算和分布式计算而设计;
- 轻量级协程;
- 优雅的可扩展的类型转换/提升;
- 支持Unicode,包括但不限于UTF-8
- 可直接调用C函数(不需要包装或是借助特殊的API);
- 有类似shell的进程管理能力;
- 有类似Lisp的宏以及其它元编程工具。
[编辑] 版本
[编辑] 指南
$ brew cask install julia // macOS julia> versioninfo() julia> varinfo() julia> x = typemax(Int64) 9223372036854775807 julia> for T in [Int8,Int16,Int32,Int64,Int128,UInt8,UInt16,UInt32,UInt64,UInt128] println("$(lpad(T,7)): [$(typemin(T)),$(typemax(T))]") end Int8: [-128,127] Int16: [-32768,32767] Int32: [-2147483648,2147483647] Int64: [-9223372036854775808,9223372036854775807] Int128: [-170141183460469231731687303715884105728,170141183460469231731687303715884105727] UInt8: [0,255] UInt16: [0,65535] UInt32: [0,4294967295] UInt64: [0,18446744073709551615] UInt128: [0,340282366920938463463374607431768211455] julia> function f(x,y) x + y end julia> f(2,3) 5
[编辑] Jupyter
IJulia Julia kernel for Jupyter
julia> using Pkg julia> Pkg.add("IJulia") julia> Pkg.build("IJulia") julia> using IJulia julia> notebook()
$ jupyter notebook --ip=127.0.0.1
新建Julia 1.0.0的notebook
[编辑] 项目
- Awesome Julia
- Julia Mathematical
- Juno is built on Atom.
- The GNU MPFR Library
- The GNU MP Bignum Library
- Jupyter
- Light Table
- JuliaStats Statistics and Machine learning made easy in Julia.
- JuliaDB 并行分析型数据库
[编辑] C/C++
[编辑] 数学物理
- Mathematics
- Physics
- JuMP
- Differential Equations 微分方程
- Iterative Solvers 迭代求解
- Quantum Dynamics 量子动力学
- Nonlinear Dynamics 非线性动力学
- Astronomy and Astrophysics 天文学和天体物理学
- DiffEqFlux.jl – Julia 的神經微分方程套件
[编辑] 包
[编辑] 图书
[编辑] 图集
[编辑] 链接
分享您的观点