[广告:最高 ¥2000 红包]阿里云服务器、主机等产品通用,可叠加官网常规优惠使用 | 限时领取原文链接:http://codelani.com/posts/does-every-programming-language-have-a-central-package-repository.html
像数百万其他程序员一样,我每天都依赖于中央软件包存储库( central package repositories,CR),如npm,PyPI和CRAN。

前几天我很好奇:每种编程语言都有这些吗?我决定找出答案。我指着我的爬虫并训练了一个模型来检查我正在跟踪的3,006种语言中的每一种语言的包存储库。结果让我感到惊讶。
★只有1%的人拥有它们
我的模型只发现了39种带有中央软件包存储库的语言。(为了比较,维基百科列出20种)。那只是大约1%的语言。我以为会更高。
★前100名中约有30%拥有它们
鉴于编程语言非常受欢迎并出现在我的前100名列表中,因此CR的可能性大约高出15-30倍。不在前100名以内的编程语言,拥有CR的概率<1%。
★总计200万个模块(类库或工具包)
这些CR中有超过2,000,000个包(也称为模块或库)。这意味着工具包比编程语言多大约1,000倍。
有了这么多的软件包,名称冲突肯定是一个问题,尽管不像单独注册130,000,000+“.coms”的域系统那样严重。
★前5名语言包揽所有工具包的80%左右
超过900,000,Javascript的npm包含的包比其他所有CR组合的要多得多。Javascript,Java,PHP,Perl和Python的类库约占所有类库数的80%。
★GitHub拥有超过100,000,000个存储库
鉴于GitHub的大小,它的增长有点像一个通用的中央软件包存储库(尽管完全没有模板化),并且鉴于这些CR中的许多(如果不是大多数)软件包也列在GitHub上,可以想象GitHub是最大的CR存放地。
★较新的语言不太可能有CR
这让我感到惊讶。具有CR的语言的中位年龄是24(1995)。在我上面提到的前5种语言中,都是在那时创建的。几乎总是CR的创建遵循语言的发布,有时几个月或有时几年。我预计大多数CR都来自较新的语言,但事实并非如此。虽然像Rust和Julia这样的新语言有CR,但Go和Kotlin等其他语言却没有。
★视觉

★清单
这是我拥有它们的语言的主要中央软件包存储库列表。我将列表略微删除,只包含超过100个可用包的CR。一如既往,如果您发现任何遗漏或错误,请告诉我!
编程语言id |
工具包网站website |
包数量packages |
语言起始appeared |
javascript |
http://npmjs.org |
901,025 |
1995 |
java |
https://search.maven.org/ |
266,776 |
1995 |
php |
https://packagist.org/ |
211,636 |
1995 |
perl |
https://www.cpan.org/ |
176,876 |
1987 |
python |
https://pypi.python.org/pypi |
167,097 |
1991 |
csharp |
https://www.nuget.org/ |
141,524 |
2000 |
swift |
https://cocoapods.org/ |
57,000 |
2014 |
clojure |
https://clojars.org/ |
23,459 |
2007 |
rust |
https://crates.io/ |
22,486 |
2010 |
r |
https://cran.r-project.org/ |
13,674 |
1993 |
haskell |
https://hackage.haskell.org/ |
13,487 |
1990 |
ruby |
https://rubygems.org/ |
9,889 |
1995 |
matlab |
https://www.mathworks.com/matlabcentral/fileexchange/ |
9,718 |
1984 |
erlang |
https://hex.pm/ |
8,069 |
1986 |
tex |
https://ctan.org/ |
5,649 |
1978 |
stata |
https://www.stata.com/manuals/rssc.pdf |
4,608 |
1985 |
smalltalk |
http://smalltalkhub.com/ |
4,534 |
1972 |
powershell |
https://www.powershellgallery.com/ |
4,382 |
2006 |
emacs-editor |
https://melpa.org/ |
4,079 |
1976 |
dart |
https://pub.dartlang.org/ |
2,751 |
2011 |
maple |
https://www.maplesoft.com/applications/ |
2,650 |
1982 |
ocaml |
https://opam.ocaml.org/ |
2,224 |
1996 |
lua |
https://luarocks.org/ |
2,047 |
1993 |
julia |
https://pkg.julialang.org/ |
1,906 |
2012 |
d |
https://code.dlang.org/ |
1,498 |
2001 |
dynamo-visual-language |
https://dynamopackages.com/ |
1,494 |
2011 |
haxe |
https://lib.haxe.org/ |
1,303 |
2005 |
racket |
https://pkgs.racket-lang.org/ |
1,122 |
1994 |
elm |
https://package.elm-lang.org/ |
594 |
2012 |
coldfusion |
https://www.forgebox.io |
519 |
1995 |
nim |
https://nimble.directory/ |
499 |
2008 |
spark |
https://spark-packages.org/ |
441 |
1988 |
prolog |
http://www.swi-prolog.org/pldoc/doc/SWI/library/prolog_pack.pl |
275 |
1972 |
mathematica |
http://packagedata.net/ |
210 |
1988 |
关注微信公众号