这个东西如果你要是去搜素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()函数。这两个函数都可以接收任意类型、任意数量的参数,在执行时会立即将参数的内容打印到屏幕上。例如:
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。