原标题:世上最慢“动物”之一,为啥程序员却很爱它?

导读:Python 是世界上使用最广泛的编程语言之一,它至今已经存在了28个年头。对于大多数人,尤其是刚接触 Python 的初学者(以及 C 程序员)来说,有一个问题经常会被提起:“为什么 Python 这么慢,还能这么受欢迎?”

或者说,为什么 Python 程序员、开发者不担心它的速度问题?这篇文章给大家详细分析一下主要原因。

作者:Bobby

编译:欧剃

来源:优达学城Udacity(ID:youdaxue)

▲地球上最慢的“动物”

01 为啥 Python 在速度上没有优势?

在详细分析之前,我们先来探讨一下 Python 为什么比较慢的一些客观原因。当然,这里的慢是相对于 C 和 C++ 等其他编程语言而言的。

1. 高级编程语言

用 Python 写代码的时候,你的代码其实非常接近人类的自然语言,接近人类思考问题的方式。为了实现这一点,Python 解释器帮你简化了许多涉及计算机本身的细节,比如内存管理、指针等等…也正因为此,Python 运行起来就比其他“低级编程语言”来的慢。

2. Python 是解释执行,而不用经过编译

嗯,我上面这句话其实说的过于概括了,并不完全准确,不过大概意思就是这样的。在执行的过程中,Python 代码被解释器读取,并逐一运行,而不是通过编译过程将代码全部编译成电脑直接执行的字节码,然后再运行。

3. Python 是一门动态类型的语言

和其他“静态类型”的语言,比如 C、C++ 或 Java 不同,你在使用一个变量的时候,并不是必须要提前声明它的类型(String 字符串 / Boolean 布尔值 / int 整型数字等等)。你是省事了,但这些就靠计算机来替你处理了。这也就意味着,对于每次的对象调用,程序需要进行大量的处理。此外,动态程度这么高,也意味着 Python 很难以进行优化。

4. 全局解释器锁(Global Interpreter Lock,GIL)

因为 GIL 锁的存在,基本上 Python 解释器在同一个进程里只能运行一个线程(Python解释器的一个实例),所以整体速度难以提升。

▲别问我,我不过就是用 Python 搞了个多线程

02 为啥大家还喜欢用 Python?

在我看来,这主要是因为,在 90% 的情况下,Python 代码的运行速度并不那么重要,而它的语言特性带来的益处则是实实在在的。下面我就详细说说其中的主要几点:

1. 实际用户并不会太在意速度问题

说 Python 慢的同学,你真的能感觉出 0.001 秒和 0.01 秒的区别吗?对于绝大多数实际使用软件的用户来说,这种细微的差别根本不值得在意。

正常情况下,用户不会太在意你的软件的处理时间有那么一点点长。当然,如果它要卡上个两三百年,那我想这就没有什么用户体验可言了吧。只要在用户可以接受的范围内,就都没有问题。(甚至有的软件为了给用户一种“处理了很多信息”的感觉,会故意把“处理中”的时间延长一点点呢。)

此外,如果真的出现处理时间太长的情况,你还可以通过水平扩展的方式来提升你的系统处理能力,以解决一些可能出现的瓶颈,让整个处理速度更快。

2. 写 Python 代码的效率更高

Python 如此受欢迎的首要原因是,和其他编程语言(比如 C++ 和 Java)相比,它的开发效率更高。比起其他语言,Python 的代码更加简明易学,可读性好,容易维护,学习成本和时间相对较短,甚至完成类似任务所需的代码行数都更少。

▲Python 代码非常简单而且容易阅读

Python 语言的许多特性,比如一行函数、列表生成器、动态类型等,都使开发者能用比其他语言少得多代码完成相同或相似的任务。它的良好可读性也使初学者和新手学习语法的时间少了许多。

比如,Python 代码确实在运行时的速度比 Java 慢,但 Python 代码的编写时间平均只有 Java 的三到五分之一。

总的来说,Python 简单的语法结构,较高的可读性,以及类似英语一样的命令语句,都让 Python 程序的开发变得更加容易而高效。这正是大家喜欢它的一个重要原因。

03 运行速度慢?开发速度快才是王道!

曾几何时,计算机的运算资源不足是软件开发的主要瓶颈,计算时间是软件需要消耗的宝贵资源。在这种瓶颈限制下,程序员们养成了绞尽脑汁优化代码运行效率,减少算法复杂度的编程习惯。

而现在,计算机、服务器以及各种智能硬件都变得越来越便宜,代码运行速度已经变得没那么重要了。如今,人力资源才是软件开发企业最大的成本,开发所需的时间比软件运行的时间宝贵多了。加快开发速度,才是有效减少开发成本,快速产生效益的重要因素。

如果真的很需要提升程序处理速度,企业完全可以通过水平扩展的方式,也就是部署更多的服务器,来提升整体系统运行速度,以弥补代码本身的处理速度问题。

随着计算机算力的不断攀升,多核芯片的不断迭代,提升算力所需的成本也越来愈低。为了省一点服务器开支,而拖慢整个团队的开发速度,明显不是一件划算的事情。

此外,开发速度快,也不单单是节省了人力成本。能快速迭代,易于维护,部署方便的代码,也能显著地提升团队的竞争力。这就是为什么大家都热衷于选择 Python 语言的根本原因。

04 速度是你应该考虑的唯一因素吗?

当然不是。不管想要开发什么类型的软件,在选择用什么编程语言的时候,你需要考虑的因素往往数以百计。没错,速度确实是其中之一,但它决不是唯一因素。比如,语言的适用性就是非常重要的一个因素。

几十年来,Python 经历了市场的考验,形成了庞大的用户社区。因此,作为开发企业,你很容易就能找到 Python 程序员,并获得各种技术支持。

此外,Python 还拥有非常丰富的标准库,和多种不同用途的框架,基本上算是应有尽有。举几个栗子,要开发网页 app,你可以用 Django 和 Flask,要搞数据分析有 pandas,要跑深度学习有 TensorFlow,等等。

05 Python 适合用来开发,对速度要求很高的应用吗?

上面我们聊了 Python 虽然代码执行速度慢,但有着许多与众不同的优势,使得主流软件开发企业对它爱不释手。也许有人会觉得我们是把 Python 吹的无所不能了吧?其实并不是这样的。对某些严格要求高性能、执行速度快的程序来说,Python 并不适合。

没错,程序员可以用力优化算法,但总体上来说,这往往会牺牲可读性,减缓开发速度,产生各种问题,还不如换用其他编程语言呢。比如,在快速实时对战游戏的开发上,C# 将会是一个更好的选择。

06结语

总而言之,虽然速度不如其他编程语言,Python 还因为下面这些原因,而被广泛使用:

开发效率更高

节省最贵重的开发成本:人力资源

快速更新,提升竞争力

丰富的代码库和框架

庞大的社区支持

当然,不好的地方我也要diss,它确实不太适合开发包括游戏在内的许多速度密集型应用程序,也不适合开发操作系统等系统底层应用。

好啦,不说了,我先去学 Python 啦!

原文地址:

https://medium.com/@trungluongquang/why-python-is-popular-despite-being-super-slow-83a8320412a9

Q:Python很慢,你介意吗?

转载 / 投稿请联系:baiyu@hzbook.com返回搜狐,查看更多

责任编辑:

用python画简单的动物-世上最慢“动物”之一,为啥程序员却很爱它?相关推荐

  1. 用python画简单的动物-如何用python画简单的动物

    首先来看一下实现效果,如下图: 具体实现代码请看: (推荐学习:python视频教程)# -*- coding:utf-8 -*-# __author__ :kusy# __content__:文件说 ...

  2. python turtle画动物_如何用python画简单的动物

    首先来看一下实现效果,如下图:程序猿的生活:Python入门到精通资料大汇总,不啰嗦,全是珍藏资料!​zhuanlan.zhihu.com 具体实现代码请看: # -*- coding:utf-8 - ...

  3. python turtle画动物_用python画简单的动物

    用python画简单的图片,是使用turtle库绘制出来的,turtle翻译成汉语叫乌龟,turtle是通过各种函数控制像素坐标进行前进.后退变换方向等操作,通过函数设置画笔颜色和填充颜色进行颜色的勾 ...

  4. python动物重量排序_用python画简单的动物代码

    用python画简单的动物代码 发布时间:2020-04-30 14:57:42 来源:亿速云 阅读:344 作者:小新 今天小编给大家分享的是用python画简单的动物代码,相信很多人都不太了解,为 ...

  5. [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …...

    [Python学习]PycURL简单学习 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Python学习] ...

  6. python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !

    没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...

  7. python真实收入曝光_程序员工资很高吗?资深HR透露真实收入,网友:说的很现实...

    小编是一个多年开发经验的程序员,前端.Java.Python我都懂,如果你在入门学习WEB前端的过程当中缺乏系统的学习教程,或者说缺乏一个交流技术的地方,你可以申请加入我的WEB前端裙:前面二九六,中 ...

  8. 用python画简单图案图片_使用 Python Turtle 设计简单而又美丽的图形

    使用 Python Turtle 设计简单而又美丽的图形 看看本文中这些美丽的图画.正是这样的事情让我爱上了 turtle.优秀的程序员会认为turtle是"落后原始的",但我不敢 ...

  9. 用python画简单的图案-使用 Python Turtle 设计简单而又美丽的图形

    原标题:使用 Python Turtle 设计简单而又美丽的图形 正文 看看本文中这些美丽的图画.正是这样的事情让我爱上了 turtle.优秀的程序员会认为turtle是"落后原始的&quo ...

最新文章

  1. 蝴蝶扇了一下翅膀,混沌就诞生了
  2. CodeForces - 1295C Obtain The String(dp预处理+贪心)
  3. POJ2114-Boatherds-树分治
  4. IAR #pragma optimize 指令
  5. java条件触发_java – 当给定75:android时,条件不会触发
  6. 深度学习入门实例——基于keras的mnist手写数字识别
  7. 【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
  8. 常见的几种深度学习网络
  9. 安卓手机抓包小程序https请求 (该网站安全证书有问题解决办法)
  10. 计算机硬件及装机视频,超详细图文 视频电脑组装教程,装机之家手把手教你组装一台电脑(9)...
  11. 一个程序员上了7天班后
  12. xlrd读取多个sheets
  13. 解决“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”
  14. 性能监控工具-操作系统性能监控
  15. [电表窃电方法] 偷电方法-电表控制器
  16. 【转载】蠕虫病毒 incaseformat 在国内肆虐,可导致用户数据丢失
  17. 论文笔记_SIGGRAPH2019会前课程:An Introduction to Physics-Based Animation_3
  18. Java版 熄灯问题 debug调试版本
  19. Redis pool 配置详解
  20. Eclipse : java连接数据库MySQL超详细步骤

热门文章

  1. 开发日记-20190427
  2. flutter学习(排雷)一
  3. python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...
  4. DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化...
  5. 认房又认贷 政策的真正意图——限购令如果没有同时增加土地供应,只是在变相加剧未来房价的上涨...
  6. python berkeley 操作——尤其提示 需版本匹配
  7. Linux下配置Node.js环境
  8. 远程桌面,设置为支持2个人连接
  9. bzoj1492: [NOI2007]货币兑换Cash
  10. Linux 的面试小题 8