专栏首页Web技术布道师你真的了解 TIOBE 编程语言排行榜吗?

你真的了解 TIOBE 编程语言排行榜吗?

前情提要

首先,我们来看一下2018年4月发布的最新 TIOBE 指数排行榜的前 20 名(https://www.tiobe.com/tiobe-index/),如下图所示:

可以看到,我大 PHP 比 2017 年 4 月同期降低了 1 个名次,但市场占有率却有了小幅上升,增加了 0.84% 到达 4.218%,还是比较稳的。

接着,我们来看下 TIOBE 官方对这个编程语言排行榜的解读:

Object-C(下面简称 OC)和Perl语言从2017到2018跌落超过3个名次,OC名次跌落的原因很简单,苹果公司几年前就开始抛弃OC,取而代之的是swift。另外,移动应用若被转移到平台独立的语言和框架,就像 swift 这种只在苹果系统上可用的语言也处于一个艰难的时刻。至于Perl语言,这个到2005年风靡全世界的脚本语言,2008年,我们在接受Dobb博士的杂志采访时说,基于我们当时在TIOBE指数中看到的趋势,Perl将会灭绝。在此之后,一场宗教战争开始,Perl顽固派声称这不会发生,而且TIOBE指数正在被玩弄。Stevan Little在2013年发表了一场突破性的演讲,名为“Perl没死,它是死胡同”,表明一旦软件工程师离开Perl语言,他们将永远不会回来。我个人认为 Perl 6 系列 版本(迟来了几十年)对于即将发生的事情处于一个不清晰的未来规划状态,这是工程师们寻求如Python和ruby等替代语言的主要原因,甚至到现在,perl社区依然没有一个清晰的未来规划,那么它的慢慢消亡也是理所当然的。 重要提示,SQL在2018年2月已经被加入到TIOBE指数当中。因为SQL开始变得“图灵完整”(http://en.wikipedia.org/wiki/Turing_completeness),同时,由于此前没有记录SQL的TIOBE,让它看起来增长十分迅速,但这并非常态。 TIOBE编程语言社区指数是编程语言流行程度的指示器,它每月更新一次,该指数每月更新一次。这一评级是基于全球较为资深工程师的数量、课程和第三方供应商的数量,通过热门搜索引擎,如谷歌、必应、雅虎、维基百科、亚马逊、YouTube和百度都是用来计算占有率的。需要注意的是,TIOBE指数并非用于确定编程语言的好坏,也不是用于确定编程语言的代码行数。该指数可用于检查您的编程技能是否仍处于最新状态,或者在开始构建新的软件系统时,是否应该采用何种编程语言进行战略决策。

TIOBE 指数的官方定义

(https://www.tiobe.com/tiobe-index/programming-languages-definition/)

格式为

+"<language> programming"

上面的“<language>”更改为指定的编程语言,例如:+“PHP programming”,这个格式的搜索词命中次数基本上会被用作计算对应编程语言指数的依据。

一般来说,只有符合条件的搜索引擎,符合条件的编程语言才会被计入TIOBE的影响因子中。

搜索引擎

下面有25个搜索引擎用于计算TIOBE指数。所选搜索引擎是Alexa排名最高的25个符合以下条件的网站:

1 该网站的入口页面包含一个搜索工具 2 查询该网站的结果包含页面点击数量的指示结果 3 应该以带有清晰标签的HTML 4 具有特殊字符的语言的搜索引擎应该被正确编码 5 搜索引擎应该至少返回1个查询 6 查询该网站的结果不应包含太多的异常值 7 色情网站不包含在内

基于上面的标准,符合条件的搜索引擎如下:

  • Google.com: 7.69%
  • Youtube.com: 7.38%
  • Baidu.com: 7.08%
  • Wikipedia.org: 6.77%
  • Yahoo.com: 6.46%
  • Google.co.in: 6.15%
  • Google.co.jp: 5.85%
  • Google.de: 5.54%
  • Google.co.uk: 5.23%
  • Google.com.br: 4.92%
  • Google.fr: 4.62%
  • Google.it: 4.31%
  • Google.es: 4.00%
  • Google.com.mx: 3.69%
  • Google.ca: 3.38%
  • Ebay.com: 3.08%
  • Bing.com: 2.77%
  • Hao123.com: 2.46%
  • Csdn.net: 2.15%
  • Google.com.au: 1.85%
  • Google.co.id: 1.54%
  • Google.nl: 1.23%
  • Google.ch: 0.92%
  • Google.com.ar: 0.62%
  • Ebay.de: 0.31%

可以看到国内就百度和hao123及CSDN符合条件,这个结果凸显了百度和CSDN在国际上的知名度。

不符合条件的搜索引擎及原因如下:

  • 360.cn: SITE_TIMED_OUT
  • Aliexpress.com: NO_SEARCH_FIELD
  • Alipay.com: NO_SEARCH_FIELD
  • Amazon.co.jp: SOURCES_NOT_PARSABLE
  • Amazon.com: NO_COUNTERS
  • Amazon.de: NO_COUNTERS
  • Chase.com: NO_SEARCH_FIELD
  • Cnn.com: SOURCES_NOT_PARSABLE
  • Craigslist.org: NO_SEARCH_FIELD
  • Diply.com: NO_SEARCH_FIELD
  • Espn.com: NO_RESULTS_AT_ALL
  • Facebook.com: NO_SEARCH_FIELD
  • Google.com.hk: SOURCES_NOT_PARSABLE
  • Google.com.sa: SOURCES_NOT_PARSABLE
  • Google.com.tr: SOURCES_NOT_PARSABLE
  • Google.ru: SOURCES_NOT_PARSABLE
  • Imdb.com: NO_COUNTERS
  • Imgur.com: NO_COUNTERS
  • Instagram.com: NO_SEARCH_FIELD
  • Jd.com: NO_RESULTS_AT_ALL
  • Linkedin.com: SOURCES_NOT_PARSABLE
  • Live.com: NO_SEARCH_FIELD
  • Login.tmall.com: NO_SEARCH_FIELD
  • Mail.ru: NO_COUNTERS
  • Microsoft.com: NO_COUNTERS
  • Microsoftonline.com: NO_SEARCH_FIELD
  • Naver.com: SOURCES_NOT_PARSABLE
  • Netflix.com: NO_SEARCH_FIELD
  • Nicovideo.jp: NO_RESULTS_AT_ALL
  • Nytimes.com: SOURCES_NOT_PARSABLE
  • Office.com: NO_SEARCH_FIELD
  • Ok.ru: NO_SEARCH_FIELD
  • Pages.tmall.com: SOURCES_NOT_PARSABLE
  • Paypal.com: NO_SEARCH_FIELD
  • Pinterest.com: NO_SEARCH_FIELD
  • Pornhub.com: PORN_SITE
  • Qq.com: NO_RESULTS_AT_ALL
  • Reddit.com: NO_COUNTERS
  • Sina.com.cn: NO_COUNTERS
  • So.com: SITE_TIMED_OUT
  • Sohu.com: NO_SEARCH_FIELD
  • Soso.com: ENCODING_PROBLEM
  • T.co: NO_SEARCH_FIELD
  • Taobao.com: SOURCES_NOT_PARSABLE
  • Tmall.com: NO_COUNTERS
  • Tumblr.com: NO_COUNTERS
  • Twitch.tv: NO_COUNTERS
  • Twitter.com: NO_SEARCH_FIELD
  • Vk.com: NO_SEARCH_FIELD
  • Weibo.com: NO_SEARCH_FIELD
  • Wikia.com: NO_RESULTS_AT_ALL
  • Xvideos.com: PORN_SITE
  • Yahoo.co.jp: SOURCES_NOT_PARSABLE
  • Yandex.ru: NO_COUNTERS

通过上面这个清单,我们看到 360 的so.com 竟然是因为搜索超时导致的,soso.com和sogou.com等搜索引擎均未参与TIOBE指数的计算当中。

编程语言

被选入TIOBE指数的编程语言必须满足3个必备条件:

1 它在维基百科有属于自己的词条,且维基百科清晰地陈述了它是一门编程语言,这就是为什么(Ruby on) Rails, Excel, Android, Boost, Cocoa, ASP and AJAX没有被选进TIOBE指数排行中的原因。 2 它应该具有图灵完整性(http://en.wikipedia.org/wiki/Turing_completeness),因此 XML 和 HTML 不能被计入其中,这个约束对数据查询语言SQL也是有效的,例如你无法使用SQL写出一个无限循环。换一方面来说,由SQL扩展出的 PL/SQL 和 Transact-SQL 属于编程语言的范畴。 3 它对于格式为+"<language> programming" 的关键词必须至少命中5000次

那些相似的编程语言会被分配到一起,但目前为止,我们只会计算那些分组到一起的中搜索命中次数最高的那个,后期我们将考虑使用这些被分组在一起的编程语言的数学并集作为它们的搜索命中次数。

下面是多个编程语言被分成一个组的规则条件:

1 如果语言有其自己的维基百科条目,则不会与其他语言分组。

2 如果语言A自动重定向到另一个维基百科条目B,则A将与B一起分组。

3 如果语言A没有单独的维基百科条目,但作为另一个维基百科条目B的一部分提及,则A将与B一起分组。

我们使用了两种机制去过滤掉编程语言误判。首先是编程语言的 confidence (自信度),默认值是100%,但对于一些困难的搜索查询,如“basic programming”,自信度会更低。除了自信度之外,例外和强制的附加条件也会被用于清楚误判。

下表包含了所有跟踪的编程语言,包括其分组,自信度和例外情况。

  • (Visual) FoxPro: FoxPro, Fox Pro, VFP
  • 4th Dimension/4D: 4D, 4th Dimension
  • ABAP
  • ABC: ABC (exceptions: -tv -channel)
  • ActionScript: ActionScript, AS1, AS2, AS3
  • Ada
  • Agilent VEE
  • Algol
  • Alice: Alice (confidence: 90%)
  • Angelscript
  • Apex
  • APL
  • Applescript
  • Arc
  • AspectJ
  • Assembly language: Assembly, Assembly language
  • ATLAS
  • AutoIt
  • AutoLISP
  • Automator
  • Avenue
  • Awk: Awk, Mawk, Gawk, Nawk
  • Bash
  • Basic: Basic (confidence: 0%)
  • BBC BASIC
  • bc
  • BCPL
  • BETA: BETA (confidence: 10%)
  • BlitzMax: BlitzMax, BlitzBasic, Blitz Basic
  • Boo
  • Bourne shell: Bourne shell, sh
  • C shell: Csh, C shell (confidence: 90%)
  • C#: C#, C-Sharp, C Sharp, CSharp, CSharp.NET, C#.NET
  • C++
  • C++/CLI
  • C-Omega
  • C: C (exceptions: -"Objective-C")
  • Caml
  • Ceylon
  • CFML: CFML, ColdFusion
  • cg: cg (confidence: 80%, exceptions: -"computer game" -"computer graphics")
  • Ch: Ch (exceptions: +ChScite)
  • CHILL
  • CIL
  • CL (OS/400): CL (exceptions: -Lisp), CLLE
  • Clarion
  • Clean: Clean (confidence: 43%)
  • Clipper
  • Clojure: Clojure, ClojureScript

。。。(完整清单:https://www.tiobe.com/tiobe-index/programming-languages-definition/)

比重

编程语言的比重是通过主流搜索引擎对于格式为+"<language> programming"的搜索命中次数来计算的。所有编程语言对于每个搜索引擎均已经规范化,换句话说,它们加在一起就是100%。我们定义"hits(SE)" 为所有编程语言对于搜索引擎SE的命中次数之和,定义"hits(PL,SE)"为所有编程语言PL对于搜索引擎SE的命中次数。可能的误判以及在"hits(PL,SE)"中被过滤掉,这是通过人工的方式来定义每个查询的自信度因子。一个查询如"Basic programming"也会返回如“Improve your basic programming skills in Java”的页面,对于每个搜索引擎的前100页结果会被考虑进可能的误判当中,这也会被用于计算此次搜索的自信度因子,如果这个因子是90%,那么90%将会被用于计算"hits(PL,SE)"。

下面是比重的计算公式:

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

n 是搜索引擎的使用次数。关于改进TIOBE指数计算的构思或想法将致以感谢(tpci@tiobe.com)

猿哥总结

李开复曾经说过“只有掌握趋势的人才能引领时代的潮流”。了解过股票同学应该知道道琼斯指数、沪指、深证成指等指数的重要性,它们直接反应了市场的总体行情,对于股民了解市场总体行情具有直观的参考性,从而方便我们理财投资。换而言之,对于编程人员来说,TIOBE指数也是十分重要的,它直接反应了编程语言的未来趋势,对于编程决策具有很强的指导意义。

高效开发者

原创文章,转载请联系微信:www-top01-org,转载时请在突出位置保留“转载自微信公众号:PHP技术大全 字样”。

本文分享自微信公众号 - PHP技术大全(phpgod),作者:猿哥

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 10 分钟掌握 MySQL 的索引查询优化技巧

    本文的内容是总结一些MySQL的常见使用技巧,以供没有DBA的团队参考。以下内容以MySQL5.5为准,如无特殊说明,存储引擎以InnoDB为准。

    猿哥
  • 免费内网穿透|服务端微信异步通知的调试

    $ sudo apt install software-properties-common

    猿哥
  • PHPer友好|可能是最简单易懂的机器学习入门资料

    前段时间笔者推送了一条 google 官方机器学习速成课程的链接(https://developers.google.com/machine-learn...

    猿哥
  • 解决云服务中的多对多分组问题 - 二分图的社区发现算法

    本文介绍一种高效的二分图社区发现算法biLouvain,以云服务中的多对多关系的分组问题为例,分析这类算法的使用方法和效果。

    王录华
  • 【一文看尽200篇干货】2018最新机器学习、NLP、Python教程汇总!

    【新智元导读】本文收集并详细筛选出了一系列机器学习、自然语言处理、Python及数学基础知识的相关资源和教程,数目多达200种!来源既包括斯坦福、MIT等名校,...

    新智元
  • Python | &quot;整理一些模块,不用也能拿来吹&quot;

    2、刚好今天有读者向我提问的时候,看到有这么道题,写出你使用过的模块,并简单描述一下。

    LogicPanda
  • 提高GitHub访问速度及其他DNS优化

    試毅-思伟
  • 一张图告诉你 Elon Musk 所有的故事

    时见疏星
  • python 字典(Dictionary) items()方法

    Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。

    于小勇
  • 11.22 访问日志不记录静态文件

    访问日志不记录指定类型的文件目录概要 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 把虚拟主机配置文件改成如下: <VirtualHo...

    运维小白

扫码关注云+社区

领取腾讯云代金券