【译】每种编程语言都有一个中央包存储库吗?

【精选秒杀】热卖云产品限量抢,云服务器20元/月起,服务稳定,价格更优

原文链接:http://codelani.com/posts/does-every-programming-language-have-a-central-package-repository.html

像数百万其他程序员一样,我每天都依赖于中央软件包存储库( central package repositories,CR),如npmPyPICRAN

前几天我很好奇:每种编程语言都有这些吗?我决定找出答案。我指着我的爬虫并训练了一个模型来检查我正在跟踪的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等其他语言却没有。

★视觉

VIS1

★清单

这是我拥有它们的语言的主要中央软件包存储库列表。我将列表略微删除,只包含超过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


关注微信公众号

码中人 微信公众号