不认为 两者 的语法差别是造成如此场面的次要起因.
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 还是支流语言.