不认为 两者 的语法差异是造成如此局面的主要原因.
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还是主流语言.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。