【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

机器学习编程语言之争,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:0022248
用户头像

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

关注

评论

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

汽车制造企业如何最大化数据资产价值?

Kyligence

数据分析 智能多维数据库

软件测试 | 测试开发 | 使用 cURL 发送请求

测吧(北京)科技有限公司

curl

技术分享 | 数据持久化技术(Java)

霍格沃兹测试开发学社

1. 关联容器

小白钊钊

c++ 8月月更

【Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)

计算机魔术师

8月月更

技术分享 | 被测项目需求你理解到位了么?

霍格沃兹测试开发学社

技术分享 | 被测系统架构与数据流分析

霍格沃兹测试开发学社

NFT系统:数字藏品交易平台app开发功能

开源直播系统源码

NFT 数字藏品 数字藏品软件开发 数字藏品开发 数字藏品系统

华为云GaussDB深耕数据库根技术,助力能源行业数字化转型

IT资讯搬运工

技术分享 | 测试平台开发-前端开发之Vue.js 框架(一)

霍格沃兹测试开发学社

技术分享 | 测试平台开发-前端开发之Vue.js 框架的使用(二)

霍格沃兹测试开发学社

软件测试 | 测试开发 | app自动化测试(Android)-- 属性获取与断言

测吧(北京)科技有限公司

自动化测试

Spring Security系列教程02--创建SpringSecurity项目

一一哥

Java spring security springboot 安全框架 spring-boot

【Django | 开发】面试招聘信息网站(划分面试官权限&集成钉钉消息)

计算机魔术师

8月月更

内容小程序化,是在线教育服务推广的最佳格式

Speedoooo

小程序 在线教育 移动开发 小程序容器

软件测试 | 测试开发 | 接口测试之HTTP、HTTPS 抓包分析

测吧(北京)科技有限公司

HTTP

BI如何配置“花生壳”,看这一篇就够了

葡萄城技术团队

内网穿透 可视化数据

主机监控是什么意思?用什么软件好?咨询电话多少?

行云管家

运维 主机 主机监控

软件测试 | 测试开发 | 接口测试中如何使用Json 来进行数据交互 ?

测吧(北京)科技有限公司

json

华为云GaussDB践行云原生 带来极致弹性、全域可用和极简体验

IT资讯搬运工

全新EMQX Dashborad:易操作、可观测,集群数据尽在掌握

EMQ映云科技

物联网 IoT mqtt emqx 8月月更

深度解析全链路压测实施过程

穿过生命散发芬芳

全链路压测 8月月更

内网穿透是什么意思?有什么用?用什么软件好?

行云管家

运维 内网穿透 内网

2. 背包问题

小白钊钊

算法 8月月更

helm实战之开发Chart

程序员欣宸

Kubernetes Helm 8月月更

云聚华为伙伴暨开发者大会GaussDB专场,与客户伙伴共话金融科技新发

IT资讯搬运工

华为云联合信通院发布业界首个《云原生数据库白皮书》

IT资讯搬运工

技术分享 | 软件项目管理与跨部门沟通协作

霍格沃兹测试开发学社

软件测试 | 测试开发 | 接口测试价值与体系

测吧(北京)科技有限公司

接口测试

技术分享 | 黑盒测试方法论—等价类

霍格沃兹测试开发学社

排队助手:3 张图带你看懂「队伍合页」的经典案例场景

天天预约

小程序制作 SaaS应用 排队 排队工具

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