Python的六大误解 你都知道吗?

作者: 一墨编程学习 | 来源:发表于2019-04-16 20:47 被阅读0次

    谬误 #1: Python 是一门新语言

    伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个谬误为何仍然存在是可以理解的。实际上 Python 已经 超过23岁了, 它最初发布于1991年, 早于 HTTP 1.0协议 5年且早于 Java 4年. 目前比较有著名的很早就使用 Python 的例子是在1996年: Google 的第一个成功的网络爬虫.

    如果你对于长长的 Python 历史比较好奇,Python 的作者 Guido van Rossum 已经为你准备好整个故事了.

    如果大家如果在自学遇到困难,想找一个Python学习环境,可以加入我们的Python学习圈,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、人工智能、机器学习等。送给正在学习python的小伙伴!每天会准时的讲一些项目实战案例,分享一些学习的方法和需要注意的小细节,我们的python学习交流q–u--n【 784758214 】,这里是python学习者聚集地,欢迎初学和进阶中的小伙伴!

    点击:加入

    谬误 #2: Python 没有被编译

    不像 C++ 一样需要一个独立的编译器工具链,Python 实际上被编译成了字节码,和 Java 或者许多其他的编译型语言十分相似。更进一步的编译过程,如果有的话, 取决于运行时环境, 不管是 CPython,PyPy,Jython/JVMIronPython/CLR,或是其它的进程式虚拟机(process virtual machine)。参考 谬误 #6 来了解更多。

    一条在 PayPal 以及其它地方的通用原则就是,(应用的)安全性不能依赖于代码的已编译状态。更为重要的是加强运行时环境的安全,因为实质上每种语言都有一个解码器,或者能被拦截并导出受保护的状态。参考下一条谬误来了解更多的 Python 安全性问题。

    谬误 #3: Python 不安全

    轻量级 Python 的亲和力可能使他看起来不怎么可怕,但是这里直觉很大程度上是受到了误导的. 安全的一个核心原则就是尽可能让呈现的目标更小. 大系统是违背安全原则的,因为他们趋向于 使行为过渡集中化, 并且也 让开发者难于理解. Python 通过倡导简洁化来边缘化这些恶心的问题. 更有甚者, CPython 通过让自己成为一个简单、稳定并且易于审核的虚拟机来使这些问题得到解决. 事实上,近期 Coverity Software 的一个分析结果显示 CPython 得到了他们的最高质量评级.

    Python 还拥有一系列可扩展的开源、产业标准化的安全库序列. 在PayPal, 我们把安全和授信看做是重中之重, 我们发现 hashlib, PyCrypto, 以及 OpenSSL, 通过 PyOpenSSL 和我们自己的定制构建的结合,涵盖了 PayPal 多样化的安全和性能需求.

    这些诸多的原因,使得 Python 成为PayPal(和eBay)的应用程序安全团队在某些业务中最快的选择. 这里有把Python用在PayPal的安全第一环境中的几个以安全为基础应用程序:

    • 创建安全代理,以促进密钥的轮换以并巩固加密实现
    • 同业界领先的 HSM 技术集成
    • 为缺乏兼容性的技术栈构建受TLS保护的封装代理
    • 为我们内部的互相认证计划生成键和证书
    • 开发主动的漏洞扫描器

    另外,还有无数存在安全隐患的用Python构建,面向操作的系统, 诸如防火墙和连接管理. 未来,我们一定回去深入的整合PayPal Python的安全事项.

    [图片上传失败...(image-964c5-1555418041576)]

    谬误 #4: Python 是一门脚本语言

    Python 确实可以用来编写脚本,并且因其简单的语法、跨平台并且无所不在于 Linux, Macs, 和其它Unix 机器而成为这个领域的领跑者之一.

    事实上, Python 可能是常规用途编程语言中最灵活的技术. 以下是一些实例:

    1. 电信基础设施 (Twilio)
    2. 支付系统 (PayPal, Balanced Payments)
    3. 神经科学和心理学 (许多, 许多, 例子)
    4. 数值分析和工程 (numpy, numba, 以及 更多其它)
    5. 动画(LucasArts, Disney, Dreamworks)
    6. 游戏后台 (Eve Online, Second Life, Battlefield, 以及 其它很多)
    7. Email 基础设施 (Mailman, Mailgun)
    8. 媒体存储和处理 (YouTube, Instagram, Dropbox)
    9. 操作和系统管理 (Rackspace, OpenStack)
    10. 自然语言处理(NLTK)
    11. 机器学习和计算机版本 (scikit-learn, Orange, SimpleCV)
    12. 安全性和渗透性测试 (很多很多 以及 eBay/PayPal
    13. 大数据 (Disco, Hadoop support)
    14. 如理 (Calendar Server, 它 驱动了 Apple iCal)
    15. 搜索系统 (ITA, Ultraseek, 还有 Google)
    16. Internet 基础设施 (DNS) (BIND 10)

    更别提网站和web服务了,那些都不在少数. 事实上,PayPal工程师看起来像是有兴趣致力于基于Python的web特性,比如 YouTube 和 Yelp. 如果对Python成功案例的更大清单感兴趣,那就看看官方的清单吧.

    谬误 #5: Python 是弱类型的

    Python 类型系统的特点是拥有强大、灵活的类型操作. 维基百科上对此作出的阐述.

    而存在一个不争而有趣的事实是, Python 是比Java更加强类型的. Java 对于原生类型和对象区分了类型系统,它让null存在于一个灰色地带. 另一方面,现代的 Python 拥有一个统一的强类型系统, 其中什么都没有(None) 的类型是明确指定的. 更进一步的,JVM自身也是动态类型的,因为可以把它的 根源 追溯到由Sun所收购的Smalltalk VM的一个实现.

    Python的类型系统 很棒,但要提供给企业级使用,目前仍然还有许多更重大的事项需要关注.

    谬误 #6: Python 速度慢

    首先是有一个重要区别: Python 是一门编程语言,而不是运行时环境. Python 拥有几个实现:

    1. CPython是参考实现, 且也是广泛发布和使用的实现.
    2. Jython是Python用于JVM的是一个成熟的实现.
    3. IronPythonMicrosoft 针对其自家的通用语言运行时——又名 .NET,实现的Python .
    4. PyPy是一个正在日趋成熟的Python实现,拥有JIT编译,增量垃圾收集诸多先进的特性.

    每一个运行时都有其自己的性能特点, 而且他们本身也不慢. 这里更重要的地方在于不能错误地把一个性能指标分派到一门编程语言智商. 应该总是把该评估用在一个应用程序运行时上面,最好是针对一个特定的使用场景.

    清楚了那些事项之后,下面就是一些有Python提供的小项,体现其重要的性能优势:

    1. 把 NumPy 用作 Intel 的 MKL SIMD接口
    2. PyPy的 JIT 编译能 达到比C还快的性能
    3. Disqus 能在同样的100个盒子上容纳两亿五千万到5亿用户

    诚然,这些都不是最新的列子,只是我个人的最爱罢了. 这将很容易扯到高性能Python以及独立提供的运行时这些广阔的领域. 我们不应只是专注于解决单个特殊的案例, 而是应该把注意力放在对开发人员在 最终产品性能 方面的生产力的普遍影响上面, 特别是在一种企业级环境之下.

    相关文章

      网友评论

        本文标题:Python的六大误解 你都知道吗?

        本文链接:https://www.haomeiwen.com/subject/xlmiwqtx.html