因为要运行 cNODE 程序,所以接触了一下 Julia 语言。

Julia

一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。他们想要的是一个开源的软件,它要像C语言一般快速而有拥有如同Ruby的动态性;要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的……

  • 快!

由上图可以看出,Julia 的运行速度是除 C 语言以外几乎最快的。

Julia 一开始就是为高性能而设计的。 Julia 程序通过 LLVM 编译成高效的 多平台 机器码。

  • 动态

Julia 是动态类型的,使用起来像脚本语言,同时有很好的交互体验。

  • 可选类型

Julia 有丰富的数据类型描述语言,标注类型声明可以使程序更清晰可靠。

  • 通用

Julia 使用多分派范式,很容易表达面向对象和函数式编程模式。 同时提供了异步 I/O调试日志性能分析包管理等工具。

  • 易用

Julia 拥有高阶的语法,这让具有不同编程语言背景和经验的程序员都能使用它。查看 Julia 的微基准来感受这门语言吧。

示例

  • Julia与MATLAB语言较为类似。
function mandelbrot(a)
    z = 0
    for i=1:50
        z = z^2 + a
    end
    return z
end

for y=1.0:-0.05:-1.0
    for x=-2.0:0.0315:0.5
        abs(mandelbrot(complex(x, y))) < 2 ? print("*") : print(" ")
    end
    println()
end

# Taken from: https://rosettacode.org/wiki/Mandelbrot_set#Julia

包管理

为什么 Julia 装包这么困难

  • 使用Pkg管理包。打开命令提示符,按 ] 即可进入包管理器。
julia> ]
(v1.1) pkg> status
(v1.1) pkg> add NewPackage
<press Backspace>
julia>
  • 更改软件源
using PkgServerClient # 在 using 时会自动切换到最近的服务器
PkgServerClient.registry_response_time() # 查看所有服务器的延迟
PkgServerClient.set_mirror("NJU") # 使用南京大学的服务器

using Pkg
Pkg.Registry.rm("General")  # 重置 General 注册表,相当于在提示符下输入 pkg> registry rm General
Pkg.Registry.add("General")  # 重置 General 注册表,这样才会直接从镜像站拉取数据
Pkg.update()

语法参考

suppress warnings

  • 启动 Julia 时,加入 --depwarn=no 参数;

  • 使用 Suppressor

    using Suppressor
    
    @suppress_err begin
    include("script.jl")
    end
    

作者简介

Chun-Hui Gao is a Research Associate at Huazhong Agricultural University.

重复使用

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The source code is licensed under MIT. The full source is available at https://github.com/yihui/hugo-prose.

欢迎修订

如果您发现本文里含有任何错误(包括错别字和标点符号),欢迎在本站的 GitHub 项目里提交修订意见。

引用本文

如果您使用了本文的内容,请按照以下方式引用:

gaoch (2023). 在 RStudio 中使用 Julia. BIO-SPRING. /post/2023/08/23/using-julia-in-rstudio/

BibTeX citation

@misc{
  title = "在 RStudio 中使用 Julia",
  author = "gaoch",
  year = "2023",
  journal = "BIO-SPRING",
  note = "/post/2023/08/23/using-julia-in-rstudio/"
}