快速入门这个速度远超Python的科学计算语言

Julia是一种为数值和科学计算设计的高性能动态语言,它的性能接近C语言,同时提供多重派发、动态类型和内建的包管理器。Julia支持元编程和直接调用Python及C代码,且为并行和分布式计算设计,适用于复杂的计算任务。
摘要由CSDN通过智能技术生成

导语

Julia —一种科学计算语言新尝试

科学计算对性能一直有着最高的需求,但现在这个领域的专家开始大量使用比较慢的动态语言来完成日常工作。 我们相信有很多使用动态语言的理由, 所以我们不会舍弃这样的特性。幸运的是,现代语言设计和编译器技术使得为原型设计提供单一的高效开发环境, 并且配置高性能的应用成为可能。

Julia 语言在这其中扮演了这样一个角色:作为灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。而今年这门崭新的语言马上就要迎来自己的1.0(第一个正式版)。

关于快如闪电的 Julia 语言

Julia是一个为数值计算设计的高性能的高级动态语言。Julia提供了一个复杂精巧的编译器,分布式的并行计算环境,精确地数值计算以及一个可扩展的数学函数库。Julia的基础库大部分由纯Julia语言编写,但是也集成了在特定领域(如线性代数,随机数生成,信号处理和字符串处理)很多成熟的库。此外,Julia开发者社区也不断地通过Julia自带的包管理器在贡献大量的包(package)。此外,由Jupyter和Julia社区共同努力的成果IJulia,使得你可以在笔记本(notebook)界面里使用Julia。

Julia程序使用一种基于多重派发的编程范式,通过对不同类型的组合(类型可以是用户自定义的)定义和重载函数来进行组织。对于在不同系统上使用Julia的好处的深度讨论可以在下面的部分或者是介绍和在线指南中找到。

Julia语言的特性

  • 多重派发:提供了为多重类型的组合定义函数的能力
  • 动态类型系统:为文档,优化和分发而定义的类型系统
  • 内建的包管理器
  • Lisp一样的宏和其它元编程工具
  • 调用Python:Julia可以通过PyCall直接调用Python的函数
  • 调用C:Julia可以简单地(无需额外对特殊API的封装)调用C代码
  • 像shell一样强大的管理其它进程的能力
  • 为并行和分布式计算而设计
  • 协程:轻量级“绿色”线程
  • 用户定义的类型和内建类型一样快和兼容
  • 自动为不同类型生成的高性能特别优化的代码
  • 简洁可扩展的类型转换和提升
  • 高效支持Unicode包括但不限于UTF-8字符
  • MIT协议:免费的开源协议

高性能的JIT编译器

Julia基于LLVM的即时编译(JIT)编译器和语言本身的设计使得它可以达到和C语言接近或者一致的性能。为了感受到Julia和其它语言相比之下在数值/科学计算方面的性能,我们为很多语言写了一些小的微基准(micro-benchmark)测试(C, Fortran, Julia, Python, Matlab/Octave, R, JavaScript, Java, Lua, Mathematica):

图片: 相对于C语言的基准测试(越小越好,C的性能 = 1.0)。

  • 这个notebook使用Gadfly和IJulia绘制:http://nbviewer.jupyter.org/url/julialang.org/benchmarks/benchmarks.ipynb
  • 更详细的信息请查看基准测试页面:https://github.com/JuliaCN/juliacn.github.io/blob/source/benchmarks

为并行计算和云计算设计

Julia并不会强加给用户任何一种特别的并行范式,而是提供一系列的分布式计算的关键组件,使得其足够灵活去支持多种并行方案,并且允许用户增加更多。下面简单地例子展示了如何并行地抛硬币并且计数。

1  nheads = @parallel (+) for i = 1:1000000002     rand(Bool)3  end

小知识分享:每一个HTML 文档中,都有一个不可或缺的标签:<head>,在几乎所有的HTML文档里, 我们都可以看到类似下面这段代码:

<head><meta charset=utf-8><meta http-equiv=content-type content=text/html; charset=utf-8><meta name=renderer content=webkit/><meta name=force-rendering content=webkit/><meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1/><meta http-equiv=Content-Type content=www.zyhsqjfw.com imtoken钱包;charset=gb2312><meta name=viewport content=width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no></head>

head标签作为一个容器,主要包含了用于描述 HTML 文档自身信息(元数据)的标签,这些标签一般不会在页面中被显示出来,主要告知搜索引擎本页面的关键字以及对应网址,在SEO中传递相关权重起到非常重要的作用。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值