GMTC全球大前端技术大会聚焦前端、移动、AI应用等领域15个热门专题方向,购票立减¥960 了解详情
写点什么

我是如何爱上 Julia 编程语言的?

2020 年 12 月 29 日

我是如何爱上 Julia 编程语言的?

本文出处发表于 Towards Data Science 博客,经原作者 Emmett Boudreau 授权,InfoQ 中文站翻译并分享。


为什么 Julia 很快成了我最喜爱的数据科学编程语言。


引言


谈及 2020 年的数据科学,几乎任何事情都有很多选项可供选择。这样对数据科学家来说,既是一个积极的方面,因为科学家可以使用更多的工具工作、预测,同时也是一个消极的方面。因为有了如此多的选择,很难清楚地指出在某些情况下,哪种特定的工具能够工作,或者最适合解决某个问题。


当我在进行研究的时候,偶然接触到一种比较新的科技,那就是 Julia 编程语言。


那时,我一直在用 Python 编写基于 C 语言的后端模型,还有一些 Sklearn 和 Tensorflow 模型,我发现这些模型维护起来非常复杂。在我的特定方案中,当通过请求移动大量数据堆时,我发现自己总会遇到 Pythonic 超时的情况。


在类似这样的场景中,C 后端无疑已经证明了自己的地位,但同时也带来了一个问题。大多数 Python 模块都是用 C 语言编写的,而不是 Python,这些模块在速度方面与其他命令式语言的解决方案相竞争。对于我来说,这让整个系统变得更加令人恼火,开发软件并将其从高级 Python 前端转移到工作中。


说白了,这确实是一个明智的解决方案,C 语言可能是能够快速重复某些内容并使其可靠的最佳方法之一,因此最快的、行业标准的工具采用这个系统是有道理的。但是,要记住,虽然 Python 由 C 语言解释,但 C 是一种不同的语言;这意味着 C 的专有实现常常需要某种依赖系统。


Julia 是如何解决这些问题的


总结一下我对 Python 的失望之处,它是用于 C 语言的一种优秀工具,但由于它是声明性的且面向脚本的,因此通常很难设计出底层解决方案。也就是说,以 Python 的方式运行 Python 实际上会非常缓慢,并且肯定不适合机器学习或大数据操作。


Julia 是一种高级、多范式、高级的编程语言,最近才发布了 1.5 版本,如果你在这个行业,现在就去看看吧!

速度


Julia 是一种速度非常快的编程语言,每个使用它的人都可能是为了这个而学的。使用实时(Just-In-Time,JIT)编译不仅能快速编译,而且使用多态(polymorphic)和语法表达式编写也快得令人难以置信,这些表达式往往能够将完整的函数压缩到一行代码中。


依赖关系


对于依赖关系,Julia 也有一个非常有吸引力的方法。在 Julia 中,环境是以简单的文本数据的形式存储的,即.toml文件,该文件保存了给定项目的所有依赖关系信息。这使得科学家们可以非常容易地彼此分享环境,并更高效地进行合作。它也使得部署模型就像把它放到一个文件夹里一样简单。要知道,Python 的 Pip 环境也有类似的模式,但 Julia 语言真正领先之处在于与预编译、文件管理和存储库的完美集成。


数据


对数据类型,Julia 有独特的处理方法,它使得探索不同类型的统计和科学数据变得更加容易,并使数据可以像在论文中一样表达。对于大数据狂人来说,有Big类型,能够很好的保持浮点精度和整数精度。对于字典迷来说,任何数据类型都可以是一个包含符号的键,这意味着可以通过任意的数据表示形式调用字典键:我认为这比在很多时候使用整数或字符串更好。尤其是在科学研究领域更是如此。集合可以获得唯一的数据集,并且可以用于许多算法,在 Julia 语言中,还有许多类型非常有趣。


数据和代码的另一种扩展是元编程,感兴趣的用户可能会高兴地发现,Julia 语言非常适合元编程。


灵活性


最后,真正让我倾向于主要成为 Julia 程序员的是这门语言的灵活性。在 Julia 中,从经典的函数式编程到完全不同的范式,只需一行简单的代码,就可以轻松实现。Julia 中的表达式是令人难以置信的,只需一行代码就可以轻松地产生科学影响。


总结


总而言之,目前业界领先的解决方案都是很好的工具,但其中肯定也有不同的工具值得探讨。我碰巧真正爱上的工具是 Julia 及其相关的生态系统,它也在快速发展,这让我兴奋不已。作为一名数据科学家,不断更新最新、最棒的工具,甚至实验性工具,对你的行业来说可能都是至关重要的。Julia 是一门神奇的语言,我想任何想要在数据科学中使用它的人,都会喜欢它。无论这门语言能否会成为你代码库的主要贡献者,我认为它肯定是一种我乐于学习并从中学到许多东西的技能。


作者介绍:


Emmett Boudreau,数据科学家。


原文链接:


https://towardsdatascience.com/how-i-came-to-love-the-julia-language-948c32e2f9b0


2020 年 12 月 29 日 14:231268
用户头像
刘燕 InfoQ记者

发布了 554 篇内容, 共 174.4 次阅读, 收获喜欢 1055 次。

关注

评论

发布
暂无评论
发现更多内容

数字货币监管当体现“中国之治”

CECBC区块链专委会

数字货币 CECBC 区块链技术 技术标准 准入和监管

[架构师训练营] Week01 -学习总结

谭方敏

rodert单排学习redis进阶【白银一】

JavaPub

Java nosql redis

Zookeeper集群模式启动

tunsuy

zookeeper 源码分析 socket 分布式集群

第三周-设计模式-学习总结

吴建中

极客大学架构师训练营

太赞了!一份适合程序员的精选面试题清单。

JackTian

GitHub 编程 程序员 面试题 开源项目

面向对象的设计模式

WW

手写单例模式

yupi

windows使用docker运行mysql等工具(一)windows安装docker

Java旅途

MySQL Docker

组合设计模式编码&手写单例模式

吴建中

极客大学架构师训练营

产品失败了,产品经理要不要承担责任?

涛哥

产品经理

良心推荐 | LeetCode(力扣),算法、数据结构的学习良伴

YoungZY

算法

第三周总结

晨光

极客大学架构师训练营 框架开发 第三次作业

John(易筋)

极客时间 设计模式 极客大学 极客大学架构师训练营 框架开发

让你眼前一亮的 10 大 TS 项目

阿宝哥

Java typescript Web 前端开发 开源项目

区块链改变数字营销与广告市场

CECBC区块链专委会

区块链技术 广告业 精准投放 去中介 公开透明

Zookeeper通信协议详解

tunsuy

zookeeper TCP/IP 通信协议

第三周手写单例模式(饿汉模式)

吴建中

极客大学架构师训练营

组合模式应用

yupi

第三周作业

晨光

架构师训练营 第三周 命题作业

RZC

新手村:最适合新手的 Redis 基础

多选参数

数据库 redis redis6.0.0

一个汉字占几个字节你真的记住了吗?

Java旅途

架构师是怎样炼成的-3-2-设计模式

闷骚程序员

Zookeeper的数据剖析

tunsuy

zookeeper 日志分析 事务 快照 数据恢复

windows使用docker运行mysql等工具(二)安装运行mysql

Java旅途

MySQL Docker

面向对象设计模式课程小结

行下一首歌

极客大学架构师训练营

架构师训练营 第三周 学习总结

RZC

【非原创】微服务设计

Arthur

架构师训练营第四周

Melo

架构师训练营第三周作业和小记

tuuezzy

架构师 极客大学架构师训练营

大数据技术升级脉络及认知陷阱

大数据技术升级脉络及认知陷阱

我是如何爱上 Julia 编程语言的?-InfoQ