学习Julia与弯道超车

1. Julia是什么?

Julia 是一个面向科学计算的高性能动态高级程序设计语言。其语法与其他科学计算语言相似。他们想要的是一个开源的软件,它要像C语言一般快速而又拥有如同Ruby的动态性;要具有Lisp般真正的同像性(Homoiconicity)而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的…… 百度百科

2. Julia相对于R和Python的优势

2.1. Julia很快

看一下Julia官网上的Benchmark,Julia综合速度,是R语言的42倍,是Python的15倍,是Java的3倍,是Fortran的1倍,和C语言速度不相上下。

2.2. 原生态支持并行运算和GPU开发

Julia是为为并行计算和分布式计算而设计,更适合于大数据的开发和运算。Python和R这方面先天不足。

2.3. Julia比R更像Python

Julia,R和Python被称为科学运算的三大语言,R语言是统计学家开发的,更偏向于统计分析,工程化不足。Python是简单工程化语言,但是数学运算速度慢。Julia相对于R语言,更工程化,而且更快,缺点是相关的包比较少。Julia相对于Python而言,更专注于科学运算。未来我相信,Julia会把R语言在数据科学的份额占掉一大半,同时会吞食Python在数据科学中的位置。

3. Julia的应用前景(来源:Julia中文官网)

3.1. 数据可视化和绘图

3.2. 组建, 部署或者嵌入代码

Julia可以让你开发用户界面,静态编译代码,甚至部署到网页服务器上。它还有强大的类似壳层(shell)的管理进程功能。它还提供类似Lisp的宏和其它元编程的能力。它还和其它语言友好相处,提供 C, Python, R, Java, 还有更多的语言之间的稳定的界面。

3.3. 数据科学

3.4. 规模化机器学习

Julia为机器学习和人工智能提供强大的深度学习工具 (Flux and Knet)。和论文中发表的数学公式一样, Julia的数学语法是表达算法的理想方式,通过 自动微分, GPU加速和terabytes数据支持来 建立可训练的模型。

Julia丰富的机器学习生态系统还提供监督式学习算法, 比如 回归, 决策树, 以及非监督式学习算法,比如 聚类 。您还可以找到 贝叶斯网络和 马尔科夫蒙特卡洛的外部库。

3.5. 丰富的科学计算生态环境

3.6. 并行和异构计算

Julia设计上就具有并行性, 提供各个层次的内置并行计算能力: 矢量化(SIMD), 多线程 和 超级计算机上运行的分布式计算, Julia复杂的编译器可以生成各种硬件加速器的机器码,比如GPUs 和至强融核。编写在所有平台上都可以运行的通用代码, 不需要考虑底层的细节。

4. 学习Julia与弯道超车

一个朋友说,当你下决心做一件事情时,最难的部分已经过去了。

古人也说:“天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。”

关于很多事情,都有一个先发优势,遇到新的东西,积极拥抱,上士闻道,勤而行之。这才是应该有的态度。

人应该有舍我其谁的自信,而不是妄自菲薄,故步自封。

中国通过互联网革命,取得领头。育种通过Julia获得新生。

5. Julia学习笔记

为了更好的记录“学习Julia”这个Flag,我将公众号的菜单列了一个子目录“Julia”,记录自己的学习笔记,后期积累一段之后,放到知识星球里面。目前的章节有:

R语言 Julia以及全基因组选择

R语言和Julia以及Python使用Feather包共享数据

JWAS: 基于Julia开发的一款基于贝叶斯的GWAS和GS软件

本文分享自微信公众号 - 育种数据分析之放飞自我(R-breeding)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一篇文章入门Netty

    什么是Netty?Netty是一个框架。或者说是一个工具集。封装了网络编程方面java的API。

    爬蜥
  • Netty中的线程处理EventLoop

    运行任务处理的在编程上的构造通常称作事件循环,Netty使用EventLoop来描述。一个EventLoop将由一个永远不会变的Thread驱动,它可以被指派给...

    爬蜥
  • BigData | Apache Beam的诞生与发展

    Paper1: https://research.google.com/pubs/archive/35650.pdf

    Sam Gor
  • Java 学习笔记(11)——多线程

    Java内部提供了针对多线程的支持,线程是CPU执行的最小单位,在多核CPU中使用多线程,能够做到多个任务并行执行,提高效率。

    Masimaro
  • allwefantasy:Rust FFI 实践

    本文由 allwefantasy 首发于 rust.cc 上,感谢 allwefantasy 的投稿。

    MikeLoveRust
  • ASP.NET Core 2.2: SignalR的Java客户端

    在 ASP.NET Core 2.2中,我们将为 SignalR 新增一个 Java 客户端。此新客户端现在可用。此客户端支持从 Java 代码 (包括 And...

    Edi Wang
  • Spring Boot 快速入门系列(II)—— 数据操作篇之 Spring Data JPA

    从 Spring Boot 快速入门系列前两篇中(Spring Boot 快速入门系列(先导篇) —— 从 Hello World 开始、Spring Boot...

    AiSmart4J
  • Netty中的ByteBuf详解

    ByteBuf本身有一定的容量限制,默认最大的是Integer.MAX_VALUE,超出范围抛IndeOutOfBoundsException

    爬蜥
  • 面试|再次讲解Threadlocal使用及其内存溢出

    浪尖整理本文主要是想帮助大家完全消化面试中常见的ThreadLocal问题。希望读懂此文以后大家可以掌握(没耐心的可以直接阅读底部总结):

    Spark学习技巧
  • JAVA 引用详解

    引用链条可以说是jvm垃圾回收的根本,而且很多编程都可以利用引用类型和jvm之间的关系来做一些系统优化。比如spark,缓存及广播变量的回收等就是采用的弱引用。...

    Spark学习技巧

扫码关注云+社区

领取腾讯云代金券