有一门语言,它看起来像 Python ,感受起来像 Lisp ,运行起来又像 C 同样快速,他就是Julia。linux
近年来,Julia 语言已然成为编程界的新宠,尤为在科学计算和人工智能领域煊赫一时。算法
据 Julia Computing 的宣传,在七项基础算法的测试中,Julia 比 Python 快 20 倍,比 R 快 100 倍,比 Matlab 快 93 倍。shell
为何 Julia 能作到这些,看一下它的开发者的初衷:数据库
“咱们想要的是一种自由开源的语言,它同时拥有 C 的速度和 Ruby 的动态性;咱们想要一个能够像 Python 同样做为通用编程语言的工具, 像 R 那样适用于统计分析,像 Perl 那样天然地处理字符串,像 MATLAB 那样给力地处理矩阵运算,它还要能像 Shell 同样做为胶水将各类程序粘合在一块儿……”编程
Julia 在开发之初就将这些理念归入其中,才有了今天的成绩。编程语言
实验楼上线了一门免费的 Julia 入门课程 ---《Julia简明教程》,包含 6 个实验和一个挑战。你将学习到 Julia 的基础语法,并亲手用 Julia 开发出一个小项目。分布式
建议点击课程连接,直接使用实验楼的在线虚拟机学习这门课,效果会更好。函数
如下为课程第一节内容:工具
本课程做为 Julia 这门编程语言的入门教程,旨在介绍其基础语法,但愿你们可以经过本课程的学习,熟练掌握 Julia 的语法风格和编程习惯。性能
根据维基百科中的描述,大约在 2009 年,一群拥有各类语言丰富编程经验的 Matlab 高级用户,对现有的科学计算编程工具感到不满 —— 这些软件对本身专长的领域表现得很是棒,但在其它领域却很是糟糕。
他们想要的是一个开源的软件,它要像 C 语言通常快速而又拥有如同 Ruby 的动态性;要具备 Lisp 般真正的同向性而又有 Matlab 般熟悉的数学记号;要像 Python 般通用、像 R 通常在统计分析上驾轻就熟、像 Perl 般天然地处理字符串、像 Matlab 般具备强大的线性代数运算能力、像 shell 通常拥有胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的。
最后 Julia 出现以后,你们评价它看起来像 Python ,感受起来像 Lisp ,运行起来像 C 。
如下描述来自官方文档:
Julia 与传统动态语言最大的区别是:
1. 核心语言很小;标准库是用 Julia 自己写的,如整数运算在内的基础运算
2. 完善的类型,方便构造对象和作类型声明
3. 基于参数类型进行函数 重载
4. 参数类型不一样,自动生成高效、专用的代码
5. 高性能,接近静态编译语言,如 C 语言
Julia 想要变成一个史无前例的集易用、强大、高效于一体的语言。除此以外,Julia 的优点还在于:
1. 免费开源( MIT 协议 )
2. 自定义类型与内置类型一样高效、紧凑
3. 不须要把代码向量化;非向量化的代码跑得也很快
4. 为并行和分布式计算而设计
5. 轻量级 “绿色” 线程( 协程 )
6. 低调又牛逼的类型系统
7. 优雅、可扩展的类型转换
8. 高效支持 Unicode, 包括且不仅 UTF-8
9. 直接调用 C 函数(不需封装或 API)
10. 像 Shell 同样强大的管理其余进程的能力
11. 像 Lisp 同样的宏和其余元编程工具
打开实验环境,咱们要安装目前最新的 Julia1.3 版本(截止 2020 年 1 月)。
首先,在终端执行 wget-c https://julialang-s3.julialang.org/bin/linux/x64/1.3/julia-1.3.1-linux-x86_64.tar.gz 命令下载安装包,这是官方提供的下载地址。由于此安装包比较大,90 多 M ,因此建议你们执行以下命令下载它:
wget https://labfile.oss.aliyuncs.com/courses/1485/julia-1.3.1-linux-x86_64.tar.gz
首先在终端命令行执行 cd 命令切换到用户家目录 /home/shiyanlou ,而后再执行上述命令:
下载完成以后,会在当前目录下出现 Julia 的安装包 julia-1.3.1-linux-x86_64.tar.gz ;执行 tar xzvf julia-1.3.1-linux-x86_64.tar.gz 命令,便可完成解包;而后将 Julia 的可执行文件建立一个软链接到 /usr/bin 目录下便可完成所有安装工做:
cd /usr/bin sudo ln -s ~/julia-1.3.1/bin/julia julia cd julia
如上图所示,终端执行 julia 命令便可进入命令行交互解释器,也叫 REPL 。这个是否是有些熟悉呢?各个数据库以及 Python 都有这个交互工具。输入 exit() 或按下快捷键 Ctrl + D 便可退出,终端执行 julia-version 命令能够查看版本:
启动 Julia 命令行交互解释器的时候,会打印一张横幅,如上图所示。咱们能够建立一个文件,使其在打印横幅以前,打印一些别的:
mkdir .julia/config echo 'println("Hello Shiyanlou")' > .julia/config/startup.jl julia
如上图所示,在启动 REPL 时,先打印了一行字:Hello Shiyanlou 。熟悉 Python 的同窗都知道打印信息到屏幕上使用的是 print 方法,在 Julia 中是 println 方法,并且须要切记的是,在 Julia 中单引号和双引号不可混用,只有双引号才能描述字符串。
进入 REPL 以后,会有 julia> 字样的提示符,这是常规模式,咱们能够在其中执行一些代码:
julia> println("hello kitty") hello kitty julia> 2 + 3 5 julia> ans 5 julia> x = 5 5 julia> x -= 1 4 julia> x 4 julia> x *= 2 8 julia> x 8 julia>
如上所示,ans 这个变量会保存上一次命令的执行结果,它仅在命令行交互解释器中适用,不可写到 jl 文件里,Julia 的文件后缀为 jl ,如同 Python 文件的后缀为 py 。
除了常规模式,REPL 还有 help 模式、shell 模式和 package 模式。
在常规模式下输入问号便可进入 help 模式,此模式的提示符是 help?> ,输入一个方法,便可显示此方法的帮助信息,而后自动回到常规模式:
这等同于在常规模式下使用 @doc 这个宏来查看帮助信息:
在常规模式下输入分号 ; 进入 shell 模式,提示符为 shell> ,这等同于环境终端,能够执行 zsh 命令,一样是执行完一个命令后自动退回到常规模式:
常规模式下输入中括号 ] 进入 pkg 模式,提示符为 (v1.3)pgk> ,括号里面是版本号,这是包管理模式。
该模式下输入 status 命令能够查看包状态, add 命令添加工具包, rm 命令删除工具包:
安装这个包须要较长时间,执行 rm 命令删除它:
按退格键 Backspace 回到常规模式。
本节实验主要介绍了 Julia 语言的来源,它与不少其它语言很像,这是由于做者是集各家之长创造的 Julia 。在实验环境中的安装方法十分简单,下载安装包,解包,设置软链接。
此外还介绍了命令行交互解释器的四种模式,在后面的课程中,咱们会用到它们。
下一节实验将会学习 Julia 的变量。
想要学习下面的内容,你们能够点击《Julia简明教程》,免费在线学习所有章节内容。