官网:https://julialang.org/

中文社区:https://cn.julialang.org/

Julia 是一个面向科学计算的高性能动态高级程序设计语言。

首先定位是通用编程语言,其次是高性能计算语言。

发展历史

2019年中,Julia语言诞生于MIT。

2012年2月14日,发布v0.1.0版本。

2018年8月8日,发布v1.0.0版本。

2021年11月30日,发布v1.7.0版本。

诞生背景

尝试寻找两种编程语言性能和动态的平衡点:静态语言和动态语言。

双重编程语言的问题,语法与速度。

Why We Created Julia

We are greedy: we want more.

We want a language that's open source, with a liberal license. We want the speed of C with the dynamism of Ruby. We want a language that's homoiconic, with true macros like Lisp, but with obvious, familiar mathematical notation like Matlab. We want something as usable for general programming as Python, as easy for statistics as R, as natural for string processing as Perl, as powerful for linear algebra as Matlab, as good at gluing programs together as the shell. Something that is dirt simple to learn, yet keeps the most serious hackers happy. We want it interactive and we want it compiled.

期望

Julia 语言的缔造者们对它的期望是这样的:

  • 程序运行速度像 C 语言;
  • 通用性像 Python 语言;
  • 动态语言特性像 Ruby 语言;
  • 统计分析便利性像 R 语言;
  • 字符串处理便捷性像 Perl 语言;
  • 线性代数运算能力像 MATLAB 语言;
  • 元编程能力像 Lisp 语言;
  • 操作系统的能力像 Shell 语言。

目前来说,上述期望还真在很大程度上实现了!

特点

Fast、Dynamic、Reproducible、Composable、General、Open source

快速、动态、可复用的环境、可组合性、通用、开源

写起来快

语法基于数学语言。

支持的编程范式:面向对象和函数式。

julia语法复杂度最多有1/3个ruby,1/20个scala,1/30个cpp。---知乎上某用户的评价

跑起来快

Julia Joins Petaflop Club - Julia Computing

Petaflop :每秒千万亿次浮点运算

Petaflop Club成员目前有四个:Fortran、C、C++、Julia

优缺点

优点

  1. Julia 的运算速度能接近 C++ 和 Fortran。
  2. Julia 的可读性比其他语言好,(十年后回头看自己的代码也能秒懂)。

缺点

  1. 社群小,学习资料主要是英文。
  2. 包不够多,目前6000多个了,不过有些处于废弃状态。

可持续发展与开源

项目开源,但团队成员均是全职,几乎都是 Julia 委员会的长期成员。

资金来源:

  1. 商业咨询服务
  2. 赞助

Fichser(项目的长期贡献者之一)指出,“开源项目的货币化努力总是压力重重。在项目开发早期,就有一些风投建议我们把性能优化功能当作付费开放的选项,这样更容易获利。但我们不想这么干,我们开发 Julia 的初衷就是为人们提供能真正解决困难问题的工具,而为了赚钱故意把核心功能去掉简直离谱。所以我们坚定了决心,要找到一条既不阻碍技术应用、也能从中获利的发展道路。”

Julia Computing 公司

https://juliacomputing.com/

该公司成立于 2015 年,其成立最重要的目的就是为了发展 Julia 语言。其旗舰产品 JuliaHub 是一个 SaaS(Software as a Service)平台,允许用户直接在平台上使用 Julia 开发、部署应用,并扩展上千个节点。

Julia的使用者/Julia Computing的客户

使用

安装

下载地址:https://julialang.org/downloads/

IDE

目前建议用atom,不过未来属于vscode

线上环境

https://www.nhooo.com/tool/julia/

https://julialang.org/learning/tryjulia/

包管理

Julia现在的包已有6000多个,常用的基本都有了。

已注册包的路径:C:\Users{yourname}.julia\registries\General

安装已注册的包,在REPL 环境中

  1. 运行 import Pkg
  2. Pkg.add("包名")

入门资料

  1. https://learnxinyminutes.com/docs/julia/
  2. https://www.math.pku.edu.cn/teachers/lidf/docs/Julia/JuliaIntro.html

入门这两个足够了。

项目中的应用

转表工具

双周发版、每版500关卡数计算,1年约12万份关卡。平均关卡大小15K,总大小1.7G。

第一次优化:耗时降低了96%。优化前12分钟(python),优化后30秒(julia重写+逻辑优化+多线程)。

第二次优化:耗时降低了60%。优化后12秒(替换使用不当的函数)。

current threads:6

versions num:287

begin:2021-12-21T15:14:09.744

end:2021-12-21T15:14:21.349

cost:11678 ms

per:40.0 ms

参考

https://zhuanlan.zhihu.com/p/70598973

https://zhuanlan.zhihu.com/p/408764534

https://www.infoq.cn/article/0mck3o3diwhUW77RmFJ9

https://www.infoq.cn/article/b0dpmasunf3lbb8y2svq

一图了解 Julia(lang) v2.0 狐狸教程

《Julia 编程基础》正式出版! 狐狸教程

https://zhuanlan.zhihu.com/p/105953560

Julia语言介绍的更多相关文章

  1. Julia语言:让高性能科学计算人人可用

    Julia语言:让高性能科学计算人人可用要:一群科学家对现有计算工具感到不满:他们想要一套开源系统,有C的快速,Ruby的动态,Python的通用,R般在统计分析上得心应手,Perl的处理字符串处理, ...

  2. R语言实战读书笔记1—语言介绍

    第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...

  3. Arduino语言介绍

    Arduino语言介绍 Arduino语言是建立在C/C++基础上的,其基础是C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让不了解AV ...

  4. day02编程语言,Python语言介绍,Python解释器安装,环境变量,Python代码执行,pip,应用程序使用文件的三步骤,变量,变量的三大组成,比较,pycharm

    复习 重点: 1.进制转换:二进制 与十六进制 2.内存分布:栈区 与堆区 # 二进制1111转换十六进制 => 8 4 2 1 => f 10101100111011 => 2a7 ...

  5. (转)expect命令脚本语言介绍及生产实践

    原文:http://www.fblinux.com/?p=526 Expect介绍 expect是一个用来实现自动交互功能的软件套件,是用来实现自动和交互式任务程序进行通信,无需人的手工干预.比如SS ...

  6. Java众神之路(1)-语言介绍

    Java语言介绍 1.Java的历史 我个人认为,学习一种技术,不止要关注技术本身,也应该去了解一下它的发展史,这一方面是对技术本身的尊重,另一方面也是希望能够通过该技术的发展历史推测出其未来可能的发 ...

  7. C语言基础 (3) C语言介绍

    01回顾 02 语言介绍 语言是人和人交流,C语言是人和机器交流. 03_为什么学C语言 04_第一个C代码编译运行 #include <stdio.h> int main() { // ...

  8. solidity语言介绍以及开发环境准备

    solidity语言介绍以及开发环境准备   Solidity 是一门面向合约的.为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的 ...

  9. 尚学python课程---12、python语言介绍

    尚学python课程---12.python语言介绍 一.总结 一句话总结: 1.操作简单:简便计算:允许通过单个“import”语句后跟一个函数调用来完成复杂的计算.虽慢 2.库丰富:比如人工智能和 ...

随机推荐

  1. 转换…Transform…(Power Query 之 M 语言)

    转换列: = Table.TransformColumns( 表, {{"列名1", 转换函数1, 数据类型1},-,{"列名n", 转换函数n, 数据类型n} ...

  2. 突出显示(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 当一个大的项目文件做好以后,查看全部内容,肉眼多少会有点吃不消,这时就需要"划重点".在Porect里 ...

  3. 移动应用开发:Flutter

    目录 前言 Flutter 介绍 移动应用开发:选择对比 原生开发 H5 技术 React Native Flutter 总结 参考 前言 "镜子镜子 告诉我,世界上最好的语言是什么&quo ...

  4. mail如何在linux中发送邮件,使用163邮箱发信。

    如何在linux中发送邮件,使用163邮箱发信.   linux中,可以使用mail命令往外发送邮件,在使用前,只需要指定如下简单配置即可,这里演示用  163.com    邮箱发送至 qq.com ...

  5. .Net Core 文件打包压缩

    最近项目需要实现多文件打包的功能,尝试了一些方法,最后发现使用  ICSharpCode.SharpZipLib 最符合项目的要求. 具体实现如下: 1.在 Nuget 中安装  ICSharpCod ...

  6. C++基础之虚析构函数原理

    结论 虚函数表指针 + 虚函数表 共同实现 演示 VS2017(32位) 基类有析虚构函数 一段代码演示 #include <iostream> #include <memory&g ...

  7. 【剑指Offer】10- I. 斐波那契数列 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 递归 动态规划 日期 题目地址:htt ...

  8. UVA11754 - Code Feat

    Hooray!  Agent Bauer has shot the terrorists, blown upthe bad guy base, saved the hostages, exposed ...

  9. 1254 - Prison Break

    1254 - Prison Break   PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Mic ...

  10. 实战!Spring Boot 整合 阿里开源中间件 Canal 实现数据增量同步!

    大家好,我是不才陈某~ 数据同步一直是一个令人头疼的问题.在业务量小,场景不多,数据量不大的情况下我们可能会选择在项目中直接写一些定时任务手动处理数据,例如从多个表将数据查出来,再汇总处理,再插入到相 ...