Python是1990年代发布的一种通用编程语言。虽然Python的语法很简洁,但它在最初十年并不为人所知,也没有真正融入开发人员的工作中。Perl是首选的脚本语言,而Java已成为面向对象编程领域的主流。当然,任何语言的成熟都需要时间,只有当它比现有工具更适合开发任务时才会被采用。对于Python,这个时间第一次出现是在2000年代初,当时人们开始意识到它比Perl更容易学习,并且提供与其他语言的互操作性。这一发现促使许多开发人员将Python集成到他们的应用程序中。Django的出现最终导致了Perl的消亡,Python开始获得更多的发展机会。虽然不如Java和JavaScript流行,它们比Python更新。快进到现在,根据2019年StackOverflow开发人员调查,Python已经超越Java成为第二流行的编程语言。Python是过去十年中增长最快的编程语言。Python的流行与2010年代大数据的出现以及机器学习和人工智能的发展密不可分。企业迫切需要一种低门槛的快速开发语言,可以帮助管理大规模数据和科学计算任务。Python非常适合这些领域中具有挑战性的任务。除了这些有利因素外,Python还是一种支持动态类型的解释型语言。更重要的是,它得到了谷歌的支持,谷歌投资开发了Python的深度学习框架Tensorflow,这使得Python成为数据分析、可视化和机器学习的首选语言。不过,虽然机器学习和人工智能的需求还在不断增长,但Python不会一直高居榜首,它也会有老去的一天。与所有编程语言一样,Python也有其弱点。这些弱点使得Python很容易被更适合企业需求的编程语言所取代。虽然已经有R,但Swift、Julia和Rust等更新语言的出现实际上对当前的数据科学之王构成了更大的威胁。Rust仍在努力追赶主要的机器学习社区,因此我相信Swift和Julia将成为推翻Python并最终统治数据科学的语言。Python缺乏类型安全并且非常慢。所有好的东西都是有代价的,Python的动态类型特性也不例外。动态类型可以在不定义类型的情况下更轻松地快速编写代码,但是,这会增加代码运行时出现错误的风险,尤其是当代码库规模增大时,开发人员在生产环境中运行代码会更加困难。编译器很容易发现的错误在Python中无法识别,这会造成开发障碍并最终减慢大型应用程序的开发过程。更糟糕的是,与编译后的代码不同,Python的解释器会在代码执行时分析每一行代码。与其他语言相比,它不仅导致了更大的开销,而且大大降低了程序的性能。Julia让您避免这些问题。虽然它是动态类型的,但它有一个即时编译器。JIT编译器要么在执行前生成机器代码,要么使用先前存储的缓存进行编译,这使得Julia可以像静态类型语言一样执行。更重要的是,它有一个关键特性叫做multi-dispatch,类似于OOPs的函数重载,虽然只在程序运行时有用。多重分派的强大之处在于它能够处理不同的参数类型,而无需创建单独的函数名称或嵌套的if语句。此功能不仅可以帮助开发人员编写更紧凑的代码,而且对于数值计算来说也是一个巨大的胜利,因为与Python不同,我们可以轻松扩展解决方案以处理所有类型的参数。更好的是,Swift是一种静态类型语言,由于其LLVM(低级虚拟机)编译器而得到了高度优化。LLVM可以快速编译成汇编代码,这使得Swift可以超高效地运行,几乎与C一样快。此外,Swift具有更好的内存安全和管理工具,即自动引用计数。与垃圾收集器不同,ARC更具确定性,因为只要引用计数达到零,它就会回收内存。作为提供类型注解的编译型语言,Swift和Julia比Python更快更强大。考虑到许多其他因素,仅此一项就足以让开发人员推荐它们而不是旧语言。Python在并行方面存在局限如果说速度慢不是Python的明显缺点,那么并行计算方面的局限绝对是最明显的缺点。简而言之,Python使用了GIL(GlobalInterpreterLock),通过防止多个线程同时执行来提高单个线程的性能。这个过程中有一个很大的障碍:开发人员不能使用多个CPU内核进行密集计算。在这里,我必须同意,到目前为止,我们在利用Python与C/C++库(如Tensorflow、PyTorch等)的互操作性方面做得非常好。但是Python包装器并不能解决所有调试问题。在检查底层代码时,我们仍然必须依赖C和C++。从本质上讲,我们不能在低层次上利用Python,而这正是Python与众不同的地方。这个因素将很快决定Python的衰落以及Julia和Swift的崛起。Julia是一种专门为解决Python的缺点而设计的语言。它主要提供协程(异步任务)、多线程、分布式计算三大特性,这一切都展现了并发和并行编程的无限可能。这种结构使Julia能够比Python更快地执行科学计算和解决大数据问题。另一方面,Swift拥有开发移动应用程序所需的所有工具,并且在并行计算方面没有问题。Swift和Julia都具有Python的互操作性和强大的支持。尽管Python在速度、多线程和类型安全方面存在不足,但它拥有庞大的生态系统,拥有大量的库和包。在Python面前,Swift和Julia还是机器学习领域的婴儿,它们的库数量非常有限。然而,它们与Python的互操作性弥补了Julia和Swift中库支持的不足。Julia不仅允许程序员使用Python代码(反之亦然),它还支持与C、R、Java以及几乎所有主要编程语言的互操作性。这种多功能性肯定会给该语言带来良好的推动力,并增加其在数据科学家中快速采用的机会。另一方面,Swift通过PythonKit库提供与Python的互操作性。Swift(起源于Apple)的一大卖点是它得到了谷歌(Google)的大力支持,谷歌在几十年前就全面支持Python。此外,Swift的创建者ChrisLattner现在在谷歌的AI大脑团队工作这一事实表明,Swift正在被培养为机器学习领域中Python的替代品。Tensorflow团队通过S4TF项目投资于Swift,进一步证明该语言不仅仅是Python的包装器。相反,Swift凭借其差异化的编程支持和类似C的低级别工作能力,很可能会被用来取代低级别的深度学习工具。结束语随着数据量的不断增加,Python的致命弱点很快就被发现了。易用性和快速编写代码的能力不再重要,速度和并行计算才是游戏的主角,而Python作为一种通用语言,将不再解决这些问题。Python将会消失,而Julia和Swift似乎是接替Python的候选人。但是,需要注意的是,Python作为一种编程语言不会很快消失。而是在数据科学中的地位会逐渐倒退,因为专为深度学习设计的语言才是主流。
