TIOBE指数编撰方法

来自泡泡学习笔记
跳到导航 跳到搜索

搜索引擎

有25个搜索引擎用于计算TIOBE指数。选择的搜索引擎是Similarweb排名最高的25个网站,同时满足以下条件:

  • 网站的入口页面包含搜索功能
  • 查询结果包含页面点击数的指示
  • 结果应以带有清晰标签的HTML形式提供
  • 带有特殊字符的语言的搜索引擎应正确编码
  • 搜索引擎至少应返回1个查询的结果
  • 查询结果不应包含太多异常值
  • 色情网站将被排除在外


编程语言

在本部分中,澄清了TIOBE指数中什么被视为编程语言。有三个要求都应该满足:

  • 语言应在维基百科上有自己的条目,并且维基百科清楚说明这是一种编程语言。这就是为什么(Ruby on)Rails、Excel、Android、Boost、Cocoa、ASP和AJAX在指数中不被视为编程语言的原因。
  • 编程语言应该是图灵完备的。因此,HTML和XML不被视为编程语言。
  • 编程语言在Google上应该至少有5000个+"语言名 programming"的搜索结果。

非常相似的编程语言会被合并在一起。目前,在计算分组评级时,会考虑到各个语言的最大命中数。将来,我们将更好地采用数学集合论中的"并集"来计算所有命中数。


关于哪些语言被分组的定义已按照以下规则进行了规范:

  • 如果一种语言有自己的维基百科条目,它不会与另一种语言分组。
  • 如果语言A自动重定向到另一个维基百科条目B,A将与B分组。
  • 如果语言A没有单独的维基百科条目,但在另一个维基百科条目B中提到,A将与B分组。
  • 为了过滤掉误报,使用了两种机制。首先,为语言定义了一个置信度。默认情况下,置信度为100%,但对于一些难以搜索的查询,如"Basic Programming",置信度会降低。除了置信度,有时还会使用例外情况或强制添加来排除误报。


评级

评级是通过计算最流行的搜索引擎的命中数来进行的。使用的搜索查询是:

+"<语言>编程"

命中数决定了一种语言的评级。对于列表中的所有语言,为每个搜索引擎对命中数进行了归一化处理。换句话说,所有语言的得分总和为100%。我们定义"hits(SE)"为搜索引擎SE中所有语言的命中数之和,"hits(PL, SE)"为搜索引擎SE中编程语言PL的命中数。在"hits(PL, SE)"的定义中,可能的误报已经被过滤掉。这是通过使用每个查询的手动确定的置信度因子来完成的。例如,查询"Basic programming"还会返回包含"在Java中提高您的基础编程技能"的页面。对于可能的误报,会检查每个搜索引擎的前100个页面,并根据此定义置信度因子。如果这个因子是90%,那么"hits(PL, SE)"只使用90%的命中数。


评级的计算公式如下:

(hits(PL,SE1)/hits(SE1) + ... + hits(PL,SEn)/hits(SEn))/n

其中n是使用的搜索引擎数量。