The Julia Programming LanguageThe official website for the Julia Language. Julia is a language that is fast, dynamic, easy to use, and open source. Click here to learn more.https://julialang.org/

Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。

Julia 语法和其他编程语言类似,易于其他语言用户学习。Julia 拥有丰富的函数库,提供了数字精度、精致的增幅器(sophisticated amplifier)和分布式并行运行方式。核心函数库等大多数库是由 Julia 编写,但也用成熟的 C 和 FORTRAN 库来处理线性代数、随机数产生和字符串处理等问题。Julia 语言可定义函数并且根据用户自定义的参数类型组合再进行重载。

功能

主要用于数值计算

特点介绍

  • 免费开源

  • 核心语言非常小。标准库用的是 Julia 语言本身写的

  • 调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。(还在增加中……)

  • 丰富的用于建立或描述对象的类型语法

  • 高性能,接近于静态编译型语言。包括用户自定义类型等

  • 为并行计算和分布式计算而设计

  • 轻量级“绿色”协程

  • 优雅的可扩展的类型转换/提升

  • 支持Unicode, 包括但不限于UTF-8

  • 可直接调用 C 函数(不需要包装或是借助特殊的API)

  • 有类似shell的进程管理能力

  • 有类似Lisp的宏以及其它元编程工具

示例

#生成Mandelbrot集合

function mandel(z)

    c = z

    maxiter = 80

    for n = 1:maxiter

        if abs(z) > 2

            return n-1

        end

        z = z^2 + c

    end

    return maxiter

end

JIT 高性能编译器

Julia 使用的 JIT (Just-in-Time) 实时编译器很有效地提高了它的运行效率,在某些地方甚至能比得上 C 和 C++。

下面通过标准测试程序来测试下它的效率,你可以自己比较下各语言的运行效率。

注:运行环境是 MacBook Pro,2.53GHz,Intel Core2 Duo CPU 和 8G 1066MHz,DDR3 内存。

上表中只有 C++ 运行时间是绝对时间,其它都是相对于 C++ 的相对时间,数值越小代表用时越少。除少数几项测试 Julia 惜败于 Matlab 和 JavaScript 外,Julia 完胜其他高级语言,甚至在 pi summation 上,成功以 25% 的优势击败 C++。通过使用 Intel 核心数学库 (MKL),MatLabs 在矩阵乘法运算中稍占便宜,但是拥有 MKL 授权的 Julia 同样可以使用 Intel MKL 库,不过默认的开源 BLAS 库性能也不错。

这个测试表是通过编译器性能对一系列常用代码模式进行分析而得出的。比如:字符串解析、函数调用 / 回调、排序和数值循环、生成随机数和数组运算等。

Julia 克服了高级语言一直难以逾越的难关:标量算数循环(在 pi summation 上就能体现出来。)。Matlab 的浮点运算 JIT 和 V8 JS 引擎对此也处理得很好。但 JS 不支持 LAPACK 等线性代数库导致了在矩阵运算中的低性能,而 Julia 有比较多的方法消除负载(overhead),使得它可以轻松支持任何函数库。

矩阵统计的 Julia 代码虽然性能上比不上 C++ 但却要简洁得多。然而,规范和编制太过随意可能会在将来成为一个问题。

Julia 代码示例:

function mandel(z)  c = z maxiter = 80 for n = 1:maxiter  if abs(z) > 2  return n-1  end  zz = z^2 + c  end  return maxiter
end  function randmatstat(t)  n = 5 v = zeros(t)  w = zeros(t)  for i = 1:t  a = randn(n,n)  b = randn(n,n)  c = randn(n,n)  d = randn(n,n)  P = [a b c d]  Q = [a b; c d]  v[i] = trace((P.'*P)^4)  w[i] = trace((Q.'*Q)^4)  end  std(v)/mean(v), std(w)/mean(w)
end

为并行处理和云计算而生

Julia 为分布式计算提供很多关键模块,使得它可以更加灵活地支持多种并行处理。

Julia是一门非常适合科研工作者,而非专业程序员使用的编程语言。Julia的上手非常快,官方提供了Python、MATLAB和R等语言与Julia的对比,这对于不是程序员出身的科研工作者非常友好。更重要的是,Julia本身的特性与核心生态都是围绕科学计算展开的。

比如Julia原生支持多维数组、标准库内建LinearAlgebra线性代数库,原生支持实数类型(Real)、复数类型(Complex)、分数类型(Rational)、正负无穷类型(Inf),向量类型(Vector)、矩阵类型(Matrix)等等,也就是在数学中定义的概念在Julia中基本上都能直接找到,而且大部分还都是原生支持。

又比如,Julia的生态系统是以学科或者专业领域进行组织的,常见的有:微分方程为核心的SciML社区、数学优化为核心的JuliaOpt、概率统计为核心的JuliaStats、动力学为核心的JuliaDynamics,机器学习为核心的FluxML等等。得益于Julia优秀的设计,融合不同包是一件容易的事儿,如解微分方程的DifferentialEquations.jl和搭建神经网络的Flux.jl包经过融合,形成了神经微分方程(Neural Differential Equation)这个交叉前沿领域的工具包:DiffEqFlux.jl;实现GPU计算的CUDA.jl与神经网络包Flux.jl的融合,直接让Flux支持了GPU加速;ForwardDiff.jl实现的前向自动微分,ReverseDiff.jl实现的反向自动微分和Zygote.jl实现的源码到源码自动微分组合在一起,让Julia具备了实现可微分编程的条件。

Julia还有胶水语言的特性,可以和C、Python、Fortran等传统语言混合编程,也可以被嵌入到这些语言当中。

Julia环境搭建

Julia 安装

下载路径
Download Julia

国内镜像列表
目前国内有以下镜像提供Julia二进制文件的稳定下载:

  • 清华大学开源软件镜像站
  • 北京外国语大学开源软件镜像站
  • 上海交通大学软件源镜像服务

点击Download下载最新版Julia并且安装。

配置环境变量
Win10搜索栏中搜索“环境变量”,打开后点击右下方的环境变量,进入此窗口后双击Path。

点击新建,内容是安装Julia所在的bin文件夹,例如:D:\Julia\Julia-1.4.2\bin,然后一路确定即可。
打开cmd命令窗口输入julia,输出如下即说明环境变量配置成功。

安装Julia运行环境

安装Anaconda
到Anaconda官网或者国内清华镜像源下载Anaconda安装包并安装即可,具体过程不再赘述。

安装Jupyter notebook
打开Anaconda,点击安装Jupyter notebook即可。此时打开Jupyter notebook,点击new,没有Julia的选项。

配置Jupyter notebook的Julia环境
打开Julia,输入using Pkg,回车后再输入Pkg.add("IJulia")并回车,然后等待其自动下载安装好即可。

此时打开Jupyter notebook,点击new,即可看到Julia 1.4.2字样的环境,点击进入。

输入println("Hello, Julia"),按住shift+回车便可以运行写好的第一条Julia语句了。

或者

下载VsCode软件,Visual Studio Code - Code Editing. Redefined

打开VsCode, View ,Extensions 搜索Julia,安装 Julia插件。

安装好插件后,右键点击Julia,进入Extension Settings,在Executable Path里写Julia,就可以设置好环境了

(或者填写exe文件的具体位置:d:\Julia 1.5.0\bin\julia.exe)。

Julia(编程语言)相关推荐

  1. julia 编程语言_Julia编程语言中的变量

    julia 编程语言 Julia中的变量 (Variables in Julia) Just like other programming languages, in Julia variables ...

  2. 随机器学习兴起的Julia编程语言

    Julia这个编程语言即有Python的开发效率,也有C的执行效率,是为数值运算设计的编程语言.Julia可以直接调用C,很多开源的C和Fortran库都集成到了Julia基础库.另外,它也有note ...

  3. julia编程语言有前途吗?

    Julia是一种高级编程语言,特别适合科学计算和数据分析.它具有高效的运行速度和易于使用的语法,并且有很多功能强大的包和工具. 随着数据科学和人工智能领域的不断发展,Julia在这些领域的需求越来越大 ...

  4. 大手笔 !Julia Computing 获 2400 万美元融资,前 Snowflake CEO 加入董事会

    整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 2021 年 7 月 19 日,由 Julia 高性能编程语言创始人成立的 Julia Computing 公司完成了 2400 万美元 ...

  5. 对Julia社区不熟悉?创始人来告诉你

    有很多组织与Julia编程语言相关,但是很多人并不完全清楚这些群体的职责以及他们之间的关系.在这篇博文中,我将回答这些问题. Julia Julia 项目由 Jeff Bezanson,Alan Ed ...

  6. R 语言排名破纪录,一不小心把 PHP 比下去了 | 7月编程语言排行

    本月统计编程语言 R 语言,从第 9 位升至第 8 位,创下新纪录,而在 2019 年同期 R 语言仅排名第 20 位. 不久前,Python 赢得了统计编程语言排名的胜利,R 语言也在 Python ...

  7. 贾扬清、Alex Smola、Julia创始人等大咖齐聚,WAIC开发者日共话AI未来

    2019 年世界人工智能大会(WAIC)将于 8 月 29 日至 31 日 在上海举办,今年的WAIC 以"智联世界 无限可能"为主题,其中 WAIC 开发者日是此届大会唯一一个面 ...

  8. 什么样的编程语言,竟然能融资 1.6 亿?

    作者 | 程序员书库(ID:CodingBook) 猿妹综合整理 来源 | https://mp.weixin.qq.com/s/nStSYdTqMMgD9nlIDWwSuA 由Julia编程语言创造 ...

  9. Julia中的supertype()函数

    Julia| supertype()函数 (Julia | supertype() function) supertype() function is a library function in Ju ...

  10. Julia中的denominator()函数

    Julia| 分母()函数 (Julia | denominator() function) denominator() function is a library function in Julia ...

最新文章

  1. 独家 | 手把手教你推导决策树算法
  2. 1040 有几个PAT(PAT乙级 C++)
  3. 为什么服务器要选择 Linux,这里总结了 10 大理由
  4. 《AFTrans》来自ViT的免费午餐!北大阿里提出用于细粒度视觉识别的自适应注意多尺度融合Transformer...
  5. Civil 3D 二次开发 新建CLR项目出现错误C2143
  6. 如何识别SQL Server中运行缓慢的查询
  7. gulp plugins
  8. python中jieba库的作用_Python jieba库用法及实例解析
  9. window11 网络突然就用不了,系统更新网络就用不了了,DNS服务器可能不可用
  10. c语言课程设计三色球问题,C++三色球问题描述与算法分析
  11. 利普希茨【NOIP2017模拟8.7A组】
  12. 高质量作品集封面合集(含封面素材、字体包和作品集封面原始文档)
  13. 无位置传感器的电机控制
  14. vim资源很全的一个网站
  15. 谷传民对战大衣哥,和合国际收购《火火的情怀》后孟文豪新曲上线
  16. 查看虚拟机里的Centos7的IP
  17. 爬虫技术-滑块验证码
  18. 你真的会用搜索引擎吗?
  19. 一个奇怪的bug,记录一下
  20. 【数据库】HIVE SQL索引及其使用

热门文章

  1. java pos58打印_POS58小票打印机
  2. java中map是不是有序_Map中有序存储
  3. windows环境下使用bitvise搭建ssh server
  4. SQL Express几个版本的区别
  5. testbed软件测试技巧,基于LDRA Testbed 软件的单元测试
  6. 小程序跳转样式布局错乱_微信小程序页面布局问题
  7. javaCRC8计算的坑
  8. 无法定位程序输入点于动态链接库怎么办
  9. GZH逸佳君:照片杂色太可怕,谁丑谁尴尬:送你超实用PS降噪插件,1秒变高清
  10. 【二级等保】二级等保怎么做?价格怎么样?贵吗?