欢迎来到Julia 1.0的文档。git
请阅读发布博客文章,了解该语言的通常概述以及自Julia v0.6以来的许多更改。请注意,0.7版本与1.0一块儿发布,以提供1.0版本以前的软件包和代码的升级路径。0.7和1.0之间的惟一区别是删除了弃用警告。有关自0.6以来的全部更改的完整列表,请参阅版本0.7的发行说明程序员
传统上,科学计算须要最高的性能,然而领域专家却在平常工做中使用了较慢的动态语言,咱们相信有不少很好的理由来支持这些应用程序的动态语言,并且咱们并不指望它们的使用会减小。幸运的是,现代语言设计和编译技术使咱们可以最大限度地消除性能上的平衡,并提供一个足够的环境,使其可以有效地部署性能密集型应用程序。github
由于Julia的编译器不一样于Python或R等语言的解释器,你可能会发现Julia的表如今一开始并不直观,若是你发现有些东西很慢,咱们强烈建议你在尝试其余任何东西以前阅读[性能技巧](@ref man-performance-tips),一旦你理解了Julia的工做原理,你就很容易写出几乎和C同样快的代码。shell
Julia具备可选类型标注、多重派单和良好的性能, 使用 LLVM实现了类型推断和即时编译(JIT)。它是多范式的, 结合了命令、功能和面向对象编程的特色。Julia为高级数值计算提供了易用性和表现力, 其方式与 R、MATLAB 和 Python 等语言相同, 但也支持通常编程。为了实现这一点, Julia创建在数学编程语言的谱系上, 但也借用了许多流行的动态语言, 包括 Lisp)、Perl)、Python)、Lua)和Ruby)。编程
Julia与典型动态语言最重要的不一样之处是:api
尽管有时人们会说动态语言是“没有类型的”,但它们绝对不是:每一个对象,不管是原始的仍是用户定义的,都有一个类型。然而,在大多数动态语言中,没有类型声明,这意味着不能对编译器进行指令,并且一般不能明确地讨论类型。在静态语言中,虽然能够(一般必须)为编译器提供注释类型,但类型只在编译时存在,而且不能在运行时被操纵或表达。编程语言
虽然休闲程序员(the casual programmer)不须要显式地使用类型或多重派发,但它们是Julia的核心统一特性:函数是在不一样的参数类型组合上定义的,并经过分派到最特定的匹配定义来应用。这种模型很是适合于数学编程,在这种状况下,第一个参数“own”一个操做就像传统的面向对象的分派器同样。运算符只是具备特殊表示法的函数-若要扩展对新用户定义数据类型的添加, 请为+
函数定义新方法。而后, 现有代码无缝地应用于新的数据类型。分布式
部分因为运行时类型推断(由可选类型注解加强),部分因为项目开始时对性能的强烈关注,Julia的计算效率超过了其余动态语言,甚至是静态编译语言的竞争对手语言。对于大规模的数字问题,是始终持续的,而且可能永远都是相当重要的:在过去的几十年里,处理的数据量很容易跟上摩尔定律(Moore's Law)的步伐。函数
Julia的目标是在一种语言中创造出一种史无前例的易用、强大和效率的组合。除此以外,Julia在相似系统上的一些优点包括:工具