Python 语言在企业应用方面遭遇的十大谬误 已翻译 100%

magicoding 投递于 2014/12/16 23:47 (共 19 段, 翻译完成于 12-26)
阅读 17872
收藏 184
10
加载中

语言多元化是PayPal编程文化中一个重要的组成部分。在C++和Java长期流行的同时,更多的团队选择了JvaScript和Scala。同时,Braintree的收购也引入了一个久经世故的Ruby社区。

Python作为一门特别的语言,在eBay和PayPal有很长的历史。而且其流行程度依然有增不减。

eBay的开发者支持Python这个应用于基层领域多年的语言。甚至在eBay管理层官方支持Python以前,技术人员就开始使用Python。我在几年前加入PayPal并选择Python来写内部应用,然而,我却发现了PayPal中将近15年以前的Python代码。

crab2313
crab2313
翻译于 2014/12/17 21:20
1

目前,Python 支撑着 超过50个项目, 包括:

  • 功能和产品型, 例如 eBay NowRedLaser

  • 运营和基础设施, 从开放的 OpenStack 到专有设施

  • 中间层服务和应用, 例如 PayPal 用来设定价格以及检测用户可用功能的那个(服务/应用)

  • 监测代理和接口, 用于涉及到部署和安全的一些用例

  • 批处理任务, 例如数据导入,价格调整,及其它项目

  • 以及不计其数的开发者工具

在接下来的文章里我将详细介绍那些使得 eBay 和 PayPal 的 Python 生态系统从2011年的不超过25个工程师到2014年超过260个工程师所使用的技术和举措。对于本文,我则会专注于10个不得不予以揭露的关于 eBay 和 PayPal 的企业环境的谬误。

maverickpuss
maverickpuss
翻译于 2014/12/18 13:40
1

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

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

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

maverickpuss
maverickpuss
翻译于 2014/12/18 13:53
1

谬误 #2: Python 没有被编译

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

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

maverickpuss
maverickpuss
翻译于 2014/12/18 14:29
1

谬误 #3: Python 不安全

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

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

LeoXu
LeoXu
翻译于 2014/12/18 20:49
2

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

  • 创建安全代理,以促进密钥的轮换以并巩固加密实现

  • 同业界领先的 HSM 技术集成

  • 为缺乏兼容性的技术栈构建受TLS保护的封装代理

  • 为我们内部的互相认证计划生成键和证书

  • 开发主动的漏洞扫描器

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

LeoXu
LeoXu
翻译于 2014/12/18 21:01
1

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

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

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

  1. 电信基础设施 (Twilio)

  2. 支付系统 (PayPalBalanced Payments)

  3. 神经科学和心理学 (许多许多例子)

  4. 数值分析和工程 (numpynumba, 以及 更多其它)

  5. 动画(LucasArtsDisneyDreamworks)

  6. 游戏后台 (Eve OnlineSecond LifeBattlefield, 以及 其它很多)

  7. Email 基础设施 (MailmanMailgun)

  8. 媒体存储和处理 (YouTubeInstagramDropbox)

  9. 操作和系统管理 (RackspaceOpenStack)

  10. 自然语言处理(NLTK)

  11. 机器学习和计算机版本 (scikit-learnOrangeSimpleCV)

  12. 安全性和渗透性测试 (很多很多 以及 eBay/PayPal

  13. 大数据 (DiscoHadoop support)

  14. 如理 (Calendar Server, 它 驱动了 Apple iCal)

  15. 搜索系统 (ITAUltraseek, 还有 Google)

  16. Internet 基础设施 (DNS) (BIND 10)

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

LeoXu
LeoXu
翻译于 2014/12/18 21:19
1

谬误 #5: Python 是弱类型的

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

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

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

LeoXu
LeoXu
翻译于 2014/12/18 21:30
1

谬误 #6: Python 速度慢

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

  1. CPython 是参考实现, 且也是广泛发布和使用的实现.

  2. Jython 是Python用于JVM的是一个成熟的实现.

  3. IronPython 是 Microsoft 针对其自家的通用语言运行时——又名 .NET,实现的Python .

  4. PyPy 是一个正在日趋成熟的Python实现,拥有JIT编译,增量垃圾收集诸多先进的特性.

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

LeoXu
LeoXu
翻译于 2014/12/19 21:23
1

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

  1. 把 NumPy 用作 Intel 的 MKL SIMD接口

  2. PyPy的 JIT 编译能 达到比C还快的性能

  3. Disqus 能在同样的100个盒子上容纳两亿五千万到5亿用户

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

A comparison of C++ to Python,. The Python is approximately a tenth the size.

C++ vs Python,. 两种语言在同一个输出下的对比.

LeoXu
LeoXu
翻译于 2014/12/19 21:51
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(64)

fastzhong
fastzhong
不是十大吗,没有译完啊😎
asdfsx
asdfsx

引用来自“Raymin”的评论

多了个 GIL,想发挥多核的性能,必须多进程。
少了个 {...} begin end,复制粘贴是永远的痛!
看到pypy中有一个新特性stm,居说可以更好的实现并发
jQer
jQer

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了

引用来自“jQer”的评论

go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.

引用来自“咚往咚来”的评论

没发现你一直答非所问吗?!如果你不知道就干脆别说,如果你知道就别绕来绕去,php哪里不算语言?完整的语言特征,php哪里不具备,别告诉呢你还停留在php4上

引用来自“jQer”的评论

面向对象, PHP不具备. 函数式, PHP不具备. 模块化, PHP不具备. 并行, PHP不具备. 异步, PHP不具备. 其他的解析序列化, PHP都不具备.

引用来自“咚往咚来”的评论

你果然还是php4的码农。面向对象不具备?呵呵。函数式是不同语言特性,你现在拿这玩意衡量一下go,java,js?模块化你也敢说是语言的特性。php现在的确不支持异步,但这不是你衡量它是不是语言的因素,支持并行只是早晚的事

引用来自“jQer”的评论

再练几年吧,等你懂什么叫面向对象,再来想想。压根不懂面向对象,跟你说话实在费劲

引用来自“咚往咚来”的评论

世界上总有一些人,不喜欢一些东西就追毛球次,你可以这样讲,自我感觉很牛逼,倚老卖老,换个角度,在 惠新宸眼里,你又算个毛球?php真不缺你这种喷子
还以老卖老,就你那点资历,那点经验,编程原理都没弄明白。多看看书,有助进步。书犹药也,擅读之可以医愚。你现在就是在懵懂未知的愚状态,等过两年再好好想想。
咚往咚来
咚往咚来

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了

引用来自“jQer”的评论

go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.

引用来自“咚往咚来”的评论

没发现你一直答非所问吗?!如果你不知道就干脆别说,如果你知道就别绕来绕去,php哪里不算语言?完整的语言特征,php哪里不具备,别告诉呢你还停留在php4上

引用来自“jQer”的评论

面向对象, PHP不具备. 函数式, PHP不具备. 模块化, PHP不具备. 并行, PHP不具备. 异步, PHP不具备. 其他的解析序列化, PHP都不具备.

引用来自“咚往咚来”的评论

你果然还是php4的码农。面向对象不具备?呵呵。函数式是不同语言特性,你现在拿这玩意衡量一下go,java,js?模块化你也敢说是语言的特性。php现在的确不支持异步,但这不是你衡量它是不是语言的因素,支持并行只是早晚的事

引用来自“jQer”的评论

再练几年吧,等你懂什么叫面向对象,再来想想。压根不懂面向对象,跟你说话实在费劲
世界上总有一些人,不喜欢一些东西就追毛球次,你可以这样讲,自我感觉很牛逼,倚老卖老,换个角度,在 惠新宸眼里,你又算个毛球?php真不缺你这种喷子
jQer
jQer

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了

引用来自“jQer”的评论

go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.

引用来自“咚往咚来”的评论

没发现你一直答非所问吗?!如果你不知道就干脆别说,如果你知道就别绕来绕去,php哪里不算语言?完整的语言特征,php哪里不具备,别告诉呢你还停留在php4上

引用来自“jQer”的评论

面向对象, PHP不具备. 函数式, PHP不具备. 模块化, PHP不具备. 并行, PHP不具备. 异步, PHP不具备. 其他的解析序列化, PHP都不具备.

引用来自“咚往咚来”的评论

你果然还是php4的码农。面向对象不具备?呵呵。函数式是不同语言特性,你现在拿这玩意衡量一下go,java,js?模块化你也敢说是语言的特性。php现在的确不支持异步,但这不是你衡量它是不是语言的因素,支持并行只是早晚的事
再练几年吧,等你懂什么叫面向对象,再来想想。压根不懂面向对象,跟你说话实在费劲
咚往咚来
咚往咚来

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了

引用来自“jQer”的评论

go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.

引用来自“咚往咚来”的评论

没发现你一直答非所问吗?!如果你不知道就干脆别说,如果你知道就别绕来绕去,php哪里不算语言?完整的语言特征,php哪里不具备,别告诉呢你还停留在php4上

引用来自“jQer”的评论

面向对象, PHP不具备. 函数式, PHP不具备. 模块化, PHP不具备. 并行, PHP不具备. 异步, PHP不具备. 其他的解析序列化, PHP都不具备.
你果然还是php4的码农。面向对象不具备?呵呵。函数式是不同语言特性,你现在拿这玩意衡量一下go,java,js?模块化你也敢说是语言的特性。php现在的确不支持异步,但这不是你衡量它是不是语言的因素,支持并行只是早晚的事
jQer
jQer

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了

引用来自“jQer”的评论

go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.

引用来自“咚往咚来”的评论

没发现你一直答非所问吗?!如果你不知道就干脆别说,如果你知道就别绕来绕去,php哪里不算语言?完整的语言特征,php哪里不具备,别告诉呢你还停留在php4上
面向对象, PHP不具备. 函数式, PHP不具备. 模块化, PHP不具备. 并行, PHP不具备. 异步, PHP不具备. 其他的解析序列化, PHP都不具备.
咚往咚来
咚往咚来

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了

引用来自“jQer”的评论

go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.
没发现你一直答非所问吗?!如果你不知道就干脆别说,如果你知道就别绕来绕去,php哪里不算语言?完整的语言特征,php哪里不具备,别告诉呢你还停留在php4上
jQer
jQer

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 

引用来自“咚往咚来”的评论

依你这个逻辑,go也不算语言了?lua,ruby...也是醉了
go,lua,ruby当然算语言, 因为他们具备完整的语言特征. php则不具备很多.
咚往咚来
咚往咚来

引用来自“肖滔”的评论

这么牛逼的,为什么到处是软文,确无法流行,值得质疑。php被喷得这么垃圾,确这么流行,真的很垃圾么?

引用来自“jQer”的评论

PHP 确实不算门编程语言. 至于python, 就是慢,其它都很优秀,但是慢,实在是慢

引用来自“咚往咚来”的评论

我擦,php不算编程语言,请问你可否用过?用到什么程度?对于这个程度,你觉得哪个因此算的上语言了?

引用来自“jQer”的评论

流行度? python在世界的流行度,php根本就不具备可比性。 拜托,pythone不仅渗透到web, 还包括操作系统相关的各个方面。 dropbox是python开发的。 国内的流行度,能叫做流行度吗? 国内很多计算机教授连python都没听说过,他们压根就不懂,怎么教学生。 
依你这个逻辑,go也不算语言了?lua,ruby...也是醉了
返回顶部
顶部