Python风靡全宇宙,首要原因竟是它?

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

众所周知,Python是目前使用最广泛且用户增长最快的编程语言。优雅简洁的语法、强大的第三方库支持等都是Python能够风靡各行各业的原因。然而,你或许不知道,Python能够实现用户飞速增长,背后其实另有玄机。

就让我们从近年来大数据的兴起说起,为你娓娓道来Python火爆的真正原因。

郁闷的大数据程序员

随着大数据的崛起,大多数行业发现自己进入了一种恐慌状态:他们花费了大量的时间和金钱来建立他们的大数据渠道,但是他们的投资回报率却很低。在毫无喘息机会的竞争中,虽然能够挖取到日益增长的数据,但大多数公司并没有一个明确的计划来处理他们挖取到的数据。当时,几乎每个人都认为,有了大量的数据存储,后面的分析就会变得更简单,数据的业务价值也会变得显而易见。这在今天听起来可能很愚蠢,但大多数人依旧认为,只要获取到足够的数据,数据背后的规律和信息就会自动浮现。

被时代召唤的“数据科学家”

随后,业界几乎同时觉醒,他们希望得到的各种卓越远见和希望回答的问题都需要严格的数学分析和验证。 SQL查询能让你知道数据最明显的模式和趋势,但要想获取数据中最为有用的信息,你需要的其实是完全不同的另一套技术——一套牢固扎根于数学和应用数学的技能。而具备这种技术的人才似乎只存在于学术界中。此外,负责分析这些庞大数据集的人不仅需要非常强大的数学背景,还需要能够编写软件。这也不难解释为什么“数据科学家”这一职位频繁出现在招聘网站上了。

Ruby与Python的“Web开发语言之争”

我们再往回讲讲,在大数据还没有真正风靡之前,Ruby和Python曾在成为最受欢迎的“web开发语言”上发生过激烈的争战。 两者都非常适合开发Web应用程序。 Ruby的受欢迎程度与Rails框架密切相关。 在那个年代,大多数自称为“Ruby程序员”其实更应该称自己为 “Rails程序员”。 而Python在学术界和少数不同行业已经相当完善。 在Python中,与Rails最相近的是Django,Django尽管在Rails之前发布,但它的受欢迎程度似乎远远落后于Rails。

解密:Python风靡全宇宙,首要原因竟是它?

很多人认为,Python和Ruby的性能都很相似,最终只会有一种语言能够赢得“web开发语言之战”。 但实际上,Ruby的流行度与Rails密切相关,而Django只代表了一个已经很活跃的Python生态系统的一小部分。事实也证明,“Web开发语言之战”的重要性远低于人们的预期。即便从很多层面来讲,Ruby都凭借Rails赢得了这场争战,但这丝毫不影响Python成为当今最受欢迎的语言。这到底是为什么呢?

Oliphant的大手笔

为了揭开这个谜团,我们就不得不提一下一位大佬了,他就是Travis Oliphant。追溯到2006年。当时,Travis Oliphant还是BYU的助理教授,他仍未创办Anaconda(注:Anaconda是一个完全以Python为基础的,目前最成功的商业数据科学平台之一)。 一年前,他参考科学计算库Numeric开发了NumPy。 他后来又成为SciPy的创始人并兼任了PSF的主管。

在2006年,他与Carl Banks一起提交了PEP 3118,这是Python的“缓冲区协议”的修订版。这为Python的兴起埋下了重要伏笔。

Python的缓冲协议:Python风靡全球的首要原因

缓冲器协议是(并且仍然是)一个极低级别的API,被其他库用来直接操纵内存缓冲区。 这些是由解释器创建和使用的缓冲器,用于存储连续存储器中某些类型的数据(最初,主要是“类似数组的”数据类型和大小都被提前给出的数据结构)。

提供这样一个API的主要动机是:消除在只读取时复制数据的必要性,澄清缓冲区的所有权转移语意,并将数据存储在连续的存储器中(即使在多维数据结构的情况下),其中读取访问速度非常快。 那些将使用该API的“其他库”一般都是用C写的,而且对性能十分敏感。 这一新协议意味着,如果我创建了一个NumPy的int数组,其他库可以直接访问底层内存缓冲区,而不是间接访问或者在使用该数据之前复制该数据。

现在问题来了:什么类型的程序员会从快速、零拷贝的大量数据获取中受益呢?

当然是数据科学家了!

让我们们来梳理一下事件的发展过程:

  • Oliphant和Banks提出了Python的缓冲协议的修订,以简化对刚开始的NumPy项目工作所驱动的某些数据结构的底层内存的直接访问。

  • PEP 3118(https://www.python.org/dev/peps/pep-3118/) 提交,被认可,实施。

  • 受益于PEP 3118的实现,Python已悄然成为一个非常吸引人的编译语言。在此基础上,就有了很多基于C语言扩展的数字计算库被开发出来(注:C语言扩展可以很便捷地实现数据共享和操作。)

  • Python和Ruby在网络上一决雌雄,大多数人认为“Web开发语言之战”必有分晓。

  • 随着磁存储设备价格暴跌,存储大量数据以供日后分析变得可行(因为数据已经变得很廉价,最好是先把数据保存起来,甚至都不需要去考虑具体要分析什么。)

  • 对新一代程序员的需求发生变化:具有统计学背景,最好还得有应用数学背景的,且先前有过一些编程经验的程序员开始被哄抢——数据科学家的时代来临了!

  • 数据科学家们想寻找一种既具有表现力又快速的语言(具有良好的数值计算库支持启动),所有的这些需求都指向于Python

后来,就如我们看到的那样,Python受到万千宠爱,一跃成为了最受欢迎的编程语言。 


原文发布时间为:2017-10-25

本文作者:佚名

本文来自云栖社区合作伙伴“51CTO”,了解相关信息可以关注。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
4月前
|
存储 网络协议 网络虚拟化
交换机工作原理(MAC地址表、VLAN)
交换机是局域网中的核心设备,工作在OSI模型的数据链路层,通过MAC地址表和VLAN技术实现高效的数据帧转发与网络隔离。其基本原理包括根据目的MAC地址智能转发数据帧,利用MAC地址学习、老化机制维护地址表。同时,VLAN(虚拟局域网)技术可将网络划分为多个逻辑子网,提供流量隔离、增强安全性和灵活管理等功能。实际应用中,交换机与VLAN广泛用于企业、学校和数据中心等场景,满足不同用户群体的需求并优化网络性能。
307 8
|
机器学习/深度学习 编解码 计算机视觉
一文读懂深度学习中的各种卷积 !!
一文读懂深度学习中的各种卷积 !!
396 0
|
2月前
|
运维 监控 数据可视化
故障定位48小时→5分钟:靠的不是玄学,是“全网透视眼”
在多云部署的网络架构下,企业需要全方位监控全链路网络,解决故障定位难题。 Fusion WAN可视化平台提供实时监控和故障定位能力,帮助企业实现业务畅通。
故障定位48小时→5分钟:靠的不是玄学,是“全网透视眼”
|
6月前
|
API
钉钉宜搭--远程API,在其他人访问时无法生效
简介: 描述了一种远程API配置问题的场景。开发人员在本地可正常通过应用表单获取数据,但同组织的其他同事访问时无法获取数据,尽管已设置全部权限。问题是关于如何解决这种跨用户数据访问异常的情况,确保同事间能正常共享数据。
|
6月前
|
搜索推荐 开发者 UED
【开发者必看—运动篇】数据赋能运动App留存率再创新高
如何在拉新后促活并成功留存?如何减少新用户流失?
【开发者必看—运动篇】数据赋能运动App留存率再创新高
|
9月前
|
Oracle Java 关系型数据库
2023年震撼!Java在TIOBE排行榜滑坡至历史最低!
自2023年6月起,Java在TIOBE编程语言排行榜中跌至历史最低的第4位,与C#的差距缩小至1.2%。Java受欢迎程度下降的主要原因是Oracle在Java 8后引入付费许可模式,导致用户流失。尽管如此,Java仍是一门成熟、稳定且跨平台的语言,拥有庞大的用户群和丰富的生态系统。Oracle通过推出Java 17免费版及Java 21的新特性,努力保持其竞争力。未来,Java将继续与其他编程语言竞争并发展。
223 1
|
Linux 开发工具 git
CentOS 安装 nvm
CentOS 安装 nvm
786 3
|
机器学习/深度学习 数据可视化 数据挖掘
如何开始一项可能帮助你走向人生巅峰的“业余项目”(Side Project)?
你知道什么是side project 吗? 你知道如何开始一个side project 吗?一个业余项目,不仅可以给你带去知识、技能、满足感,也可能从此改变你的职业生涯。俗话说,万事开头难,本文作者列了5条经验,帮助你快速地、有目标的进入一个side project。
2099 0
|
机器学习/深度学习 安全 数据安全/隐私保护
「隐语小课」两方安全计算ABY2.0 高效的2PC协议
「隐语小课」两方安全计算ABY2.0 高效的2PC协议
791 0
|
安全 Java API
手机号码归属地 API 实现防止骚扰电话,看这一篇就够了(内附设计思路和代码)
本文将会深入探讨如何利用手机号码归属地 API 在防止电话骚扰,此外,还会给大家列出手机号码归属地 API 的其他应用场景。
821 0
手机号码归属地 API 实现防止骚扰电话,看这一篇就够了(内附设计思路和代码)