Julia语言的介绍
来源:互联网 发布:m51风衣 知乎 编辑:程序博客网 时间:2024/05/01 18:40
本文为作者Julia官网翻译,水平有限,还望指教。
https://julialang.org/
Julia语言的介绍
Julia是高性能的动态高级科学计算语言,提供了精致的编译器(sophisticated compiler),分布式并行计算(distributed parallel execution),数值精度(numerical accuracy),和一个可扩展的科学函数库。Julia的基础库是用Julia自身编写的,成熟的合并了(integrates mature),最佳版本的C和Fortran的线性代数,随机数字生成,单线程,字符处理的库。另外,Julia开发者社区也提供了一系列的可扩展包,使用的是Julia内置的快速空间(rapid pace)的包管理工具。IJulia结合了Jupyter和Julia社区,提供了一个强大的基于浏览器的图形笔记界面。
Julia程序是被组织成多样的数据类型(multiple dispatch),定义函数方法和过载的时候,不同的内容类型组合,可以被用户定义。
特点介绍(A Summary of Features)
1.多样的数据类型(multiple dispatch),提供在一个函数中交叉组合不同数据类型的能力。
2.动态类型系统,文件类型,最优化,分派(dispatch)。
3.高性能,接近静态编译语言,C。
4.内置包管理器。
5.类似LISP的宏指令(macros),和其他的元编程组件。
6.调用Python函数,用PyCall包。
7.可以直接调用C函数,不用封装器或者特殊的API。
8.强大的类shell进程管理能力。
9.平行分布式计算设计。
10.协同协议为轻量级“绿色"线程。
11.快速的用户自定义类型,内置,紧凑。
12.自动高效的生成特殊代码,对用不同的内容(argument )类型。
13.优雅可扩展的数据和其他类型的转化和建立。
14.高效支持Unicode,包括但不仅限于UTF-8。
15.MIT许可证,免费开源自由。
高性能JIT编译器(High-Performance JIT Compiler)
Julia是基于LLVM的实时编译器,性能对比如下图所示。
function mandel(z) c = z maxiter = 80 for n = 1:maxiter if abs(z) > 2 return n-1 end z = z^2 + c end return maxiterendfunction 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] = trace((P.'*P)^4) w[i] = trace((Q.'*Q)^4) end std(v)/mean(v), std(w)/mean(w)end
以上的代码十分的清晰,任何一个有过科学计算语言编程经验的人都会看懂。在不放弃性能的情况下比C++更加的简单。根据设计,Julia允许用户从低级的循环,到高级的编程风格,在牺牲部分性能的情况下,是的复杂的算法可以快速的处理。这个可持续的设计级现象是Julia接近编码的特点,也是这个语言的最重要的设计风格。
为平行和云计算而设计(Designed for Parallelism and Cloud Computing)
Julia在用户不强制任何特殊的平行类型,反而,一共了一系列的关键创建分布式空间(key building blocks for distributed computation),使得足够灵活去支持不同的数据类型,允许用户添加更多。下面的代码显示了如何在平行状态下投硬币的计算。
nheads = @parallel (+) for i=1:100000000 rand(Bool)end
IJulia和Gadfly分别是类似于Jupyter的网页编译环境和多样的数值计算图像显示包。
参考文献
1.https://julialang.org/
0 0
- Julia语言的介绍
- 最好的Julia语言
- Julia语言:大学都要学会的语言
- Julia编程语言
- 初试 Julia 语言
- Julia语言之 Dict
- Julia语言基本语法
- 扩展windows下julia语言的时间串处理函数
- 随机器学习兴起的Julia编程语言
- 随机器学习兴起的Julia编程语言
- julia语言做数据预处理
- Julia曲线的生成
- Julia:Datetime的用法
- Julia :PyPlot的plot_date
- 编程语言新宠儿 - Julia诞生记
- 在Julia语言中调用Python
- Julia语言简介与环境安装
- Julia语言之变量名 UTF8
- 如何定位和解决Andorid的内存溢出问题(大总结)
- 动态规划练习一 03:采药
- 安排教学计划
- HTML+CSS小白入门
- 迭代器测试
- Julia语言的介绍
- 关于银行家算法!
- (转)因巨亏而著名的10大魔鬼交易员
- CSS3 rgba浅析
- Python中的requests
- 改变对话框背景色
- (转)总统背后的对冲基金:文艺复兴CEO用巨资和大数据托起特朗普
- 题目1069:查找学生信息
- 仿微信 JS-Wechat。React_Native