julia编程从入门到实践 pdf(Julia编程从入门到实践)

机器之心是罗秀哲发布的。
前两天《机器之心》报道了MIT正式发布Julia 1.0,引起了极大的关注(阅读量超过20万)。编程语言既有批评者也有崇拜者。正如机器之心所了解到的,Julia在科学计算和数据处理行业非常受欢迎。为了让大家更方便的了解这种新发布的编程语言,我们推荐一个Julia中文社区组织者之一罗秀哲新发布的简单教程(见中文社区介绍)。
地址:https://zhuanlan.zhihu.com/p/41802723
写在前面
这两天媒体的报道可能让一些人恐慌了,但是我现在有一个真诚的建议。如果你完全没有编程基础,时间也不多(时间多了就不是想学什么就学什么了),建议你先学Python。不冲突,因为Julia的语法本身和Python很像。在1.0之后,一些特性被特别添加来帮助你从Python转换到Julia。Julia刚刚有了第一个长期支持版本,这并不意味着语言已经完全成熟。我觉得此时的Julia更像当时的Python 2.0。还有很长的路要走,但是已经很有希望了。
那么我会建议谁学朱莉娅呢?或者在什么情况下朱莉娅会有优势?我的个人经历如下:
之前使用Python但经常需要使用numba/cy thon/C API/ctypes/等的人。因为性能问题而进行优化。Julia或许可以帮你解决两种语言的问题,获得更具可读性和可维护性的代码。之前用过MATLAB,但是被一些付费函数困扰的用户(MATLAB 2018也不错,但是应该支持正版ha),之前用过Fortran和R的用户,强烈建议用Julia(可以组合使用,FFI很好),之前用过Sage/Octave的用户,试试这个新玩意。之前用过Mathematica但是想开始做一些数值的用户,Mathematica不是不会做数值,也可以调用C/C .但是Julia可能是比其他工具更流畅的选择。如果你之前的工作只有用Python才能胜任,那就不用担心,也不用慌。你不妨在有兴趣的时候尝试一下这个新生事物,但也可以等Julia大规模使用后再跟进。其实Julia从一开始就得到MXNet这样的深度学习框架的官方支持。这些框架的Python用户迁移起来并不困难,但如果你不担心自己程序的性能(这在很多情况下并不是大问题),你实际上并不会意识到什么明显的区别和优势。但这并不完全正确。Julia语言的优势不仅在于性能,还在于设计。
另外,需要反复说明的是,虽然Julia可以写出高性能的代码,但是写出高性能的代码本身是非常困难的。虽然像Python一样写,像C一样跑是我们的梦想,但是现阶段,仅仅写一段Julia代码,还不能真正达到C。Julia只是给你提供了充分优化的空间和相对轻松的编程体验(实现高性能代码)。
下载并安装Julia
朱莉娅,目前AWS s3是官网唯一的服务器(他们也差)。所以在中国某些地区下载速度非常慢:
链接:https://julialang.org/downloads/
可以试一试,然后也可以去茱莉亚计算提供的茱莉亚家庭桶(可以理解为茱莉亚版的Anaconda)。最左边的JuliaPro是自由的:
链接:https://juliacomputing.com/
浙大的LUG之前建了一个镜像,但是最近维护的同学比较忙,所以还没更新到1.0。但实际上,如果你无法从以上渠道下载到Julia 0.6,那么从国内下载Julia 0.6其实并不影响你先熟悉一些基础语法(这是本教程的主要目的)。国内源码下载地址在这里:
链接:http://juliacn.com/downloads/
我们也会尽快更新。
然后有一个云服务叫Julia Box,用起来很方便。里面有很多教程,都是jupyter笔记本。它们是开放的,随时可以使用,所有这些都是在线的,无需安装。但唯一的缺点是可能无法正常访问中国。
链接:http://suo.im/4S7gbT
用什么编辑器?
朱莉娅的社区不够大。除此之外,由于它不是rust那样的静态编译语言,也不是CPython那样的解释编译器,启动时开销明显,这个问题一直在优化(REPL的启动时间已经从1.0s到现在的0.2s,和IPython还有明显差距)。有PL的朋友私下跟我说LLVM的JIT不怎么样(像nodejs的V8,这个问题不明显)
所以在这个阶段选择一个合适的开发工具是非常必要的。目前Atom上的Juno插件支持最好,bug最少。如果你下载了Julia Pro,你会带上这个编辑器。如果您想选择手动安装,那么您可以从这里下载Atom:
链接:https://atom.io/
那么这里介绍一下安装方法:
链接:http://docs.junolab.org/latest/man/installation.html
或者我也推荐你安装IJulia后使用jupyter笔记本和jupyter lab进行开发。
其他平台也支持。比如Jetbrain的所有ide都可以使用@考古学家李倩冰城等开发的插件。VS代码也有Julia插件,也支持Vim。但是,它们都没有逐行执行和单独执行某段代码的功能。对于像Mathematica这样设计的Julia来说,没有一个cell支持的开发往往会受到JIT预热时间的困扰。
然后,为了克服JIT预热,避免反复启动编译器。如果不重新定义(re-define)类型,请尝试revise.jl3360。
链接:https://github.com/timholy/Revise.jl
这是一个热加载Julia代码的工具,1.0已经支持删除方法。所以也可以方便你的发展。
其实和Python一样,在我的日常使用中,作为一种动态语言,也因为语法本身适合块执行,我其实很少使用断点和特殊调试器。除此之外,虽然有相关的包,1.0的编译器也提供了以后加入调试器的相关功能,但是还不完善。你可以试试(但我暂时不推荐):
链接:https://github.com/Keno/Gallium.jl
链接:https://github.com/timholy/Rebugger.jl
我怎么知道我要用什么包?
Julia有一个由社区维护的网站,可以帮助您从1,900多个软件包中找到符合您需求的Julia软件包:
链接:https://juliaobserver.com/
一般来说,还是用比较新的,比较有星的包比较好。然后如果你觉得某个包不错,也请在GitHub上给它打个星。
基本操作
下载完Julia后,可以先打开一个REPL(Interactive Programming Environment,交互式编程环境),不管是Julia Pro还是单独的Julia编译器。与IPython类似,Julia的REPL支持代码高亮和文档查看等基本功能。但是朱丽亚的REPL更强大(我们稍后会谈到这一点)。
Windows/Mac用户:
双击Julia的三色图标打开REPL。如果是在Atom里,左上角有Julia,点开终端就行了。
Linux用户:
下载后,找到bin文件夹,然后将其添加到PATH环境变量中。稍后,您可以通过julia命令行中的命令直接启动REPL。

其他教程

三维数字化创新(什么是三维数字化技术)

2022-8-21 6:26:29

其他教程

c4d怎么把模型像素化(c4d渲染像素)

2022-8-21 6:28:32

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索