速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

机器学习编程语言之争,Python 夺魁

  • 2015-09-07
  • 本文字数:2016 字

    阅读完需:约 7 分钟

随着科技的发展,拥有高容量、高速度和多样性的大数据已经成为当今时代的主题词。数据科学领域中所采用的机器学习编程语言大相径庭。究竟哪种语言最适合机器学习成为争论不休的话题。近日,密西根州立大学的博士生 Sebastian Raschka 再次发起了机器学习编程语言之争,分析了自己选择 Python 的原因。

目前,机器学习牵涉的编程语言十分多样,包括了 MATLAB、Julia、R、Perl、Python、Ruby 等等。首先,Raschka 定义了语言好坏的原则:一门好的语言应该使得编写、调试和执行代码的总时间最短。然后,他花大篇幅讲述了一个简单的道理——没有一门语言是对所有情况、所有人都十分适合的。

Roberto Waltman:“在这种唯一正确的方式下,面向对象的 Spaghetti code 就是 Lasagna code。”

针对具体的应用场景以及参与项目的人员,开发团队或个人要对任务需求进行评估,再结合人员对于各个语言的熟悉程度和语言生态环境的情况等等,作出选择。接下来,Raschka 开始正式点评各个语言相对与 Python 在机器学习时的优缺点。

表现平平的 MATLAB

作为机器学习、模式识别等方面经常使用的工具,MATLAB 被放在了第一个分析。Raschka 认为,MATLAB 在实现机器学习算法时要比 Python 或者 NumPy 更加自然。很多高校也在计算机科学相关的课程中教授 MATLAB 语言。然而,MATLAB 也存在很多的缺点:价格昂贵、非开源、性能表现平平、语法不符合程序员的习惯等。例如,MATLAB 中矩阵乘积运算操作为X.dot(Y),而 Python 为<a href="mailto:X@W">X@W</a>,更加简洁、明了。

各种语言相对于 C 的测试性能——C 的性能为 1.0,越小越好
从上图可以看出,MATLAB 的性能比 Python、Go、Java 等语言要差很多。Raschka 也提到,上图中 Python 的性能也表现不好。但是,现在性能强劲的 GPU 为 Python 提供了强大的后盾。在 2010 年的时候,Python 中的 Theano 库在 CPU 上运行时,其速度是 NumPy 的 1.8 倍。而 Theano 在 GPU 上运行时,其速度就是 NumPy 的 11 倍。因此,在目前更高性能的 GPU 的帮助下,Python 性能已经有了更大的改进。

貌似很强大的 Julia

作为一门新型的语言,Julia 在设计之处就充分借鉴了 C/Ruby/Python 等语言的经验,试图重新融合众家之长,为科学计算提供一个有力的工具。Raschka 充分认可了该语言。然而,对于其未来 Julia 是否会流行,Raschka 持保留态度。

Bjarne Stroustrup:世界上只有两种语言——大家一直在抱怨的和无人问津的。

Raschka 认为一个语言是否有用又很大程度上取决于其是否流行。只有被广大编程人员所熟知的编程语言,相关的库才会更多,遇到问题时也能够方便的找到答案,且易于团队合作和代码分享。语言本身也会随着社区的关注不断得以改善。在流行度上,Julia 并没有什么优势。

R 语言本身无错

接下来,Raschka 又提到了 R 语言。其实,Raschka 之前使用过 R 语言,而且还专门撰写了一部有关 R 语言中 Heat map 的书。而且,他自己也不认为 R 语言存在任何令人不满意的地方。据Spectrum IEEE 统计,在2015 年排名前十的编程语言中,R 语言是提升最快的。近期,微软对R 语言表现出极大的兴趣。并且很快,微软的 Azure 便开始支持 R 语言了。

Alan J. Perlis:当某人说“我想要一门编程语言。它要能够根据我的目标自动生成代码”。让他拿根棒棒糖,一边玩去吧!

Raschka 总结 R 和 Python 之间的不同在于,R 是统计学家开发的(数学)语言,而 Python 是计算领域科学家开发,可以应用到统计学的编程语言。这就是说,二者都可以很好的应用于数据科学或者机器学习,但 Python 的语法更容易被程序员所接受。

Perl 的没落

Raschka 简单分析了 Perl 语言。作为一门古老的语言,Perl 已经不可避免的走向了没落。Raschka 表示,Perl 曾经是他学习的第一门语言。但是,Perl 目前主要用于简单的脚本编写,已经很少应用在机器学习的算法编写方面。

老而弥坚的 Python

最后,Raschka 夸赞了自己所喜爱的 Python 语言。尽管 Python 已经走过了 20 多年的风雨历程,Raschka 认为它仍然可以继续流行下去。而且,Raschka 还不遗余力的列出了自己最喜欢的 Python 工具——NumPy、Theano、 scikit-learn matplotlib 等。

至于 Ruby、Java、Scala、Lua 等,Raschka 没有亲身体验,暂未点评。

对于 Raschka 的言论,很多人表示赞同,也有不少人反对。有人表示,自己从R 切换到Python,主要原因也是Python 更方便与团队之外的人进行合作和沟通。也有人表示,作为一个新入门的程序员,利用R 进行数据科学的编程可以利用很多现成的库,十分得心应手。更有与Python 打过8 年交道的资深程序员表示,Julia 十分具有吸引力,愿意花时间去尝试该语言。亲爱的读者朋友,你眼中最好的机器学习编程语言又是哪个呢?


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015-09-07 19:0022381
用户头像

发布了 268 篇内容, 共 123.1 次阅读, 收获喜欢 24 次。

关注

评论

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

大央企的“中央厨房”,泰裤辣!

用友BIP

数智化底座

小程序技术助力智慧家居生态互联

FinFish

智慧城市 小程序容器 智慧家居 小程序化 小程序技术

PAG动效框架源码笔记 (二)层级视图

olinone

ios 动效 andiod 特效

打造公用事业行业数智化标杆!泉州水务集团财务共享系统建设项目启动

用友BIP

财务共享

火山引擎DataLeap数据调度实例的 DAG 优化方案 (二):功能设计

字节跳动数据平台

大数据平台 DAG DataLeap

Dynamic Wallpaper Mac(视频动态壁纸) v14.3免激活

真大的脸盆

Mac Mac 软件 视频动态壁纸 高清动态壁纸

APP和小程序共同塑造现代化政务服务

FinFish

小程序 小程序容器 小程序化 小程序技术 政务服务

互联网用户之间如何传输大文件

镭速

镭速传输:安全文件传输的意义

镭速

住宅代理的未来:挑战、趋势和机遇

摘星星的猫

「AI之劫」:当机器超越人类底线,正在侵犯我们的创造力和道德

加入高科技仿生人

人工智能 低代码 AIGC

即时通讯技术文集(第15期):IM跨平台和社交软件红包技术 [共19篇]

JackJiang

网络编程 即时通信 即时通讯IM

基于 KONOS 编写一个部门级的前端框架

鲸品堂

前端 前端框架 企业号 5 月 PK 榜 konos

在Mac电脑上运行 PC 游戏

互联网搬砖工作者

浅析AIGC for MMKG

华为云开发者联盟

人工智能 华为云 AIGC 华为云开发者联盟 企业号 5 月 PK 榜

AIGC背后的技术分析 | 知识图谱

TiAmo

自然语言处理 机器学习 知识图谱 AIGC

数据智能加持下,中小微企业告别“融资难”

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

第五届金蝶云・苍穹追光者开发大赛报名正式启动,百万奖金等你拿

金蝶云·苍穹

低代码 低代码平台 开发者大赛 金蝶 金蝶云苍穹

Unsafe Unlink:unlink利用

郑州埃文科技

漏洞

忙碌的七个层次

宇宙之一粟

生活 工作

RocketMQ 在小米的多场景灾备实践案例

Apache RocketMQ

RocketMQ

最新出炉!2023年金三银四Java面试1306问

架构师之道

Java 编程

JMeter笔记6 | JMeter录制(配置代理)

测试 Jmeter 性能测试 自动化测试 接口测试

共享电单车如何投放运营?流程介绍!

共享电单车厂家

共享电动车厂家 本铯智能电动车厂家 共享电动车投放 共享电单车运营

基于WebGL智慧储能电站三维管理平台

2D3D前端可视化开发

物联网 数字孪生 智慧储能电站 微电网

腾讯云2023年最新分享Redis深度笔记(毕业版)PDF,全程精点无废话

开心学Java

Java redis 腾讯云 源码

IPv6定义以及优势说明-行云管家

行云管家

网络 ipv6

热技术冷思考:AIGC为SaaS带来的不能只有盲目自信

ToB行业头条

构建新一代智慧园区移动应用以推动数字转型

FinFish

智慧城市 移动开发 智慧园区 小程序容器 小程序技术

海量主机自动化运维软件用哪款好?具体功能有哪些?

行云管家

主机 云主机 自动化运维

网易云商·七鱼智能客服自适应 ProtoStuff 数据库缓存实践

网易智企

Java 数据库 缓存

机器学习编程语言之争,Python夺魁_语言 & 开发_张天雷_InfoQ精选文章