分享

Julia编程01:Julia语言介绍

 生信探索 2023-04-05 发布于云南

在2020上半年,因为疫情无法返校,所以在家待了半年,期间学习一点了R语言、Python、Julia、linux和C语言,只是学习基础语法并没有项目练习,因此返校半年后差不多都不记得了,现在重新捡起Julia丰富下当时写的笔记发到公众号来。

语言特点

前三门语言很类似,是可以一起学的,数据分析中常用的Jupyter就是Julia 、Python和R的缩写。

julia像是处于动态语言向静态语言过度的语言,既可以指定类型又可以不指定,优点就是速度极快,缺点就是造好的轮子不多。

Julia的设计者想把她设计成完美的语言...

Julia要像C语言一般快速而又拥有如同Ruby的动态性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的……

官网的Benchmarks

我也跑个Benchmarks

在学习函数的时候,无论是Python、R、Jula都会讲到递归,并用斐波那契数列作为例子。这里的Benchmarks使用的递归为最原始版的,没有为了使其速度更快,而写很复杂的代码或用精巧的设计。

参考https://zhuanlan.zhihu.com/p/585529899的代码,他所用的数字是n=40,但是我用julia算第40个斐波那契数只用了0.2s,感觉不太对,所以用了n=50,导致R和Python计算不出来,所以又折中算了n=45的情况。


n=40n=45n=50
R37.1409.1+Inf
Python11.3125.1float('inf')
Julia0.22.629.6

注:单位为秒

  • 首先是R语言版的斐波那契数列
fib <- function(n) {
if (n <= 2) {
return(1)
}
return(fib(n - 1) + fib(n - 2))
}

  • Python版的斐波那契数列
def fib(n):
if n <= 2:
return 1
return fib(n-1) + fib(n-2)

  • Julia版的斐波那契数列
function fib(n::Int)
if n <= 2
return 1
end
return fib(n - 1) + fib(n - 2)
end

  • 测试设备
OS: macOS (arm64-apple-darwin21.5.0)
CPU: 8 × Apple M2
WORD_SIZE: 64

R version: 4.2.2
Python version: 3.10.10
Julia version: 1.8.5

Reference

https://baike.baidu.com/item/Julia/10423675
https://cn./
https:///benchmarks/
https://github.com/Yiguan/benchmark_C_Julia_Py_R
https://zhuanlan.zhihu.com/p/585529899

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多