日期和时间

Dates 模块提供了两种关于时间的数据类型: DateDateTime, 精度分别为天和毫秒, 都是抽象数据类型 TimeType 的子类型. 使用两种数据类型的原因很简单: 某些操作本身很简单, 无论是从代码上看还是逻辑上, 使用高精度的数据类型是完全没有必要的. 例如, Date 只精确到天 (也就是说, 没有小时, 分钟或者秒), 所以使用时就不需要考虑时区, 夏令时和[……]

Read more

并行计算

Julia 提供了一个基于消息传递的多处理器环境,能够同时在多处理器上使用独立的内存空间运行程序。

Julia 的消息传递与 MPI [1] 等环境不同。Julia 中的通信是“单边”的,即程序员只需要管理双处理器运算中的一个处理器即可。

Julia 中的并行编程基于两个原语:remote referencesremote calls 。remote referenc[……]

Read more

网络和流

Julia 提供了一个丰富的接口处理终端、管道、tcp套接字等等I/O流对象。

接口在系统层的实现是异步的,开发者以同步的方式调用该接口、一般无需关注底层异步实现。 接口实现主要基于Julia支持的协程(coroutine)功能。

基本流 I/O

所有 Julia 流都至少提供一个 read 和一个 write 方法,且第一个参数都是流对象,例如:

    julia>[......]

Read more

在整个夏天,我一直致力于提高Flux的计算机视觉功能。 我的具体工作是为Flux模型动物园添加更新的模型 , 实现一些新功能 ,并提高前一层的速度 。 具体来说,我为Convolutions加速了18  , BatchNorm加速了3倍 。

我在GSoC 2018期间的工作简述

我列出了我在这个项目中所做的所有必要的PR。 其中一些是合并的,一些[……]

Read more

在这里,我们处于Google Summer of Code 2018的另一端。这是一次具有挑战性和教育性的体验,我不会有任何其他方式。 我很感谢朱莉娅社区,特别是我的导师@MikeInnes ,感谢他支持我。 我学到了很多东西,比以前更熟悉神经网络,我学会了如何进行基本的GPU编程,这对我的学术生涯非常有用。

本博文的其余部分将总结我的项目和我整个夏[……]

Read more

多维数组

数组是一个存在多维网格中的对象集合。通常,数组包含的对象的类型为 Any 。对大多数计算而言,数组对象一般更具体为 Float64Int32

因为性能的原因,Julia 不希望把程序写成向量化的形式。

在 Julia 中,通过引用将参数传递给函数。Julia 的库函数不会修改传递给它的输入。用户写代码时,如果要想做类似的功能,要注意先把输入复制一份儿。

数组

[……]

Read more

元编程

类似 Lisp ,Julia 自身的代码也是语言本身的数据结构。由于代码是由这门语言本身所构造和处理的对象所表示的,因此程序也可以转换并生成自身语言的代码。元编程的另一个功能是反射,它可以在程序运行时动态展现程序本身的特性。

表达式和求值

Julia 代码表示为由 Julia 的 Expr 类型的数据结构而构成的语法树。下面是 Expr 类型的定义:

type Expr
  he[......]

Read more

模块

Julia 的模块是一个独立的全局变量工作区。它由句法限制在 module Name ... end 之间。在模块内部,你可以控制其他模块的命名是否可见(通过 import ),也可以指明本模块的命名是否为 public(通过 export)。

下面的例子展示了模块的主要特征。这个例子仅为演示:

    module MyModule
    using Lib

    u[......]

Read more

类型转换和类型提升

Julia 可以将数学运算符的参数提升为同一个类型,这些参数的类型曾经在整数和浮点数数学运算和基本函数类型,及方法中提到过。

在某种意义上,Julia 是“非自动类型提升”的:数学运算符只是有特殊语法的函数,函数的参数不会被自动转换。但通过重载,仍能做到“自动”类型提升。

类型转换

convert 函数用于将值转换为各种类型。它有两个参数:第一个是类型对象,第[……]

Read more

构造函数

构造函数[1]是构造新对象,即新复合类型实例的函数。构造类型对象:

type Foo
  bar
  baz
end

julia> foo = Foo(1,2)
Foo(1,2)

julia> foo.bar
1

julia> foo.baz
2

递归数据结构 ,尤其是自引用的数据结构,常需要先构造为非完整状态,再按步骤将其完善。我们[……]

Read more

类型

Julia 中,如果类型被省略,则值可以是任意类型。添加类型会显著提高性能和系统稳定性。

Julia 类型系统的特性是,具体类型不能作为具体类型的子类型,所有的具体类型都是最终的,它们可以拥有抽象类型作为父类型。其它高级特性有:

  • 不区分对象和非对象值:Julia 中的所有值都是一个有类型的对象,这个类型属于一个单一、全连通类型图,图中的每个节点都是类型。
  • 没有“编译时[……]

Read more

在那些密切关注朱莉娅发展的人中,引起极大兴奋的(很多)新功能之一就是所谓的“联盟分裂”。在JuliaCon 2018,我发现自己反复解释这个功能,所以我想我会写这个博客文章有助于更广泛地传播这一重要信息。 首先让我说我不是这里的专家 – 这是詹姆森纳什和雅各布奎因增加的一个功能,并且通过基诺费舍尔的优化改进得到了增强 – 但我是很多人真正兴奋的一个人改变我写Ju[……]

Read more

备受期待的Julia语言的1.0版本积累了富有野心的程序员们的十年心血。 在 JuliaCon2018 发布会上,Julia 社区正式将该版本设置为1.0.0

Julia项目起初是因为这些强烈的需求而公开发起的开源项目:

我们想要的是一个自由开源的语言,并且它同时拥有C的速度和Ruby的动态性;我们想要一个具有同像性(可以将语言的脚本本身当作数据进行处理)的语言, 它有着真正的和lisp[……]

Read more

在Windows上编译Qt和Julia Studio

本节提供了在Windows上编译Qt和Julia Studio最新版本的分步说明。或者,为了避免必须自己编译Qt,您可以使用Qt SDK附带的Qt版本之一(使用MinGW和Visual C ++ 2008发布Qt版本)。

源码下载:https://github.com/forio/julia-studio

1.确定要使用的编译[……]

Read more

方法

函数中说到,函数是从参数多元组映射到返回值的对象,若没有合适返回值则抛出异常。实际中常需要对不同类型的参数做同样的运算,例如对整数做加法、对浮点数做加法、对整数与浮点数做加法,它们都是加法。在 Julia 中,它们都属于同一对象: + 函数。

对同一概念做一系列实现时,可以逐个定义特定参数类型、个数所对应的特定函数行为。方法是对函数中某一特定的行为定义。函数中可以定义多个方法。对一个[……]

Read more

Julia的一大优势在于,本地调用C代码非常容易,没有特殊的“粘合”例程或编组参数和转换返回值的开销。 例如,如果你想调用GNU GSL来计算像Debye积分这样的特殊函数,它就像下面这样简单:

debye_1(x) = ccall((:gsl_sf_debye_1,:libgsl), Cdouble, (Cdouble,), x)

&nbsp[……]

Read more

函数

Julia 中定义函数的基本语法为:

function f(x,y)
  x + y
end

Julia 中可以精炼地定义函数。上述传统的声明语法,等价于下列紧凑的“赋值形式”:

f(x,y) = x + y

 

对于赋值形式,函数体通常是单表达式,但也可以为复合表达式(详见复合表达式)。Julia 中常见这种短小简单的函数定义。短函数语法相对而言更方便输入[……]

Read more

变量的作用域

变量的作用域是变量可见的区域。变量作用域能帮助避免变量命名冲突。

作用域块是作为变量作用域的代码区域。变量的作用域被限制在这些块内部。作用域块有:

  • function 函数体(或语法
  • while 循环体
  • for 循环体
  • try
  • catch
  • let
  • type

注意 begin 块不能引入新作用域块。

当变[……]

Read more

变量声明

在 Julia 中的一个变量是一个与一个值关联(或绑定)的名称。它的作用表现在当你想存储一个值(例如,你在进行一些数学运算后得到了一些值,你需要在之后使用到这些值)时。Julia语言中变量的声明是可以省略的,不同于C语言等其他语言;它支持直接给未声明的变量赋值,例如:

# 给 a 变量赋值为 12
julia> x = 12
12

# 对a进行数学运算
julia&[......]

Read more

复数和分数

Julia 提供复数和分数类型,并对其支持所有的标准数学运算 。对不同的数据类型进行混合运算时,无论是基础的还是复合的,都会自动使用类型转换和类型提升

复数

全局变量 im 即复数 i ,表示 -1 的正平方根。因为 i 经常作为索引变量,所以不使用它来代表复数了。Julia 允许数值文本作为代数系数 ,也适用于复数:

julia> 1 + 2im
1 + 2im

[……]

Read more

儿童黑话及其它隐匿语言

TensorFlow(TF)等框架2已被公认属于编程语言,尽管它们在某些方面还有局限。这多少有些意料之外,毕竟大家 TF 编程时用的是 Python。然而琢磨一下就会发现,TF 只是让你用 Python 代码构造了一个表达式树,这个表达式树是用其内部语言表示的,之后再进行计算。

实际上,可以在任何语言上实现 TensorFlow 这种“延迟”计算的风格。如下 Jav[……]

Read more

Julia 编程语言提供了一系列基础数学函数和运算符:

舍入函数

函数 描述 返回类型
round(x) 把 x 舍入到最近的整数 FloatingPoint
iround(x) 把 x 舍入到最近的整数 Integer
floor(x) 把 x 向 -Inf 取整 FloatingPoint
ifloor(x) 把 x 向 -Inf 取整 Integer
ceil(x) 把 x 向 +Inf 取整 FloatingPoint
iceil(x) 把 x 向 +Inf 取整 Integer
trunc(x) 把 x 向 0 取整 FloatingPoint
itrunc(x) 把 x 向 0 取整 Integer
[……]

Read more

下面的Julia语言算术运算符适用于所有的基本数值类型:

表达式 名称 描述
+x 一元加法 x 本身
-x 一元减法 相反数
x + y 二元加法 做加法
x – y 二元减法 做减法
x * y 乘法 做乘法
x / y 除法 做除法
x \ y 反除 等价于 y / x
x ^ y 乘方 x 的 y 次幂
x % y 取余 等价于 rem(x, y)
以及 Bool 类型的非运算:[……]

Read more

 

Julia 与传统动态语言最大的区别是:

  • 核心语言很小;标准库是用 Julia 本身写的,如整数运算在内的基础运算
  • 完善的类型,方便构造对象和做类型声明
  • 基于参数类型进行函数重载
  • 参数类型不同,自动生成高效、专用的代码
  • 高性能,接近静态编译语言,如 C 语言

由于 Julia 的编译器与像 Python 或者 R 语言的解释器不同,你可能[……]

Read more

简介

Julia 是个非常年轻、灵活的动态语言,非常适合科学和数值计算,性能甚至可以与传统静态类型语言(C/C++)相媲美。

2018年 8 月 9 日,在伦敦举行的 JuliaCon 2018 会议上,Julia1.0 版本正式发布,这对 Julia 来说是自 2012 年 2 月公司成立以来最重要的时刻。

通过使用类型推断和即时(JIT)编译 ,以及 LLVM ,Julia 具有[……]

Read more