Julia

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(IDE)
(新闻)
 
(未显示1个用户的53个中间版本)
第1行: 第1行:
 
{{SeeWikipedia|Julia (programming language)}}
 
{{SeeWikipedia|Julia (programming language)}}
 +
[[文件:julialang.png|right]]
  
Julia是一个面向科学计算的高性能动态高级程序设计语言,其语法与其他科学计算语言相似,在许多情况下拥有能与编译型语言相媲美的性能,主要用于数值计算。
+
[[文件:julia-computing.png|right]]
 +
Julia是一个面向科学计算的高性能动态高级程序设计语言,其语法与其他科学计算语言相似,在许多情况下拥有能与编译型语言相媲美的性能,主要用于数值计算,但不仅仅只有这些,它有着广泛的生态系统。
  
受[[MATLAB]]和[[Mathematica]]Wolfram等编程语言启发,Julia可看数值计算和科学计算领域一个开源的编程语言。
+
==新闻==
 +
*[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语言本身写的
+
* 核心语言非常小,标准库用的是Julia语言本身写的;
* 调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理等。
+
*擅长于数值计算,其语法非常适合数学;
* 丰富的用于建立或描述对象的类型语法
+
* 调用许多其它成熟的高性能基础代码:如线性代数、随机数生成、快速傅里叶变换、字符串处理等;
* 高性能,接近于静态编译型语言。包括用户自定义类型等
+
* 丰富的用于建立或描述对象的类型语法;
* 为并行计算和分布式计算而设计
+
* 高性能,接近于静态编译型语言,包括用户自定义类型等;
* 轻量级协程
+
* 为并行计算和分布式计算而设计;
* 优雅的可扩展的类型转换/提升
+
* 轻量级协程;
 +
* 优雅的可扩展的类型转换/提升;
 
* 支持Unicode,包括但不限于UTF-8
 
* 支持Unicode,包括但不限于UTF-8
* 可直接调用C函数(不需要包装或是借助特殊的API)
+
* 可直接调用C函数(不需要包装或是借助特殊的API);
* 有类似shell的进程管理能力
+
* 有类似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
  
==IDE==
+
==Jupyter==
*[http://lighttable.com/ Light Table]
+
[https://github.com/JuliaLang/IJulia.jl IJulia] Julia kernel for [[Jupyter]]
*[http://junolab.org/ Juno]
+
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:LLVM]]
+
[[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-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 Julia Thanks, Wikipedia.
Julialang.png
Julia-computing.png

Julia是一个面向科学计算的高性能动态高级程序设计语言,其语法与其他科学计算语言相似,在许多情况下拥有能与编译型语言相媲美的性能,主要用于数值计算,但不仅仅只有这些,它有着广泛的生态系统。

目录

[编辑] 新闻

[编辑] 简介

为什么我们要创造Julia

我们想要的是一个自由开源的语言,并且它同时拥有C的速度和Ruby的动态性;我们想要一个具有同像性(可以将语言的脚本本身当作数据进行处理)的语言, 它有着真正的和lisp一样的宏,但是却像MATLAB一样有着显然的,类似于数学表达式的标记;我们想要一个既可以像Python一样作为通用编程语言的工具, 又可以像R那样适用于统计分析,能像Perl那样自然地处理字符串,能像MATLAB那样给力地处理矩阵运算,它还要能像shell一样作为胶水将各种程序粘合在一起;我们想要一个简单易学的语言,同时它还能让最苛刻的魔法师们(hackers)开心。我们希望它是交互式的,但我们也希望它能被编译。

MATLABMathematicaWolfram等编程语言启发,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

[编辑] 项目

[编辑] C/C++

Julia语言核心C语言C++编写。

[编辑] 数学物理

[编辑]

[编辑] 图书

[编辑] 图集

[编辑] 链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱