Python即将出局?Julia和Swift能取而代之吗?
全文共3042字 , 预计学习时长8分钟
文章插图
图源:unsplash
上世纪90年代 , Python作为一种通用编程语言诞生了 。 尽管语句简洁 , Python在最初十年的使用情况却并不乐观 , 它也没能真正成为开发者使用的编程语言 。 当时 , Perl是编程首选 , Java已在面向对象编程领域站稳脚跟 。
当然 , 一切编程语言都需要一定的成熟时间 , 只有它比现有工具更适合编程 , 才会被广泛使用 。 Python在21世纪初期的第一个机遇就是 , 人们意识到Python的学习曲线比Perl简单 , 还能与其他语言互相操作 。 这种特性让大量开发者使用Python编程 。 Django的出现终结了Perl, Python势头更猛了 , 但仍然无法与其“后辈”Java和JavaScript相提并论 。
快进到现在 , 2019年StackOverflow开发者年度调查报告显示 , Python已超越Java成为第二受欢迎的语言 。
Python还是10年来发展速度最快的编程语言 。 Python的普及很大程度上得益于2010年大数据的出现及机器学习、人工智能的发展 。 企业迫切需要发展迅速、门槛低的编程语言以管理大规模数据和科学计算任务 , 而Python能完美解决这些问题 。
除了以上优势 , Python还是一种动态类型的解释型语言 。 更重要的是 , 它得到了Google的支持 , 后者为Tensorflow购买了Python , 这使其成为数据分析、可视化和机器学习的首选语言 。
然而 , 尽管对机器学习和人工智能的需求在新十年也将不断增加 , 但Python的好景却不长了 。 如同其它编程语言一般 , Python本身也有缺陷 。 这些缺陷让它能轻易被其它更适合完成企业常规任务的语言所取代 。 哪怕有R语言坐镇 , Swift、Julia和Rust等新编程语言的出现也对数据科学的现任王者构成了极大威胁 。
Rust仍在努力适配机器学习 , 所以我认为Swift和Julia是取代Python并最终统治数据科学的语言 。 一起来看看Python面临的困境吧 。
文章插图
Python缺乏类型安全性 , 运行速度非常慢
文章插图
图源:unsplash
所有的好事都要付出代价 , Python的动态类型化也不例外 。 动态类型可以轻松快速地编写代码而无需定义类型 。 然而 , 尤其是当代码库变大时 , 代码运行更容易出问题 , 开发人员在生产环境中运行代码时会更艰难 。 编译器很容易发现的 BUG , 在Python中反而无法识别 , 这样就会产生开发障碍 , 最终降低大规模应用程序的开发速度 。
更糟糕的是 , 不同于编译代码 , Python的解释程序每次执行时都要分析每行代码 。 相比于其它语言 , Python开销更大 , 程序性能低得多 。
而Julia能避免上述问题 。 Julia虽是动态类型语言 , 但是它有实时编译器 。 其JIF编译器要么就是在执行前生成正确的机器代码 , 要么就是使用先前已储存、缓存的编译 , 这让它拥有与静态类型语言一样的性能 。
更重要的是 , Julia有一个称为多分派的关键特性 , 类似于OOPs的函数重载(虽然仅能用于运行程序) 。 多分派的强大之处在于它能够处理不同的参数类型 , 而无需创建单独的函数名或嵌套的if语句 。 这有助于编写更加紧凑的代码 , 也是数值计算的一大胜利 , 它可以轻松地通过扩展解决方案来处理所有类型的参数 。
Swift甚至更胜一筹 。 Swift是静态类型语言 , LLVM编译器(低级虚拟机器)对其进行了高度优化 。 它能快速编译成汇编代码 , 这让Swift超高效运行 , 速度可比拟C语言 。
此外 , Swift拥有更好的内存安全和管理工具 , 即自动引用计数(Automatic Reference Counting) 。 与garbage收集器不同 , 只要引用计数归零 , ARC就会回收内存 , 因此更为准确 。
作为提供类型注释的编译语言 , Swift和Julia比Python速度更快 , 功能更强大 。 仅仅这一点 , 可能就足以让开发人员推荐它们 。
文章插图
Python在并行性方面有局限性Python最大的缺点不是速度慢 , 而是并行计算的局限性 。 简单地说 , Python使用GIL(全局解释器锁)——它会通过阻止多个线程同时执行 , 来提高单个线程的性能 。 该过程有一个很大的障碍:开发人员不能使用多个 CPU核心来进行密集的计算 。
我们在利用Python与Tensorflow、PyTorch 等C/C++库的互操作性方面做得不错 。 这一点众所周知 , 我也十分赞同 。 但是Python包装器并不能解决所有调试问题 , 最后还是得靠C和C++检查底层代码 。 从根本上说 , Python的优势在低层无效 , 这点足以让Python出局 。
- 三星|高通骁龙875即将登场,三星Exynos 1080成其唯一对手
- 系列|联想碰瓷Redmi后正式复活乐檬手机!乐檬K12系列即将到来
- 骁龙|realme新系列产品即将发布 或将搭载旗舰芯片骁龙875
- 即将|vivo V20 Pro即将发布:骁龙765G处理器加持!
- 用户|马化腾的2020感悟:我相信又一场大洗牌即将开始
- 开售|定好闹铃!Redmi Note 9 Pro即将开售,手慢无货
- 系列|realme 副总裁:骁龙新旗舰即将登场,realme 新系列即将到来
- 即将|realme全新系列即将到来:或搭载骁龙875芯片
- 告诉|阿里大佬告诉你如何一分钟利用Python在家告别会员看电影
- Python源码阅读-基础1