前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Julia编程01:介绍Julia语言

Julia编程01:介绍Julia语言

原创
作者头像
生信探索
修改2023-04-17 17:36:14
8160
修改2023-04-17 17:36:14
举报
文章被收录于专栏:生信探索生信探索

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

语言特点

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

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

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

官网的Benchmarks

https://julialang.org/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=40

n=45

n=50

R

37.1

409.1

+Inf

Python

11.3

125.1

float('inf')

Julia

0.2

2.6

29.6

注:单位为秒

  • 首先是R语言版的斐波那契数列
代码语言:text
复制
fib <- function(n) {
    if (n <= 2) {
        return(1)
    }
    return(fib(n - 1) + fib(n - 2))
}
  • Python版的斐波那契数列
代码语言:text
复制
def fib(n):
    if n <= 2:
        return 1
    return fib(n-1) + fib(n-2)
  • Julia版的斐波那契数列
代码语言:text
复制
function fib(n::Int)
    if n <= 2 
        return 1
    end
    return fib(n - 1) + fib(n - 2)
end
  • 测试设备
代码语言:text
复制
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

代码语言:text
复制
https://baike.baidu.com/item/Julia/10423675
https://cn.julialang.org/
https://julialang.org/benchmarks/
https://github.com/Yiguan/benchmark_C_Julia_Py_R
https://zhuanlan.zhihu.com/p/585529899

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 语言特点
  • 官网的Benchmarks
  • 我也跑个Benchmarks
  • Reference
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档