「如何实现流动式软件发布」线上课堂开课啦,快来报名参与课堂抽奖吧~ 了解详情
写点什么

我是如何爱上 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:231412
用户头像
刘燕 InfoQ记者

发布了 673 篇内容, 共 213.1 次阅读, 收获喜欢 1291 次。

关注

评论

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

联邦学习—金融数据壁垒和隐私保护的解决之道

索信达控股

金融科技 联邦学习 金融 数据隐私 大数据平台

指挥中心情指勤一体化解决方案,河北公安情指勤一体化建设

13823153121

产业互联网时代的数字化转型与创新

CECBC区块链专委会

dubbogo 社区负责人于雨说

apache/dubbo-go

dubbo dubbo-go dubbogo

网络抓包实战04——深入浅出连接建立

青春不可负,生活不可欺

双非渣硕,开发两年,苦刷算法47天,四面字节斩获offer

云流

Java 程序员 架构 面试 算法

🌏【架构师指南】分布式技术知识点总结(中)

李浩宇/Alex

分布式架构 架构师技能 分布式技术 6月日更 6 月日更

架构实战营 - 模块 6- 作业

carl

“半监督”、“自监督”怎么用?| 算法深度剖析与实战分享

网易易盾技术团队

AI 算法 算法实践 实践案例 深度半监督

鉴释×CSDN丨国内外操作系统生态差异在哪?

鉴释

操作系统

区块链如何赋能智慧城市

CECBC区块链专委会

冷门科普类自媒体如何才能脱颖而出

石头IT视角

搭建企业私有GIT服务

IT视界

git

SpringBoot深度学习:阿里全栈笔记限时开源(基础+进阶+项目实战+面试)

程序员小毕

Java spring 架构 面试 分布式

浅谈B端产品的表单元素设计

LigaAI

产品经理 UI 产品设计与思考

Java的函数式接口

中原银行

函数式接口 Java 8 中原银行

网络抓包实战03——TCP/IP协议栈:数据包如何穿越各层协议

青春不可负,生活不可欺

年中面试经历:美团2面+字节3面+阿里4面+腾讯Java面经,终入字节

云流

Java 程序员 架构 面试

中国政府大数据市场,我们又是第一

浪潮云

云计算

为了不写接口文档,我肝了个 IDEA 插件

程序员小毕

Java 程序员 架构 面试 开发工具

微服务到底是什么?spring cloud在国内中小型公司能用起来吗?

Java架构师迁哥

ES6 迭代器简述

编程三昧

JavaScript 前端 ES6 迭代器

新华三商用终端新品全系入市,重塑办公极致体验

科技热闻

网络抓包实战05——深入浅出连接关闭

青春不可负,生活不可欺

接口全面重构TypeScript ,让uni-app 具备出色的基础音视频能力

ZEGO即构

typescript uni-app 音视频开发

强化学习 | COMA

行者AI

人工智能

英特尔宋继强:异构计算的关键一环,先进封装已经走向前台

新闻科技资讯

从零开始学习3D可视化之物体选择

森友小锘

前端 可视化 程序媛 3D可视化 数字孪生

算法有救了!GitHub上神仙项目手把手带你刷算法,Star数已破110k

Java架构师迁哥

从渗透测试小白到网络安全大佬的成长之路

学神来啦

Linux 运维 网络安全 渗透测试

虚拟货币监管再加码:央行约谈部分金融机构 要求切断支付链路

CECBC区块链专委会

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