不认为 两者 的语法差异是造成如此局面的主要原因.
perl的语法虽然比较特立独行, 但也不是很难.

总结如下原因:

library(或者叫package)的使用

如果是本语言原生的library, 那没有问题. 如果是需要调用外部函数/过程的package的话, 那么就会有巨大的差异.

  • python是预编译然后从pypi上下载
    python(pip)将package下载到本地
    然后解压后将package内容安装到不同的指定目录
  • perl是代码下载到本机后本机编译
    需要在本机上安装c编译器, linker, pkconfig, 以及依赖的动态库...
    构建之后, 再将构建生成物安装到不同的指定目录

比如: PyQT/PySide安装后,会有一些动态链接库(*.so/*.dll/*.pyd)出现在site-packages/pyqt5/的目录里. 可以证明python的package是all in one型.

从为数不多的Perl实际使用来看,本机编译比较困难,要安装许许多多的开发工具和辅助工具,经常遇到某某软件缺失问题,有时还会遇到莫名的编译失败 安装失败,不如python直接将编译好的动态链接库下载到指定位置,也不需要额外安装c/haskell/Ada或者什么语言的编译/构建环境,大大降低了入门的难度与所需知识储备
(目前看来这是许多新领域选择python 而不是perl的重要原因。毕竟熟练掌握c程序的构建需要很多很多的知识储备, 一旦出现安装问题 小白就抓瞎)。

所以希望Perl社区认真改进这个问题(像python一样提供编译好的package), 提高使用体验.

不过,perl社区都是大牛, 可能不会出现这种基础问题, 自然也意识不到

面对对象能力

python perl都有一点面对对象能力。
Perl的OO语法比较怪异(而且有不同时期的不同实现).
python的OO语法比较正统(接近c++ java c#这类OO主流), 学习起来比较容易.

主流惯性

由于长期将精力专注于Raku(以前的perl 6), perl社区错过了web2.0, 大数据, 人工智能 这些新热点. 造成在这些领域兴起之后, 选择的主要语言是python, 新加入的学习者自然跟随主流.

在生物信息 数据挖掘这些领域, 由于领域惯性, perl还是主流语言.


德熀
10 声望2 粉丝

兴趣广泛