Getting Started Julia
无论是使用预编译二进制文件还是从源代码编译,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.0.1 (2018-09-29)
_/ |\__'_|_|_|\__'_| |
|__/ |
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 | 打印此邮件 | |
-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} | 如果可用,请使用系统映像中的本机代码 | |
--compile | d-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()是真的 | |
-q, --quiet | 安静的启动:没有横幅,抑制REPL警告 | |
--banner={yes no auto} | 启用或禁用启动横幅 | |
--color={yes no auto} | 启用或禁用彩色文本 | |
--history-file={yes no} | 加载或保存历史记录 | |
--depwarn={yes no error} | 启用或禁用语法和方法弃用警告(error将警告转换为错误) | |
--warn-overwrite={yes no} | 启用或禁用方法覆盖警告 | |
-C, --cpu-target <target> | 限制CPU功能的使用最多<target>; 设置为help查看可用选项 | |
-O, --optimize={0,1,2,3} | 设置优化级别(如果未指定,则默认级别为2;如果不使用级别,则默认级别为3) | |
-g, -g <level> | 启用/设置调试信息生成的级别(如果未指定,则默认级别为1;如果不使用级别,则默认级别为2) | |
--inline={yes no} | 控制是否允许内联,包括覆盖@inline声明 | |
--check-bounds={yes no} | 始终或从不发出边界检查(忽略声明) | |
--math-mode={ieee,fast} | 禁止或启用不安全的浮点优化(覆盖@fastmath声明) | |
--code-coverage={none user all} | 计算源代码行的执行次数 | |
--code-coverage | 相当于 --code-coverage=user | |
--track-allocation={none user all} | 计算每个源行分配的字节数 | |
--track-allocation | 相当于 --track-allocation=user |