前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >juila(0)

juila(0)

作者头像
云深无际
发布2021-04-14 14:23:28
1.6K0
发布2021-04-14 14:23:28
举报
文章被收录于专栏:云深之无迹

这个东西如果你要是去搜素juila,用百度搜素的话,大概率是一个这种东西:

emmmm,有点迷


首先,这是一门所谓有主流语言的优点的一门“贪心”的语言:

Julia语[插图]是一种为高性能数值计算设计的高层次动态编程语言,在分布式并行化、精确数值计算等方面提供了独具特色的支持,并包含大量可扩展的数学函数库。尤其是在线性代数、随机数生成、信号处理、字符串处理等方面,Julia集成了众多成熟、优秀的基于C和Fortran开发的开源库,有着很高的性能与效率。另外,Julia的开发者社区已经非常强大,贡献了大量的第三方库,我们可通过内置的包管理器方便地安装使用。

Julia语言更多的特点还有:

❑ 多态分发(Multiple Dispatch)机制,通过不同类型的参数组合,可以定义同名函数不同的行为。

❑ 动态类型系统:用户自定义的类型可像内置类型一样快速、轻便。

❑ 简洁又可扩展的数值类型转换与提升机制。

❑ 高效能的多语言编码环境,支持包括UTF-8在内的各种Unicode编[插图]。

❑ 原生设计的并行与分布式计算机制。

❑ 轻量级的“绿色”线程——协程机制。

❑ 优秀的性能,可以与静态编译的C语言媲美。

❑ Lisp语言式的宏及元编程(Meta-programming)范式的支持。

❑ 内置的第三方功能包管理器。

❑ 可与Python、R、Matlab及Java等语言进行混合编程。

❑ 类似于Shell的外部程序调用。

❑ 不需要额外的封装层或特别的API,即可直接调用C语言的库函数。

可以说Julia在很多方面都独具特色。比如在并行化计算方面,Julia并没有专门设计特殊的语法结构,而是提供了足够灵活的机制,并可自动进行分布式的部署,能够实现云端操作,使得并行化编程极为便捷。

值得称道的是,Julia语言基于MIT许可[插图]是开源、免费的。而且其生态中的各种库与软件也主要采用GPL、LGPL或BSD等许可。核心代码及各种第三方大部分均托管在GitHub这个有名的开源代码管理平台中,用户可以获得源代码,了解语言的各种实现细节,不但能对语言进行更深入的学习,也能够在设计思路方面受益。

使用Julia开发有着非常好的体验。不但语法自然简洁,而且结构清晰,效率也非常高。更为可贵的是,其性能也不差。优秀的语言设计结合强大的即时(Just-In-Time, JIT)编译系统LLV[插图],使得Julia的运行性能在很多时候能够媲美C语言。在一份官方提供的Benchmark中,相比于C、Fortran、Python、Matlab/Octave、R、JavaScript、Java、Lua与Mathematica等其他语言,Julia在性能方面有着非常卓越的表现

我就说一下我为什么喜欢这个语言。抛开一切不讲。在现代的计算机语言里面,乘法的符号。让我很难过,迷惑,为什么这么说?

且看例子:2乘以2

你找一个随便的人指定这个任务,ta会怎么做?

我想是写 2x2=4(答案可有可无)是不是没有疑问?

计算机的语言怎么说呢?2^2,怎么说?是不是很奇怪,是的。因为计算机里面的这个x就是x而已。你说怎么办呢?没什么办法,我就是不喜欢它。但是julia不一样

我随手写了一个函数,可以看到出来17x就是17^x是不是很酷


接下来说怎么写这个东西,目前来讲有几种常见的作法。一是Julia Pro(基于Atom),vscode(万金油的东西),还有直接的命令行使用。

去官网下载julia,一路下一步。这个地方吧。个人建议选择默认吧。不知道有没有坑。

然后配置环境变量:

自己看吧

然后随便打开一个cmd:

就可以了

versioninfo( )


Ctrl+d是退出环境

在Julia的语法中,英文分号表示语句或表达式的结束,但不是必需的。

在REPL中可以输入单行或者多行语句,当我们按下ENTER键回车换行时,REPL会自动判断表达式语句是否完整。如果不是可以换行的语句,会以红色信息提示错误;如果语句可以换行但不是完整的表达式,REPL会在新行保持输入状态,等待用户继续输入。在回车时,如果判定表达式已经完成,输入状态会结束,REPL将执行已经输入的表达式语句,并在新行开始处输出计算结果,或者提示必要的警告与错误信息。

为了方便地调试各种表达式,REPL中每段语句的执行结果都会临时存储在一个名为ans的全局变量中。即使我们将运行结果赋值给自定义变量,ans中也同样会保留一份拷贝,而且其内容会在语句的每次成功运行后自动更新。

不过,该变量仅在REPL中有效,在Julia脚本文件中是没有实际用途的。

如果要在一段语句中打印中间结果,可以使用print()及println()函数。这两个函数都可以接收任意类型、任意数量的参数,在执行时会立即将参数的内容打印到屏幕上。例如:

代码语言:javascript
复制
        julia> print(1, 2, "abc", 'a', [1 2 3], "\n", (1,2,3))   # 换行需要自己输入换行符(井
                                                                 # 号为行内注释)
        12abca[1 2 3]                                            # 打印的内容,第一行
        (1, 2, 3)                                                # 打印的内容,第二行                       

两个函数的区别仅在于:前者需显式地在参数中给出换行符\n才会在尾部换行打印,后者会在所有参数打印完后自动换行。

语言中的各种要素,包括关键字、类型、变量、函数等,都需要有标识的名字。在Julia中创建这些要素时,需要遵循Julia在命名方面的规则:

❑ 内置的关键字可以是名称的一部分,但不能作为完整的名称。

❑ 名称对大小写敏感。

❑ 名称首字符必须是下划线、英文26个字母的小写或大写,或者编码大于0x00A0的Unicode字[插图](这是Julia不同于其他语言的地方)。

❑ 名称中不能有算术运算符或内部的标识符,包括@、#、$、%、^、&等。

关键字是Julia语言的基本元素,用于关键的声明、标识或限定,一般是一串小写字母。将它们粗略分成六类,列举如下:

❑ 类型声明:abstract、primitive、type、struct、function、macro、new。

❑ 权限标识:global、local、mutable、const、outer。

❑ 模块操作:module、baremodule、using、import、export。

❑ 逻辑结构:where、for、while、break、continue、if、elseif、else、in。

❑ 语句块:begin、quote、let、end、do。

❑ 混合编程:ccall。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档