当前位置: 首页 > 科技观察

Python即将过时?Julia和Swift能代替它吗?

时间:2023-03-13 20:12:07 科技观察

在1990年代,Python作为通用编程语言诞生。尽管它很简洁,但Python在使用的??第一个十年并不乐观,它也没有真正成为一种面向开发人员的编程语言。当时,Perl是首选的编程语言,而Java已经在面向对象编程领域确立了自己的地位。当然,任何编程语言都需要一定的时间才能成熟,只有比现有工具更适合编程,才会被广泛使用。Python在2000年代初期的第一个机会是意识到Python的学习曲线比Perl更简单,并且可以与其他语言互操作。这个特性让大量的开发者可以使用Python编程。Django的出现终结了Perl,Python势头强劲,但仍无法与其“后裔”Java和JavaScript相提并论。快进到现在,2019年StackOverflow年度开发者调查报告显示,Python已经超越Java成为第二受欢迎的语言。Python也是10年来增长最快的编程语言。Python的流行很大程度上得益于2010年大数据的出现以及机器学习和人工智能的发展。企业迫切需要一种开发速度快、门槛低的编程语言来管理大规模数据和科学计算任务,而Python可以完美解决这些问题。除了以上优点外,Python还是一种动态类型的解释型语言。更重要的是,它得到了谷歌的支持,谷歌为Tensorflow购买了Python,使其成为数据分析、可视化和机器学习的首选语言。不过,虽然新的十年对机器学习和人工智能的需求也会增加,但Python的好景不长。与其他编程语言一样,Python本身也有其缺陷。这些缺陷使它很容易被其他更适合日常企业任务的语言所取代。即使有R语言掌舵,Swift、Julia和Rust等新编程语言的出现也对当前的数据科学之王构成了严重威胁。Rust仍在尝试适应机器学习,因此我认为Swift和Julia是将取代Python并最终统治数据科学的语言。让我们来看看Python面临的困境。Python缺乏类型安全并且运行速度非常慢来源:unsplash所有美好的事物都是有代价的,Python的动态类型也不例外。动态类型使得无需定义类型就可以轻松快速地编写代码。但是,尤其是当代码库变大时,代码更容易出现问题,开发人员在生产环境中运行代码的难度更大。编译器容易发现的BUG在Python中无法识别,这会造成开发障碍并最终减慢大型应用程序的开发速度。更糟糕的是,与编译后的代码不同,Python的解释器会在每次执行代码时分析每一行代码。与其他语言相比,Python的开销更大,程序性能也低得多。而Julia可以避免上述问题。虽然Julia是一种动态类型语言,但它有一个实时编译器。它的JIF编译器要么在执行前生成正确的机器代码,要么使用先前存储的缓存编译,这使其具有与静态类型语言相同的性能。更重要的是,Julia有一个称为multi-dispatch的关键特性,它类似于OOPs函数重载(尽管仅适用于运行程序)。多重分派的强大之处在于它能够处理不同的参数类型,而无需创建单独的函数名称或嵌套的if语句。这有助于编写更紧凑的代码,并且是数值计算的一大胜利,这使得扩展解决方案以处理所有类型的参数变得容易。斯威夫特甚至更好。Swift是一种静态类型语言,由LLVM编译器(低级虚拟机)高度优化。它快速编译成汇编代码,这使得Swift超级高效,堪比C语言的速度。此外,Swift还有更好的内存安全和管理工具,即自动引用计数(AutomaticReferenceCounting)。与垃圾收集器不同,ARC在引用计数为零时回收内存,因此更准确。作为提供类型注解的编译型语言,Swift和Julia比Python更快更强大。仅此一点,就足以让开发人员推荐它们。Python在并行性方面存在局限性。Python最大的缺点不是速度慢,而是并行计算的局限性。简单地说,Python使用GIL(全局解释器锁)——它通过防止多个线程同时执行来提高单个线程的性能。这一过程有一个很大的障碍:开发人员不能使用多个CPU内核进行密集计算。我们已经很好地利用了Python与C/C++库(如Tensorflow、PyTorch等)的互操作性。这是众所周知的,我同意这一点。但是Pythonwrappers并不能解决所有的调试问题,最后还得依赖C和C++来检查底层代码。从根本上说,Python的优势在下层就失效了,这就足以让Python出局了。这个因素将很快决定Python的衰落以及Julia和Swift的崛起。Julia是专门为解决Python的缺点而设计的。它具有三个主要特性:协程(异步任务)、多线程和分布式计算。这些特性展示了并发和并行编程的无限可能性。更快地执行科学计算并解决大数据问题。另一方面,Swift拥有开发移动应用程序所需的所有工具,并且能够进行并行计算。来源:unsplashSwift和Julia都具有Python的互操作性和强大的支持。尽管在速度、多线程和类型安全方面存在不足,但Python拥有庞大的生态系统,拥有大量的库和包。在Python面前,Swift和Julia仍然是机器学习领域的“小弟”,库数量非常有限。但是,Julia和Swift比Python更强的互操作性,极大地弥补了两者之间缺乏库支持的缺点。Julia不仅允许程序员使用Python代码(反之亦然),还可以与C、R、Java以及几乎所有主要编程语言进行互操作。这种多功能性是该语言的强大动力,增加了它被数据科学家快速采用的机会。另一方面,Swift通过PythonKi库提供与Python的互操作性。Swift(源自苹果)最大的卖点是它得到了谷歌的大力支持。十几年前从全面支持中崛起的是Python,真是风云变幻。此外,Swift的创造者ChrisLattner正在谷歌的AI大脑团队工作,这表明Swift正在被培养以在机器学习领域取代Python。Tensorflow团队通过S4TF项目投资了Swift,进一步证明了这门语言不仅仅是Python的打磨版本。相反,Swift凭借其差异化的编程支持和类似于C的低级工作能力,很可能会被用来取代支撑深度学习的工具。来源:unsplash随着数据量的不断增加,Python的致命弱点即将显现。专注于易用性和快速编码能力的日子已经一去不复返了,速度和并行计算是游戏的明星。Python作为一种通用语言,将不再解决这些问题。Python终将消亡,Julia和Swift似乎是接班人。不过,我并不是说Python作为一种编程语言会立即消失,它会逐渐淡出人们的视线。Python在数据科学中的地位会逐渐降低,专为深度学习设计的语言将成为未来的主流。