Julia语言
脚本错误:没有“about”这个模块。 Template:RoughTranslation Template:NoteTA 脚本错误:没有“Infobox”这个模块。脚本错误:没有“Check for unknown parameters”这个模块。
Julia是一种高级通用[1]动态编程语言,它最初是为了满足高性能数值分析和计算科学的需要而设计的,不需要解释器,速度快[2][3][4][5],也可用于客户端和服务器的Web用途[6][7]、低级系统编程或用作规约语言[8]。
Julia设计的独特之处包括,参数多态的类型系统,完全动态语言中的类型,以及它多分派的核心编程范型。它允许并发、并行和分布式计算,并直接调用C和Fortran库而不使用粘合代码。
Julia拥有垃圾回收机制[9],使用及早求值,包含了用于浮点计算、线性代数、随机数生成和正则表达式匹配的高效库。有许多库可以使用,其中一些(如用于快速傅里叶变换的库)已经预先捆绑在Julia里[10]。
历史[编辑]
该项目大约于2009年中旬由四位电脑科学家共同计划。这个工具存在一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。他们想要的是一个开源的软件,它要像C语言一般快速而又拥有如同Ruby的动态性;要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的。[11]
特点[编辑]
功能[编辑]
- 主要用于数值计算。
其他[编辑]
- 核心语言非常小。标准库用的是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 max
end
随机矩阵统计[编辑]
using LinearAlgebra: tr
using 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 = [a b c d]
Q = [a b; c d]
v[i] = tr((P'*P)^4)
w[i] = tr((Q'*Q)^4)
end
std(v)/mean(v), std(w)/mean(w)
end
参考资料[编辑]
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ 脚本错误:没有“citation/CS1”这个模块。
- ↑ (now available with
using FFTWin 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.) Template:Cite web - ↑ Template:Cite web
参阅[编辑]
页面Template:Div col/styles.css没有内容。
外部链接[编辑]
- Template:Official website(英文)
- 源代码 (页面存档备份,存于互联网档案馆)(英文)
- 中文社区 (页面存档备份,存于互联网档案馆)(脚本错误:没有“lan”这个模块。)
- 中文文档 (页面存档备份,存于互联网档案馆)(脚本错误:没有“lan”这个模块。)
Template:Differentiable computing 脚本错误:没有“Navbox”这个模块。 脚本错误:没有“Navbox”这个模块。