实例介绍
Julia作为灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。由于 Julia 的编译器和其它语言比如 Python 或 R 有所不同,一开始您或许会觉得 Julia 中什么样的代码运行效率高,什么样的代码运行效率低似乎并不很直观。如果您发现 Julia 变慢了,我们非常建议您在尝试其它功能前读一下代码性能优化 。只要您理解 Julia 的工作方式,就会很容易地写出运行效率甚至可以和 C 相媲 美的代码。
Contents 1 Julia于册 2笔记 187 3 The Julia Standard Library 193 Bibliography 303 CHAPTER Julia手册 11简介 科学讠算对性能一直有着最高的需求,但现在这个领域的专家开始大量使用比较慢的动态语言来完成日常 工作。我们相信有很多使用动态语言的理由,所以我们不会舍弃这样的特性。幸运的是,现代语言设计和 编译器技术使得为原型设计提供单一的高效开发环境,并且型置高性能的应用成为可能。 Julia语言在这其 中扮演了这样一个角色 作为灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。 由于 Julia的编译器和其它语言比如 Python或R有所同,一开始您或许会觉得 Julia中什么样的代码运行 效率高,什么样的代码运行效率低似乎并不很直观。如果您发现 Julia变慢了,我们非常建议您在尝试其它 功能前读一下代码性能优化。只要您理解 Julia的工作方式,就会很容易地写岀运行效率甚夲可以和C相媲 美的代码。 通过使用类型推断和即时(JT编译,以及LLVM, Julia具有可选的类型声眀,重载,高性危等特性。 Julia 是多编程范式的,包含指令式、函数式和面向对象编程的特征。它提供了简易和简洁的高等数值计算,它 类似于R~ MATLAB和 Python,支持一般用途的编程。为了达到这个目的,Juia在数学编程语言的基础 上,参考了不少流行动态语言:Lisp、Per、 Python、Lua和Ruby。 Julia与传统动态语言最大的区别是: 核心语言很小;标准库是用 Julia本身写的,如整数运算在內的基础运算 善的类型,方便构造对象和做类型声明 基于参数类型进行凶数重载 参数类型不同,自动生成高效、专用的代码 高性能,接近静心编译语言,如C语言 动态语言是有类型的:每个对象,不管是基础的还是用户自定义的,都有类型。许多动态语言没有类型声 明,意味着它不能告诉编译器值的类型,也就不能准确的判断岀类型。静态语言必须告诉编译器值的类 型,类型仅存在于编译时,在运行时则不能更改。在 Julia中,类型不身就是运行时对象,同时它也可以把 信息传递给编译器 Juia文档, Release030 prerelease 重载函数由参数参数列表)的类型来区别,调用凶数时传入的参数类型,决定了选取哪个函数来进行调 用。对于数学领或的程序设计来说,这种方式比起传统面向对象程序设计中操作属于某个对象的方法的方 式更显自然。在 Julia中运算符仅仅是函数的别名。程序员可以为新数据类型定义“+”的新方法,原先的代 码就可以无缝地重载到新数据类型上 因为运行时类型推断(得益于可选的类型声明),以及从开始就看重性能, Julia的计算性能超越了其他动 态语言,甚至可与静态编译语言媲美。在大数据处理的问题上,性能一直是决定性的因素:在刚刚过去的 十年中,数据量还在以摩尔定律增长着。 Julia想要变成一个前所未有的集易用、强大、高效于一体的语言。除此之外,Juia的优势还在于: 免费开源(MIT协议) 自定义类型与内置类型同样高效、紧凑 不需要把代码冋量化;非向量化的代码跑得也很快 为并行和分布式计算而设计 轻量级绿色线程(协程) ·低凋又牛逼的类型系统 优雅、可扩展的类型转换 高效支持 Unicode,包括且不只UTF8 ·直接调用C函数(不需封装或API 像 Shell一样强大的管理其他进程的能力 像Lisp一样的宏和其他元编程工具 12开始 Julia的安装,不管是使用编译好的程序,还是自己从源代码编译,都很简单。按照这儿的说明下载并安装 目可。 使用交互式会话(也记为repl),是学习Juia最简单的方法 s julia a fresh approach to technical computing Documentationhttp://docs.julialang.org Type " ?help" for help Version0.5.0dev+2440(2016020102:22UTC I Commit 2bb94d6(11 days old master x8664-apple-darwin13 1.0 julia> 1+ 2 输入^D一C-r1键加α键,或者输入quit(),可以退出交互式会话。交互式模式下,j1ia会显示 个横幅,并湜示用户来输入。一旦用户输入了完整的表达式,例如1+2,然后按囯车,交互式会话就对 表达式求值并返回这个值。如果输入的表达式末尾有分号,就不会显示它的值了。变量ans的值就是上 次计算的表达式的值,无论上一次是否被显示。变量ans仅适用交互式公话,不适用于以其它方式运行 的 Julia代码 Chapter1. Julia手册 Juia文档, Release0.30- prerelease 如果想运行写在源文件fie.i1中的代码,可以输入命令 include("fie.j")。 要在非交互式模式下运行代码,你可以把它当做 Julia命令行的第一个参数: s julia script. jl argl arg2. 如这个例子所示, julia后面跟着的命令行参数,被认为是程序 script.j1的命令行参数。这些参数使用全 局变量ARGs来传递。使用-e选项,也可以在命令行设置ARGs参数。可如下操作,来打印传递的参数 s julia -e 'for x in ARGS; prinTln(x)i end foo bar bar 也可以把代码放在一个脚本中,然后运行 s echo 'for x in ARGS; println(x)i end> script. jl s julia script. jl foo bar bar 定界符““可以用来将脚本文件和命令行的变量分割开来 s julia --color=yes -o-- foo. jl argl arg2 Julia可以用-o或-- machinefile选项来开启并行模式。-pn会发起额外的n个工作进程 而-- machinefile file会为文件£ie的每一行发起一个工作进程。file定义的机器,必须 要能经由无密码的ssh访冋,且每个机器上的 Julia安装的位置应完全相同,每个机器的定义为 [user@]host[: port] [bind_addr] o user defaults to current user, port to the standard ssh port. Op tionally, in case of multi-homed hosts, bind_addr may be used to explicitly specify an interface 如果你想让 Julia在启动时运行一些代码,可以将代码放入~/,j1iarc.j1 s echo' print1n(" Greetings!好!訃刈昱?")'>~/.j1iarc.j1 ngs!好!3訃♀ 行 Julia有各种可选项 julia [cations] [program] [args.] versIon Display version information Print this message ict Quiet startup without banner H home <d se七1。cat f jul tabl 1 Evalua ∈xpr E,--print <expr> Evaluate and show <expr> pcst-boot <expr> Evaluate expr> right after boot - lcad <tile> Load <file> right ater boot on all processors <file> ystem Image Run n local processes chinefile <file> Run processes on hosts listed in <file> tractive to be t L load or save hisTory f, --nc-startup Don't loac m/. juliarc jl Load /. juliarc. jl, then andle remaining inputs 12.开始 3 Juia文档, Release030 prerelease color=yes Ino Enable or disable color text -code-coverage Count executions of source li -check-bounds=i yes no Fmit bounds checks al ways or never (ignoring declarat. i ons) int-literals=132164) Select integer literal size independent of platform 121资源 除了本手册,还有一些其它的资源 Juia和 JUlia使用说明 速学 Julia MII讲师 Homer reid数值分析课的教程 介绍jia的演讲 来自MTT的Juia观频教程 Forio的 Julia教程 13变量 Julia中,变量即是关联到某个值的名字。当你想存储一个值(比如数学计算中的某个中间变量)以备后用 时,变量的作用就体现出来了。举个例子 #将整数10赋值给变量x j11ia>又=10 10 #对x所存储的值做数值运算 julia> x t 1 #重新定义x的值 Julia> #你也可以给它赋予其它类型的值,比如字符昂 julia> x="Hello World W Hello World! Julia提供了极其灵活的变量命名系统。变量名区分大小写。 julia> x= 1.0 julia> y julia> Z=My string" y string julia> customary phrase ="Hello world! W Hello world! Chapter1. Julia手册 Juia文档, Release0.30- prerelease u1ia> Universa1Dec1ara- ionofHumanRightsstart="人人生而自由,在尊严和权力上一律平等。" 人人生而自由,在尊严和权力上一律平等。" 也可以使用 Unicode字符(UTF-8编码)来命名 julia> 8=0.0CC01 1.0e-5 j1ia>glb州昱="He11o Hello" 在 Julia repl和其一些 Julia的境中,支持 Unicode符的人°只需要入的LaTeⅩ句,再按tab可完成人°比如,量 名6可以通\eita-lub入,又如a2`可以出\ alpha-tb-\hat-tab-)2-1ab完成° Julia甚至允许重新定义内置的常数和函数 ulia> pi jπjJW3 3.1415926535897 ulia> pi-3 Warning: imported binding for pi overwritten in module Main ulia> pi julia> sqrt(100) 10.0 1u1 grt Warning: imported binding for scrt overwritten in module Main 很显然,不豉励这样的做法。 13.1可用的变量名 变量名必须的开头必须是如下字符 字母 比00A0大的 unicode子集具体是指, Unicode character categories: -Lu/LLm/LO/Nl(字母)开头 Sc/So(货币和其它符号) 以及其它一些类似于字母的符号(比如Sm数学符号) 在变量名中的字符还可以包含!和数字,同时也可以是 Unicode编码点:变音符号以及其它修饰符号,一些 标点连接符,元素,以及一些其它的字符 类似于+的运算符也是允许的标识符,但会以其它方式解析.在上下文中,运算符会被类似于变量一样使用; 比如(+)代表了加法函数,而(+)-£会重新给它赋值.大部分的 Unicode运算符,比如⊕,会被当做运算符 解析,并且可以由用户来定义.比如,您可以使用 const w=kron来定义为一个直乘运算符 内置的关键字不能当变量名 13.变量 Juia文档, Release030 prerelease julia> else= false ERROR: syntax: unexpected " else julia> try nN I ERROR: syntax: unexpected =l 132命名规范 尽管 Julia对命名本身只有很少的限制,但尽量遵循一定的命名规范吧: 变量名使用小写字母 单词间使用下划线('')分隔,但不鼓励 类型名首字母大写,单词间使用驼峰式分隔. 函数名和宏名使用八写字母,不使用下划线分隔单词 修改参数的函数结尾使用!.这样的函数被称为 mutating functions或 in-place functions 14整数和浮点数 整数和浮点数是算术和计算的基础。它们都是数字文本。例如1是整数文本,1.0是浮点数文本。 Julia提供了丰富的基础数值类型,全部的算数运算符和位运算符,以及标准数学函数。这些数据和操作直 接对应于现代计算杋攴持的操作。因此, Julia能充分利用硬件的计算资源。另外,Juia还从软件层面攴持任 意精度的算术,可以用于表示硬件不能原生支持的数值,当然,这牺牡了部分运算效率。 Julia提供的基础数值类型有: 整数类型: Char原生支持 Unicode宇符;详见字符串。 浮点数类型 类型精度位数 F1cat16半精度16 彐1cat32单精度|32 彐1cat64双精度64 另外,对复数和分数的支持建立在这些基础数据类型之上。所有的基础数据美型通过灵活用户可扩展的类 型提升系统,不需显式类型转换,就可以互相运算。 14.1整数 使用标准方式来表示文本化的整数 julia> 1 u1ia>1234 1234 Chapter1. Julia手册 【实例截图】
【核心代码】
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论