为什么未来不适合Python

当然,尽管这种编程语言将需要很多年。



编程社区花了数十年才意识到Python。自2010年代初以来,它一直在蓬勃发展-并最终超过了C ++,C#,Java和JavaScript。

但是这种趋势会持续多久?最终何时将Python替换为其他语言,为什么不可避免地会发生这种情况?
EDISON软件-网络开发
该翻译得到了EDISON的支持。

我们正在使用Python开发应用程序以及进行软件测试

我们热爱并广泛使用Python!;-)

是什么使Python今天流行


如果查看帖子中标签的数量,可以通过StackOverflow判断Python的流行程度。考虑到StackOverflow的规模,这是该语言受欢迎程度的客观指标。


提到一些流行的编程语言的StackOverflow-多年来变化的动态。Python的性能稳定增长,而竞争对手在下降。

尽管R在过去几年一直处于平稳状态,而许多其他语言也在稳步下降,但Python的增长似乎势不可挡。在所有StackOverflow问题中,有将近14%被标记为“ python”,而且这种趋势还在增长。这有很多原因。

经过时间测试


自90年代以来,Python就已经存在。不仅仅是他有足够的成长时间。并形成了一个庞大的支持社区。

因此,如果您在编写Python代码时遇到任何问题,则很有可能可以使用Google搜索快速解决它们。仅仅因为有人已经遇到过类似的问题,并为此写了一些有用的东西。

对初学者友好


关键不仅在于该语言已经存在了几十年,为此程序员编写了许多出色的教科书。 Python语法也非常易读。

首先,不需要指定数据类型。您只需声明一个变量-从上下文中,Python将了解它是整数,浮点值,布尔值还是其他值。这对初学者有很大的帮助。如果您曾经使用C ++进行编程,那么您会知道当不进行编译时,因为用整数而不是浮点数代替了,这是多么可悲的事情。

而且,如果您曾经不得不比较Python和C ++代码,那么您就会知道Python看起来更容易理解。尽管C ++的设计考虑到了英语,但与Python代码相比,这是非常困难的阅读。

普遍


Python已经存在了很长时间,在此期间,开发人员已经为各种场合创建了许多库。如今,几乎所有内容都可以找到所需的工具。

有很多数字,向量和矩阵吗?NumPy进行救援。
技术工程计算?使用SciPy
大数据分析?熊猫会解决的。
机器学习,神经网络,人工智能?为什么不使用Scikit-Learn

无论您执行什么计算任务,都有可能为其提供Python软件包。这使语言保持了潮流,这在过去几年中机器学习的日益普及中显而易见。

Python的缺陷-它们是否可以掩盖该语言


受到当前情况的启发,可以想象Python是一个严肃而长期的工作。但是,像任何技术一样,Python也有其弱点。让我们按顺序检查最重要的缺点,并评估它们是否致命。

速度


Python很慢。不,很好,真的很慢。平均而言,任务运行时间是竞争语言的2-10倍。

这是有原因的。首先,动态类型-记住,上面我们说过,当您不需要像其他语言一样指定数据类型时,这非常方便吗?硬币的另一面是需要使用大量内存,因为该程序需要为每个变量保留足够的空间,以便它无论如何都能工作。而且“有余量”的内存会导致更多的计算时间开销。

其次,Python一次只能执行一项任务。这也是灵活的数据类型的结果-Python必须确保每个变量仅对应一种数据类型,并且并行进程会对此产生干扰。

但是,总的来说,速度并不关键。生产性的计算机和服务器非常容易访问,因此我们只能谈几分之一秒。最终用户不在乎其应用程序是在0.001或0.01秒内加载。

可见区域


Python最初是动态受限的。这基本上意味着,要评估表达式,编译器首先搜索当前块,然后顺序搜索所有调用函数。

动态范围的问题在于,每个表达式都需要在所有可能的上下文中进行检查,这很繁琐。这就是为什么大多数现代编程语言都使用静态范围的原因。

Python尝试移至静态范围,但失败了。通常,内部作用域(例如函数中的功能)可以查看和更改外部作用域。在Python中,内部区域只能看到外部区域,而不能更改它们。这导致很多混乱。

Lambda函数


尽管Python具有所有的灵活性,但是lambda的使用还是非常有限的。它们只能是Python中的表达式,而不能是运算符。

另一方面,变量声明和运算符始终是运算符。这意味着不能将lambda用于它们。

表达式和语句之间的区别相当随意,在其他语言中不会发生。


严格的缩进使代码更具可读性,但其不可避免性会削弱支持。

空格和制表符


在Python中,空格和制表符用于指示不同级别的代码。这使其具有视觉吸引力和直观性。

在其他语言(例如C ++)中,带分号的大括号用于嵌套结构。尽管这对于初学者来说可能并不那么漂亮和不便,但它使代码的维护更加方便。随着项目的发展,这种方法的重要性也在增加。

像Haskell这样的新的(相对)语言解决了这个问题:它们依赖于空格,但是为那些想要不用空格的人提供了替代语法。

移动开发


随着从台式机到智能手机的巨大转变,显而易见的是,越来越需要可靠的语言来创建移动软件。

但是Python中的移动应用程序大约有两次并且计算错误。这并不意味着根本不可能-为此,有一个名为Kivy的软件包。

并非为移动设备创建Python。即使它可以为解决该领域的基本问题提供可接受的结果,也最好使用为移动应用程序开发量身定制的语言。一些常用的移动编程平台包括React Native,Flutter,Iconic和Cordova。

当然,笔记本电脑和台式机仍将使用多年。但是,移动设备早已超过了桌面流量。可以肯定地说,学习Python不足以成为经验丰富的综合开发人员。

运行时错误


首先,分别编译,然后执行-使用某些其他语言,但不使用Python。相反,代码执行时都会编译,因此在程序执行期间会出现代码中的任何错误。这导致性能降低,不必要的时间消耗以及大量测试的需求。考验更多的考验!

这对初学者非常有用,因为仅测试就可以带来很多好处。但是对于有经验的开发人员,必须用Python调试复杂的程序会使他们出错。性能的缺乏是最严重的因素,表明Python将在可预见的将来通过。

将来有什么可以取代Python-何时


几个新的竞争对手出现在编程语言市场上:

  • Rust , Python — . . StackOverflow Insights, .
  • Go , Python. , . : Go — .
  • Julia是一种非常新的语言,可以直接与Python竞争。它填补了大规模技术计算中的空白:通常您可以使用Python或Matlab,使用C ++库执行部分任务(有时是非常重要的一部分)。现在,您无需使用两种语言,而只需使用Julia。

尽管市场上还有其他语言,但Rust,Go和Julia修复了Python的弱点。所有这些语言在未来技术中都非常出色,特别是在人工智能方面。尽管它们的市场份额仍然很小(这反映在StackOverflow标签的数量上),但是它们每个的趋势都是显而易见的:上升而上升。


提到Go / Rust / Julia的StackOverflow-多年来变化的动态。指标仍然不高,但是这些语言有稳定的上升趋势。

鉴于当今Python的广泛普及,要用这些新语言中的任何一种取代它要花费五年甚至整个时间。

很难说它将是哪种语言-Rust,Go,Julia或未来的其他新语言。但是考虑到由于其体系结构而对Python至关重要的性能问题,不可避免的迟早会发生。

All Articles