长期以来,软件开发一直是个雷区, 传统的编程语言(如 C 和 JAVA)把守着进入软件开发领域的大门。但是一旦Python加入游戏,这种情况很快就改变了。Python 是软件开发领域的一大飞跃,因为它的编程方法具有革命性。人们爱上了Python的简单性,广泛的第三方库的支持和强大的表现力。因此,C和JAVA等语言的统治地位就结束了。
没有什么是完美的
等等,真的吗?如果你是一个软件开发人员,你可能会熟悉术语权衡。每当出现有关编程语言的问题时,人们期望得到的传统答案是:"这取决于"。
人们普遍认为,没有完美的编程语言。等一下,这是真的吗?
对我来说,不是。我才意识到Python是编程语言的灵丹妙药。我曾与Python C,C++,Matlab,Java合作过, Python到目前为止是最好的。
为了测试Python,我做了一个实验,并将我的大多数非Python程序转换为Python。由此产生的Python版本要好得多。
现在据我所知,Python一直因两个主要问题而受到严厉批评:
-
动态类型
-
速度慢
虽然我同意这些问题在某个时候对软件开发有重大影响,但我可以证实,这几乎是在Python还处于起步阶段的时期。然而由于其坚如磐石的社区,Python已经变异到几乎与每一个编程语言相当的地步。动态类型和速度不再对编程产生重大影响。
Python与每一个问题都兼容。如果是这样的话, 为什么 Python 还没有达到大规模使用呢?
如果我现在回答这个问题,我的话将没有任何争论的余地。因此,值得解释为什么动态类型和性能问题是可以被忽视的小问题。
动态类型
要了解动态类型,最好先了解什么是静态类型语言。静态类型是C和JAVA最喜欢的。这些语言与其动态类型语言之间的主要区别在于类型检查。静态类型语言是在编译时执行类型检查,而动态语言的类型检查在运行时执行。
少数开发人员对 Python 大吼大叫,因为 Python 的调试问题以及该语言如何使跟踪 bug 的过程比现在更加复杂。这种抱怨源于这样一个事实,即作为一种动态类型语言,Python 只有在运行时才标记错误,因此与 JAVA 等静态类型语言相比更容易出错。
从理论上讲,考虑到这句著名的谚语——犯错就是人类——这是一种威胁。但在实践中,我会严重怀疑数据类型错误有如想象的那样严重。认真讲,这些天谁会天天犯类型错误?
静态语言远非无忧调试的避风港。除了类型错误之外,大多数静态语言无法捕获您可能假设检测到的细微错误。这些错误静态类型与动态类型语言都有。
此外,我们可以在部署任何代码前进行单元测试。单元测试为防止类型错误提供了良好的防御层。只有很少的类型错误可以绕过单位测试搞砸代码。
在调试方面,编程语言的另一个特点是安全和不安全的类型。允许用户覆盖系统类型的语言是不安全的, 例如C语言。虽然不安全的输入类型使用户能够控制类型,但其误用可能导致程序任意崩溃。大多数静态类型的语言都有不安全的typing系统。但是JAVA 是一种安全类型, Python和其他动态类型的编程语言也是如此。
最后,我宁愿用像Python这样方便和高水平的语言编写代码100万次,也不愿陷入像JAVA这样的低级语言细节中。
速度
每谈到速度, 可怜的 Python 总是面带微笑地受到表演批评。我敢保证, 一旦你开始奉承 Python ,你会得到一个性能大幅度的提升。这是真的。嗯,在某种程度上。
我不会辩解这样一个事实,原始或标准的Python与C或Java相比是缓慢的。但正如我之前所说,一个像Python这样勤奋和创新的社区,不要害怕。
过去几年来,Python 与其静态类型竞争对手之间的性能差距已大幅缩小。JIT实时编译和并行计算的进步使Python能够赶上竞争对手。
为解决 Python 的性能问题,我们制定了许多解决方法。例如:将实现从CPython更改为PyPy显著提高了执行速度。偶尔PyPy 甚至会优于C。抑制 GIL 使 Python 能够并行执行序列,从而实现更快的计算速度。 将Numba库提供的jit装饰器应用于您的函数上,可以观看它以光速运行。许多Python的库,如Numpy和Scipy,都用C/C++书写。
正如你所看到的,性能相对于Python是一个有点过时的话题。有了所有这些解决方案,除了赞扬 Python 充满活力的社区之外,别无他法。
但是, 为什么有些人仍然不喜欢 Python, 更喜欢坚持老式的 Java 之类的?
为什么它们不向Python投降呢?
首先,看到Quora上有段话, 它让我咯咯地笑。它说Python就像一个朋友,Java像一个律师。当你需要很快完成一件事情时,与朋友一起工作是最好的。当你需要完成一笔上百万美元的交易,与律师一起工作可能更好。
显然,有些人不会也不会像应该的那样认真对待Python。有趣!
无论如何,我个人认为,阻止Python大规模采用的是人们对待编程的心态。换句话说,问题不在于语言,而在于人民。
你看,Python出来是为了使编程更容易,更重要的是,为了节省时间。
你可能会想,"我用JAVA轻松编码。为什么我需要Python?"。嗯,你当然不知道,如果你投资在Python,你将能够解锁你的全部写代码的潜力,而不是住在JAVA的低级混乱里。
Python 是开源的、干净的和用户友好的。有了一个漂亮的文本编辑器,你甚至可以使你的代码比英语文本漂亮。Python 不期望得到回报, 只是有点欣赏。
Python也许太好了,难以置信。我个人认为是的。
人们仍然使用C和JAVA的原因是基于旧的信念——努力工作是有回报的。我不会撒谎说这种信念是错误的,因为它不是。但是,我想传达的是,"努力工作是有回报的"只是被置于错误的属性上。相反,它来描述Python更合适。
事实上,JAVA和C是一个很好的热身跳板语言,他们可能会帮助你在Python上的成功。
此外,在顽固程序员眼中,向Python的过渡并不是一个选择,例如,他帮助了C语言的发展,并自那以后一直与它一起被困。一个真正随着语言的发展而成长并支持它的开发者不太可能放弃它。
我肯定的是,这些受人尊敬的开发人员即使在极端情况下也不会改变主意——例如,哪天发布一种可以自己编写代码的编程语言。
事实是,"适应"说起来容易, 做起来难得多。
最终想法
软件开发是一个迷人的领域。它总是让你保持奔跑学习的状态。因此,你应该不断有自己的武器储备,以对抗任何批评家来你批评最亲爱的编程语言。否则,你将不得不看着它被枪杀。知识和经验是你最好的枪。
编程曾经是一个高级难以到达的技术工作,但现在它是一个开放的世界,每个人都感谢Python。
"Python可以教给孩子们"——吉多·范·罗森
我个人认为Python是一种完美的编程语言。Python 在可读性方面胜过所有人。当然,一个坏的Python程序员会产生凌乱的代码。然而,我预计混乱的代码会比那家伙用另一种语言写同样的代码不那么混乱。
坦率地说, 我从来没有遇到过 Python 与另一种编程语言相比苍白的情况。也许我会在未来碰到,但如果我这样做了,我会做出新的忏悔。
同时,如果您有 Python 失去尊重的经历,请随时在评论中分享。如果Python不是开源的,人们就会指责我为Python做广告。
很高兴, 我学了Python。
参考文章
原文:https://towardsdatascience.com/python-is-perfect-why-anti-python-developers-wont-give-up-326ae1a09e7f
原作: Mohammed Ayar 翻译:大江狗
推荐文章
神文必读: 同步Python和异步Python的区别在哪里?