简介
此条目介绍的是计算机程序语言。关于日本AV女优,请见“JULIA (AV女优)”。Julia编程范型多范式:多分派, 过程式, 函数式, 元编程, 多阶段编程(英语:Multi-stage_programming)设计者Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah实现者Jeff Bezanson, Stefan Karpinski, Viral B. Shah等发行时间2012年,10年前(2012)实现语言Julia, C, C++, Scheme, LLVM系统平台x86-64, IA-32, ARM v8(64位), CUDA, ARM (32位), PowerPC, 网页浏览器 (JavaScript、WebAssembly)操作系统macOS, Windows, Linux, FreeBSD, Android许可证MIT许可证文件扩展名.jl网站JuliaLang.org启发语言CDylanLispLuaMathematica (严格说是其Wolfram语言)MATLABPerlPythonRRubyScheme 教科书中有关zh:Introducing Julia的文本Julia是一种高级通用动态编程语言,它最初是为了满足高性能数值分析和计算科学的需要而设计的,不需要解释器,速度快,也可用于客户端和服务器的Web用途、低级系统编程或用作规约语言。Julia设计的独特之处包括,参数多态的类型系统,完全动态语言中的类型,以及它多分派的核心编程范型。它允许并发、并行和分布式计算,并直接调用C和Fortran库而不使用粘合代码。Julia拥有垃圾回收机制,使用及早求值,包含了用于浮点计算、线性代数、随机数生成和正则表达式匹配的高效库。有许多库可以使用,其中一些(如用于快速傅里叶变换的库)已经预先捆绑在Julia里。
历史
一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。他们想要的是一个开源的软件,它要像C语言一般快速而又拥有如同Ruby的动态性;要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的。
该项目大约于2009年中开始。
功能
主要用于数值计算。
特点
核心语言非常小。标准库用的是Julia语言本身写的
调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。
丰富的用于创建或描述对象的类型语法
高性能,接近于静态编译型语言。包括用户自定义类型等
为并行计算和分布式计算而设计
轻量级协程
优雅的可扩展的类型转换/提升
支持Unicode,包括但不限于UTF-8
可直接调用C函数(不需要包装或是借助特殊的API)
有类似shell的进程管理能力
有类似Lisp的宏以及其它元编程工具
可与Jupyter notebook 一起使用
示例
生成Mandelbrot集合
function mandel(z) c = z max = 80 for n = 1:max if abs(z) > 2 return n-1 end z = z^2 + c end return maxend
随机矩阵统计
using LinearAlgebra: trusing Statistics #导入std, mean等函数function randmatstat(t) n = 5 v = zeros(t) w = zeros(t) for i = 1:t a = randn(n,n) b = randn(n,n) c = randn(n,n) d = randn(n,n) P = Q = v = tr((P'*P)^4) w = tr((Q'*Q)^4) end std(v)/mean(v), std(w)/mean(w)end
参考资料
^ LICENSE.md. GitHub. . (原始内容存档于2021-01-23).
^ Contributors to JuliaLang/julia. GitHub. . (原始内容存档于2021-01-23).
^ 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Why We Created Julia. Julia website. February 2012 . (原始内容存档于2019-02-19).
^ Julia. Julia. NumFocus project. . (原始内容存档于2017-02-21). Julia’s Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for …
^ Fischer, Keno. Running julia on wasm. 2019-07-22 . (原始内容存档于2020-11-21).
^ Download Julia – Currently supported platforms. Julia. . (原始内容存档于2021-01-26).
^ The Julia Language: A fresh approach to technical computing. Termux/Android. Github. . (原始内容存档于2020-12-27).
^ Stokel-Walker, Chris. Julia: The Goldilocks language. Increment. Stripe. . (原始内容存档于2020-11-09).
^ 9.0 9.1 9.2 9.3 Home · The Julia Language. docs.julialang.org. . (原始内容存档于2021-01-11) (英语).
^ Programming Language Network. GitHub. . (原始内容存档于2020-12-20).
^ JuliaCon 2016. JuliaCon. . (原始内容存档于2021-02-03). He has co-designed the programming language Scheme, which has greatly influenced the design of Julia
^ https://github.com/JuliaLang/julia/releases.
^ The Julia Language (official website). . (原始内容存档于2017-02-21). General Purpose Julia lets you write UIs, statically compile your code, or even deploy it on a webserver.
^ Bryant, Avi. Matlab, R, and Julia: Languages for data analysis. O’Reilly Strata. 15 October 2012 . (原始内容存档于2013-05-24).
^ Singh, Vicky. Julia Programming Language – A True Python Alternative. Technotification. 23 August 2015 . (原始内容存档于2020-11-09).
^ Krill, Paul. New Julia language seeks to be the C for scientists. InfoWorld. 18 April 2012 . (原始内容存档于2014-09-13).
^ Finley, Klint. Out in the Open: Man Creates One Programming Language to Rule Them All. Wired. 3 February 2014 . (原始内容存档于2016-12-20).
^ Escher : With Escher you can build beautiful Web Uls entirely in Julia. Shasi.github.io. . (原始内容存档于2016-03-04).
^ Getting Started with Node Julia · Node Julia. Node-julia.readme.io. . (原始内容存档于2020-10-21).
^ Moss, Robert. Using Julia as a Specification Language for the Next-Generation Airborne Collision Avoidance System. 26 June 2015 . (原始内容存档于2015-07-01). Airborne collision avoidance system
^ Suspending Garbage Collection for Performance…good idea or bad idea?. Groups.google.com. . (原始内容存档于2011-01-22).
^ (now available with using FFTW
in current versions; that dependency is one of many moved out of the standard library to a package because it is GPL licensed, and thus is not included in Julia 1.0 by default.) Remove the FFTW bindings from Base by ararslan · Pull Request #21956 · JuliaLang/julia. GitHub. . (原始内容存档于2019-02-16) (英语).
^ Why We Created Julia. . (原始内容存档于2016-01-18).
参阅
.mw-parser-output .div-col{margin-top:0.3em;column-width:30em;column-count:2}.mw-parser-output .div-col-small{font-size:90%}.mw-parser-output .div-col-rules{column-rule:1px solid #aaa}.mw-parser-output .div-col dl,.mw-parser-output .div-col ol,.mw-parser-output .div-col ul{margin-top:0}.mw-parser-output .div-col li,.mw-parser-output .div-col dd{page-break-inside:avoid;break-inside:avoid-column}
Matlab
GNU Octave
R语言
Mathematica
SageMath