没有合适的资源?快使用搜索试试~ 我知道了~
Julia中文教程1.0.pdf
需积分: 10 17 下载量 4 浏览量
2019-08-19
06:07:18
上传
评论
收藏 8.59MB PDF 举报
温馨提示
试读
1801页
julia文档(亲手整理,花了好些时间) 传统上,科学计算需要最高的性能,但领域专家在很大程度上转向使用较慢的动态语言进行日常工作。我们认为有很多很好的理由喜欢这些应用程序的动态语言,我们不希望它们的使用减少。幸运的是,现代语言设计和编译器技术可以大大消除性能折衷,并提供足够的单一环境来进行原型设计,并且足够高效地部署性能密集型应用程序。Julia编程语言充当了这个角色:它是一种灵活的动态语言,适用于科学和数值计算,其性能可与传统的静态类型语言相媲美。
资源推荐
资源详情
资源评论
介绍
传统上,科学计算需要最高的性能,但领域专家在很大程度上转向使用较慢的
动态语言进行日常工作。我们认为有很多很好的理由喜欢这些应用程序的动态
语言,我们不希望它们的使用减少。幸运的是,现代语言设计和编译器技术可
以大大消除性能折衷,并提供足够的单一环境来进行原型设计,并且足够高效
地部署性能密集型应用程序。
Julia
编程语言充当了这个角色:它是一种灵活的
动态语言,适用于科学和数值计算,其性能可与传统的静态类型语言相媲美。
因为
Julia
的编译器与用于
Python
或
R
等语言的解释器不同,您可能会发现
Julia 的性能起初并不直观。如果您发现某些内容很慢,我们强烈建议您在尝试
其他任何内容之前先阅读“效果提示”部分。一旦了解了 Julia 的工作原理,就可
以轻松编写几乎与
C
一样快的代码。
Julia 具有可选的输入,多个调度和良好的性能,使用类型推断和即时(JIT)
编译实现,使用
LLVM
实现。它是多范式的,结合了命令式,功能性和面向对
象编程的特性。
Julia
为高级数值计算提供了易用性和表现力,与
R
,
MATLAB
和 Python 等语言一样,但也支持通用编程。为了实现这一目标,Julia 建立在
数学编程语言的基础之上,但也从流行的动态语言中借鉴了很多,包括
Lisp
,
Perl,Python,Lua 和 Ruby。
Julia 与典型动态语言最重要的不同之处在于:
核心语言很少; Julia Base 和标准库是用 Julia 编写的,包括整数运算等
基本操作
用于构造和描述对象的丰富语言类型,也可以选择用于进行类型声明
通过多次调度在多种参数类型组合中定义函数行为的能力
为不同的参数类型自动生成高效的专用代码
良好的性能,接近像
C
这样的静态编译语言
虽然人们有时会说动态语言是“无类型的”,但它们绝对不是:每个对象,无论
是原始的还是用户定义的,都有一个类型。但是,大多数动态语言中缺少类型
声明意味着无法向编译器指示值的类型,并且通常根本无法明确地讨论类型。
另一方面,在静态语言中,虽然可以 - 通常必须 - 为编译器注释类型,但类型
仅在编译时存在,并且不能在运行时进行操作或表达。在
Julia
中,类型本身就
是运行时对象,也可以用于将信息传递给编译器。
虽然临时程序员不需要显式使用类型或多个调度,但它们是 Julia 的核心统一特
性:函数在参数类型的不同组合上定义,并通过调度到最具体的匹配定义来应
用。这个模型非常适合数学编程,在传统的面向对象的调度中,“拥有”操作的
第一个参数是不自然的。运算符只是带有特殊符号的函数 - 为了扩展新用户定
义数据类型的添加,您可以为
+
函数定义新方法。然后,现有代码无缝地应用于
新数据类型。
部分原因是运行时类型推断(由可选类型注释增强),部分原因是由于项目开
始时对性能的强烈关注,Julia 的计算效率超过了其他动态语言,甚至是静态编
译的竞争对手语言。对于大规模的数值问题,速度始终如一,并且可能始终是
至关重要的:在过去几十年中,正在处理的数据量很容易与摩尔定律保持同步。
Julia
旨在以单一语言创建前所未有的易用性,功能和效率组合。除此之外,
Julia 相比系统的一些优势包括:
免费和开源(
MIT
许可)
用户定义的类型与内置函数一样快速和紧凑
无需对代码进行矢量化以提高性能; devectorized 代码很快
专为并行和分布式计算而设计
轻量级“绿色”线程(协同程序)
不引人注目但功能强大的类型系统
针对数字和其他类型的优雅且可扩展的转换和促销
对
Unicode
的有效支持,包括但不限于
UTF-8
直接调用 C 函数(不需要包装器或特殊 API)
强大的
shell
类功能,用于管理其他进程
类似
Lisp
的宏和其他元编程工具
入门
无论是使用预编译二进制文件还是从源代码编译,
Julia
安装都很简单。按照
https://julialang.org/downloads/上的说明下载并安装 Julia 。
学习和试验 Julia 的最简单方法是通过双击 Julia 可执行文件或 julia 从命令行
运行来启动交互式会话(也称为 read-eval-print 循环或“REPL”):
$ julia
_
_ _ _(_)_ | Documentation:
https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.1.1 (2019-05-16)
_/ |\__'_|_|_|\__'_| |
|__/ |
julia> 1 + 2
3
julia> ans
3
要退出交互式会话,请键入
CTRL-D
(按下
Control / ^
键和
d
键),或键入
exit()。在交互模式下运行时,julia 显示横幅并提示用户输入。一旦用户输
入了完整的表达式,例如 1 + 2,并点击输入,交互式会话将评估表达式并显
示其值。如果将表达式输入到带有分号分号的交互式会话中,则不会显示其值。
ans
无论是否显示,变量都绑定到最后一个已计算表达式的值。该
ans
变量仅
在交互式会话中绑定,而不是在以其他方式运行 Julia 代码时。
要计算在源文件
file.jl
中编写的表达式,请编写
include("file.jl")
。
要以非交互方式在文件中运行代码,可以将其作为 julia 命令的第一个参数:
$ julia script.jl arg1 arg2...
如示例所示,以下命令行参数将 julia 被解释为程序的命令行参数 script.jl,
并在全局常量中传递 ARGS。脚本本身的名称作为全局传递 PROGRAM_FILE。请
注意,
ARGS
当使用
-e
命令行上的选项(请参阅
julia
下面的帮助输出)给出
Julia 表达式时,也会设置该值,但 PROGRAM_FILE 它将为空。例如,要只打印
给脚本的参数,您可以这样做:
$ julia -e 'println(PROGRAM_FILE); for x in ARGS; println(x);
end' foo bar
foo
bar
或者您可以将该代码放入脚本并运行它:
$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x);
end' > script.jl
$ julia script.jl foo bar
script.jl
foo
bar
所述--分隔符可以被用于旨在用于从用于朱莉娅参数的脚本文件单独的命令行
参数:
$ julia --color=yes -O -- foo.jl arg1 arg2..
另请参阅使用脚本的详细信息,写朱莉娅脚本。
Julia 可以使用-p 或--machine-file 选项以并行模式启动。-p n 将启动一个
额外的 n 工作进程,同时--machine-file file 将为文件中的每一行启动一
个
worker file
。
file
必须通过无密码
ssh
登录访问定义的计算机,并将
Julia 安装在与当前主机相同的位置。每个机器定义都采用这种形式
[count*][user@]host[:port] [bind_addr[:port]]。user 默认为当前用
户,
port
标准
ssh
端口。
count
是在节点上生成的
worker
的数量,默认为
1.
optional bind-to bind_addr[:port]指定其他 worker 应用于连接到此
worker
的
IP
地址和端口。
如果您有运行
Julia
时要执行的代码,可以将其放入
~/.julia/config/startup.jl:
$ echo 'println("Greetings! 你好! 안녕하세요?")' >
~/.julia/config/startup.jl
$ julia
Greetings!
你好
!
안녕하세요
?
...
有多种方法可以运行 Julia 代码并提供选项,类似于可用于 perl 和 ruby 程序
的选项:
julia [switches] -- [programfile] [args...]
开关
描述
-v, --version
显示版本信息
-h, --help
打印此邮件
--project[={<dir>|@.}]
将<dir>设置为主项目/环境。默认@。选项
将搜索父目录,直到找到 Project.toml 或
JuliaProject.toml 文件。
-J, --sysimage <file>
启动给定的系统映像文件
-H, --home <dir>
设置 julia 可执行文件的位置
--startup-file={yes|no}
加载 ~/.julia/config/startup.jl
--handle-signals={yes|no}
启用或禁用 Julia 的默认信号处理程序
--sysimage-native-
code={yes|no}
如果可用,请使用系统映像中的本机代码
--compiled-
modules={yes|no}
启用或禁用模块的增量预编译
-e, --eval <expr>
评估 <expr>
-E, --print <expr>
评估<expr>并显示结果
-L, --load <file>
<file>立即加载所有处理器
-p,--procs {N|auto}
整数值 N 启动 N 个额外的本地工作进
程; auto 启动与本地 CPU 线程数(逻辑核
心数)一样多的工作程序
--machine-file <file>
在上面列出的主机上运行进程 <file>
-i
互动模式; REPL 运行并且
isinteractive()是真的
剩余1800页未读,继续阅读
资源评论
yelong0951
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功