欢迎来到Julia 1.0的文档。

请阅读发布博客文章,了解该语言的一般概述以及自Julia v0.6以来的许多更改。请注意,0.7版本与1.0一起发布,以提供1.0版本之前的软件包和代码的升级路径。0.7和1.0之间的唯一区别是删除了弃用警告。有关自0.6以来的所有更改的完整列表,请参阅版本0.7的发行说明

介绍

传统上,科学计算需要最高的性能,然而领域专家却在日常工作中使用了较慢的动态语言,我们相信有很多很好的理由来支持这些应用程序的动态语言,而且我们并不期望它们的使用会减少。幸运的是,现代语言设计和编译技术使我们能够最大限度地消除性能上的平衡,并提供一个足够的环境,使其能够有效地部署性能密集型应用程序。

因为Julia的编译器不同于Python或R等语言的解释器,你可能会发现Julia的表现在一开始并不直观,如果你发现有些东西很慢,我们强烈建议你在尝试其他任何东西之前阅读[性能技巧](@ref man-performance-tips),一旦你理解了Julia的工作原理,你就很容易写出几乎和C一样快的代码。

Julia具有可选类型标注、多重派单和良好的性能, 使用 LLVM实现了类型推断和即时编译(JIT)。它是多范式的, 结合了命令、功能和面向对象编程的特点。Julia为高级数值计算提供了易用性和表现力, 其方式与 R、MATLAB 和 Python 等语言相同, 但也支持一般编程。为了实现这一点, Julia建立在数学编程语言的谱系上, 但也借用了许多流行的动态语言, 包括 LispPerlPythonLuaRuby

Julia与典型动态语言最重要的不同之处是:

  • 核心语言的作用非常小,Julia Base和标准库都是用Julia己编写的,包括像整数运算这样的原始运算。
  • 一种用于构造和描述对象的丰富的类型语言,它也可以被用来进行类型声明
  • 通过多重分派定义各种参数类型的函数行为的能力。
  • 为不同的参数类型自动生成高效、专门的代码
  • 良好的性能,接近静态编译语言,如C语言

尽管有时人们会说动态语言是“没有类型的”,但它们绝对不是:每个对象,无论是原始的还是用户定义的,都有一个类型。然而,在大多数动态语言中,没有类型声明,这意味着不能对编译器进行指令,而且通常不能明确地讨论类型。在静态语言中,虽然可以(通常必须)为编译器提供注释类型,但类型只在编译时存在,并且不能在运行时被操纵或表达。

虽然休闲程序员(the casual programmer)不需要显式地使用类型或多重派发,但它们是Julia的核心统一特性:函数是在不同的参数类型组合上定义的,并通过分派到最特定的匹配定义来应用。这种模型非常适合于数学编程,在这种情况下,第一个参数“own”一个操作就像传统的面向对象的分派器一样。运算符只是具有特殊表示法的函数-若要扩展对新用户定义数据类型的添加, 请为+函数定义新方法。然后, 现有代码无缝地应用于新的数据类型。

部分由于运行时类型推断(由可选类型注解增强),部分由于项目开始时对性能的强烈关注,Julia的计算效率超过了其他动态语言,甚至是静态编译语言的竞争对手语言。对于大规模的数字问题,是始终持续的,并且可能永远都是至关重要的:在过去的几十年里,处理的数据量很容易跟上摩尔定律(Moore's Law)的步伐。

Julia的目标是在一种语言中创造出一种前所未有的易用、强大和效率的组合。除此之外,Julia在类似系统上的一些优势包括:

  • 免费和开源(MIT许可)
  • 用户定义的类型和内建类型一样快和兼容
  • 无需特意编写向量化的代码;非向量化的代码就很快
  • 为并行计算和分布式计算设计
  • 轻量级的“绿色”线程 (coroutines)
  • 低调但强大的类型系统
  • 优雅和可扩展的数字和其他类型的转换和升级
  • Unicode的有效支持,包括但不限于UTF-8
  • 直接调用C函数(不需要包装器或特殊api)
  • Powerful shell-like capabilities for managing other processes
  • 拥有shell一样强大的功能来管理其他流程
  • 类似于lisp的宏(Lisp-like)和其他元编程工具

Julia 1.0 中文文档的更多相关文章

  1. Apache Storm 1.1.0 中文文档 | ApacheCN

    前言 Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ...

  2. Django2.0中文文档

    title: Django2.0中文文档 tags: Python,Django,入沐三分 grammar_cjkRuby: true --- Django2.0版本已经发布了,我们先来看一个图片 从 ...

  3. Apache Spark 2.2.0 中文文档

    Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...

  4. webpack4.0中文文档踩坑记录

    一直没有正儿八经去看过webpack4.0的文档,前段时间工作比较轻松,于是就有了此文...面都这样一个问题:请问在您的开发生涯中,令你最痛苦最无奈的是什么?小生的回答只有一个:“阅读那些令人发指的文 ...

  5. Apache Spark 2.2.0 中文文档 - 概述 | ApacheCN

    Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎 ...

  6. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  7. Apache Spark 2.2.0 中文文档 - SparkR (R on Spark) | ApacheCN

    SparkR (R on Spark) 概述 SparkDataFrame 启动: SparkSession 从 RStudio 来启动 创建 SparkDataFrames 从本地的 data fr ...

  8. Apache Spark 2.2.0 中文文档 - Structured Streaming 编程指南 | ApacheCN

    Structured Streaming 编程指南 概述 快速示例 Programming Model (编程模型) 基本概念 处理 Event-time 和延迟数据 容错语义 API 使用 Data ...

  9. Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

随机推荐

  1. 异步nodejs代码的同步样子写法样例

    异步nodejs代码的同步样子写法样例 js的异步嵌套太深代码将不好看.尤其在用node的时候这种情况会大量出现. 这里用node连接redis,做一个用户注册的简单例子来说明.例如用redis做存储 ...

  2. 使用 Azure CLI 将 IaaS 资源从经典部署模型迁移到 Azure Resource Manager 部署模型

    以下步骤演示如何使用 Azure 命令行接口 (CLI) 命令将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Azure Resource Manager 部署模型. 本文中的操作需要 Az ...

  3. mongodb 3.4 TAR包启动多个实例

    1:解压压缩文件 tar .tgz mkdir /home/maxiangqian/ mv mongodb /home/maxiangqian/ 2:加入环境变量 export PATH/bin:$P ...

  4. Controller与View数据传递 多Model传递

    1)ViewBag变量方式 使用4个ViewBag变量进行数据传递,Data1.Data2.Data3.Data4的数据直接从数据库里调. Control中伪代码如下所示: 1 public Acti ...

  5. LevelDB源码分析之:arena内存管理

    一.原理 arena是LevelDB内部实现的内存池. 我们知道,对于一个高性能的服务器端程序来说,内存的使用非常重要.C++提供了new/delete来管理内存的申请和释放,但是对于小对象来说,直接 ...

  6. JavaScript的DOM_操作内容

    一.innerText 属性 <script type="text/javascript"> window.onload = function(){ var box = ...

  7. hdu 6216 A Cubic number and A Cubic Number【数学题】

    hdu 6216 A Cubic number and A Cubic Number[数学] 题意:判断一个素数是否是两个立方数之差,就是验差分.. 题解:只有相邻两立方数之差才可能,,因为x^3-y ...

  8. bzoj 2111: [ZJOI2010]Perm 排列计数 (dp+卢卡斯定理)

    bzoj 2111: [ZJOI2010]Perm 排列计数 1 ≤ N ≤ 10^6, P≤ 10^9 题意:求1~N的排列有多少种小根堆 1: #include<cstdio> 2: ...

  9. Volecity模板引擎学习笔记

    转自:https://blog.csdn.net/reggergdsg/article/details/50937433 最近项目中用到了volecity模板,这里做一下笔记,学习中...相比较 Fr ...

  10. php------中文出现乱码解决方法

    中文出现乱码解决方法:原因编码格式不一致 [1]  建立数据库的时候,字符集选择utf-8  数据库,点表名,点右键,数据库属性…. [2]  修改myspl的配置,在[myspld]模块下面添加ch ...