初识Julia语言,julia语言( 二 )


有些家伙从嘴上无毛的年纪就开始用Mathematica了,当然我们中间也有人现在也还是不长胡子的 。我们比正常人画了更多的R图 。C更加是我们最喜欢的大杀器 。我们热爱所有这些语言,他们实在是很好很强大 。在我们从事的领域中——包括科学计算、机器学习、数据挖掘、大规模线性代数、分布式与并行计算这些——每种语言都对某些问题来说很完美,但对另一些就变得很糟糕 。
我们需要做出取舍 。我们很贪心:我们想要更多 。我们需要一种语言,它是开源的,有自由的许可 。我们需要C语言的速度,又要有Ruby社区的活力 。我们需要一种homoiconic风格的编程语言,像Lisp那样有真正的宏,又要有Matlab里那些熟悉的数学概念 。我们需要的东西既能像Python那样可以作为通用编程语言使用的工具,又要能够像R那样适用于统计分析,能像Perl那样自然地处理字符串,能像Matlab那样给力地处理矩阵运算,还要能像shell一样能把各种程序粘合在一起 。
它必须让初学者觉得简单易学,同时又可以让高级用户们挥洒自如 。它既要是交互式的,又能被编译执行 。(前面提到过的,它要有C那么快!)我们在构思这些需求的时候,我们还发现它得有Hadoop这样强大的分布式能力——却不想要Hadoop里面那些冗繁的Java和XML,不想在几百台机器庞大的日志文件里去寻找那些bug 。
我们不想要那些令人费解的层次结构 。我们想让简单的标量循环能在单个CPU的寄存器里编译出精致的机器代码 。我们想要写一个A*B就能让上千台机器为我们完成一次规模庞大的矩阵乘法 。我们不需要的时候,就不用做类型申明 。但我们需要多态函数(polymorphic functions)时,希望能通过泛型编程(generic programming )使得只写一次的算法能在无穷多的数据类型上套用 。
我们希望通过多重分派(multiple dispatch ),能够为一个函数所有可能的参数选出最有效的执行方法 。这些参数可能有着不同的定义,来自不同的数据类型,却能提供相同的功能 。在拥有这些能力得的同时,我们还希望这种语言简单、干净!要求有点多,是不是?尽管我们意识到了自己有多贪心,我们还是想把这些都统统拥入怀中 。
大概在两年半之前,我们开始创造这种能满足我们贪念的语言 。它还没有完工——但是已经可以发布一个1.0版本了——我们创造的语言叫做Julia 。她已经实现了我们那些乱七八糟需求的90%,而现在她需要来自更多人更乱七八糟的需求,来让她走得更远 。如果你也是一位贪心不足,不可理喻,需索无度的码场二逼青年,希望你能来试试这个东东 。
1.矩阵计算Julia的矩阵计算默认是由openBLAS支持 。openBLAS是一款开源的线性代数库,开发者来自于中科院软件所的张常有老师团队 。同时Julia也支持intel的MKL库(如果你购买了intel的MKL的话) 。所以正如Julia自己所号称的一样,Julia的矩阵处理性能是非常高的 。2.并行然后是代码的并行化,Julia的介绍中有这么一句话:为分布式与并行而设计.可以看一下语法上也是原生支持并行的.3.库的支持然后目前Julia已经有一些很好的库了(以后不断更新):数学优化方面有JuliaOpt,并没学过数学优化但是据说写的很好用 。
JuliaQuant量化库,貌似楼下的答主在用天文方面,JuliaAstro一个天文口的库在量子计算方面,由齐晓东@i2000s 发起的juliaQuantum已经能够具有一些基本的功能,同时他们甚至有拿代码去量子计算机上使用(当然并不是真的量子计算机,而是绝热机)Mocha 一个很像caffee的机器学习库JuliaGPU里面有一些关于GPU计算的库,一些著名的库的wrapper,比如opencv(还只能在0.5-dev上调用,因为是调用了cpp)JuliaBio 生物信息(并没有用过和我的专业不太相关)因为开始翻译Julia.jl,相关内容请关注我正在进行中的中文版Julia程序包博物馆JuliaCh.jl当然这里也会不定期更新这一部分 。

推荐阅读