TIOBE 编程社区指数定义
由于关于 TIOBE 指数组装方式的问题很多,因此设置了专门的页面进行定义。基本上,计算归结为计算搜索查询的点击次数
+"<language> programming"
在接下来的几个部分中,将说明哪些搜索引擎有资格、哪些编程语言有资格以及如何准确计算评级。
搜索引擎
有 25 个搜索引擎用于计算 TIOBE 指数。选定的搜索引擎是 Similarweb 排名最高 25 个网站,满足以下条件
- 网站的入口页面包含搜索功能
- 查询网站的结果包含页面命中数的指示
- 结果应以 HTML 形式提供,其中带有明确的标记
- 使用特殊字符的语言中的搜索引擎应正确编码
- 搜索引擎至少应针对 1 个查询返回 1 个命中项
- 查询网站的结果不应该包含太多异常值
- 色情网站被排除在外
根据这些标准,以下搜索引擎有资格
- Google.com: 7.69%
- Wikipedia.org: 7.38%
- Amazon.com: 7.08%
- Bing.com: 6.77%
- Microsoft.com: 6.46%
- Sharepoint.com: 6.15%
- Ebay.com: 5.85%
- Amazon.co.jp: 5.54%
- Rakuten.co.jp: 5.23%
- Msn.com: 4.92%
- Google.de: 4.62%
- Google.co.jp: 4.31%
- Amazon.de: 4.00%
- Amazon.in: 3.69%
- Walmart.com: 3.38%
- Amazon.co.uk: 3.08%
- Google.com.br: 2.77%
- Google.it: 2.46%
- Google.co.uk: 2.15%
- Google.fr: 1.85%
- Amazon.ca: 1.54%
- Ebay.co.uk: 1.23%
- Amazon.it: 0.92%
- Google.ca: 0.62%
- Google.es: 0.31%
以下搜索引擎因指出的原因而没有资格
- Baidu.com: SOURCES_NOT_PARSABLE
- Bbc.co.uk: NO_COUNTERS
- Bilibili.com: NO_COUNTERS
- Canva.com: NO_SEARCH_FIELD
- Chatgpt.com: NO_RESULTS_AT_ALL
- Duckduckgo.com: NO_COUNTERS
- Dzen.ru: NO_COUNTERS
- Facebook.com: NO_SEARCH_FIELD
- Fandom.com: NO_RESULTS_AT_ALL
- Globo.com: NO_COUNTERS
- Instagram.com: NO_SEARCH_FIELD
- Kwai-video.com: NO_RESULTS_AT_ALL
- Lazlogistics.ph: NO_WEBSITE
- Linkedin.com: NO_COUNTERS
- Live.com: NO_SEARCH_FIELD
- Mail.ru: NO_COUNTERS
- Microsoftonline.com: NO_WEBSITE
- Naver.com: NO_COUNTERS
- Netflix.com: NO_SEARCH_FIELD
- News.yahoo.co.jp: SOURCES_NOT_PARSABLE
- Office.com: NO_SEARCH_FIELD
- Ozon.ru: SOURCES_NOT_PARSABLE
- Pemsrv.com: PORN_SITE
- Pinterest.com: NO_SEARCH_FIELD
- Pornhub.com: PORN_SITE
- Quora.com: NO_COUNTERS
- Reddit.com: NO_COUNTERS
- Roblox.com: NO_SEARCH_FIELD
- Samsung.com: NO_RESULTS_AT_ALL
- T.me: NO_SEARCH_FIELD
- Tiktok.com: NO_COUNTERS
- Twitch.tv: NO_COUNTERS
- Vk.com: NO_COUNTERS
- Weather.com: NO_RESULTS_AT_ALL
- Whatsapp.com: NO_SEARCH_FIELD
- X.com: NO_SEARCH_FIELD
- Xhamster.com: PORN_SITE
- Xhamster.desi: PORN_SITE
- Xnxx.com: PORN_SITE
- Xvideos.com: PORN_SITE
- Yahoo.co.jp: SOURCES_NOT_PARSABLE
- Yahoo.com: SOURCES_NOT_PARSABLE
- Yandex.ru: SOURCES_NOT_PARSABLE
- Youtube.com: NO_COUNTERS
编程语言
本节阐明了对于 TIOBE 索引而言什么算作编程语言。应满足 3 个要求
- 该语言应在Wikipedia上拥有自己的条目,并且 Wikipedia 应明确指出它涉及的编程语言。因此,(Ruby on)Rails、Excel、Android、Boost、Cocoa、ASP和 AJAX 未被认为是索引的编程语言。
- 编程语言应是图灵完备。因此,HTML和 XML 不被视为编程语言。
- 该编程语言对于 Google 中的“+”<language> 编程”应至少有 5,000 次点击。
非常相似的编程语言被归为一组。在计算分组评级时,目前采用单个语言的最大点击量。未来,我们将做得更好,采用集合论中的所有点击量的并集。
根据以下规则,对归为一组的语言的定义已形式化
- 如果一种语言有自己的 Wikipedia 条目,则它不会与另一种语言归为一组。
- 如果语言 A 自动重定向到其他 Wikipedia 条目 B,则 A 将与 B 归为一组。
- 如果语言 A 没有独立的 Wikipedia 条目,但作为另一个 Wikipedia 条目 B 的一部分被提及,则 A 将与 B 归为一组。
为了过滤出误报,使用了两种机制。首先,为语言定义了置信度。默认情况下,置信度为 100%,但对于一些难以搜索的查询(如“Basic Programming”),置信度会降低。除了置信度之外,有时还使用例外或强制性补充来清除误报。
下表包含所有被跟踪的编程语言,包括分组、置信度和例外情况。
- (Visual) FoxPro: FoxPro、Fox Pro、VFP、VFPA
- 1C:Enterprise script
- 4th Dimension/4D:4D、4th Dimension
- ABAP
- ABC: ABC(例外情况:-tv -channel)
- ActionScript: ActionScript、AS1、AS2、AS3
- Ada
- Agilent VEE
- Algol
- Alice: Alice(置信度:90%)
- Angelscript
- Apex
- APL
- Applescript
- Arc
- AspectJ
- 汇编语言:Assembly、Assembly language
- ATLAS
- AutoHotkey: AutoHotkey、AHK
- AutoIt
- AutoLISP
- Automator
- Avenue
- Awk: Awk、Mawk、Gawk、Nawk
- B4X
- Ballerina
- Bash
- Basic: Basic(置信度:0%)
- BBC BASIC
- bc
- BCPL
- BETA: BETA(置信度:10%)
- BlitzMax: BlitzMax、BlitzBasic、Blitz Basic
- Boo
- Bourne shell: Bourne shell、sh
- Brainfuck
- C shell:Csh、C shell(置信度:90%)
- C#:C#、C-Sharp、C Sharp、CSharp、CSharp.NET、C#.NET
- C++
- C++/CLI
- C-Omega
- C:C(例外情况:-Objective-C)
- Caml
- Carbon
- Ceylon
- CFML: CFML、ColdFusion
- cg: cg(置信度:80%,例外情况:-computer game -computer graphics)
- Ch: Ch(例外情况:+ChScite)
- Chapel: Chapel(例外情况:-christ)
- CHILL
- CIL
- Citrine
- CL (OS/400): CL(例外情况:-Lisp)、CLLE
- Clarion
- Classic Visual Basic: Visual Basic(置信度:50%)、VB(置信度:50%)、VBA、VB6
- Clean: Clean(置信度:43%)
- Clipper
- CLIPS
- Clojure: Clojure、ClojureScript
- CLU
- COBOL
- Cobra
- CoffeeScript
- COMAL
- Common Lisp
- CORAL 66
- Crystal: Crystal(置信度:61%,例外情况:-healing)、crystallang
- cT
- Curl
- D:D(置信度:90%,例外情况:-3-D programming -DTrace)、dlang
- Dart
- DCL
- Delphi/Object Pascal: DwScript、Object Pascal、Delphi、Delphi.NET、Pascal(置信度:95%)
- DiBOL: DBL、Synergy/DE、DIBOL
- Dylan
- E: E(例外情况:+specman)
- ECMAScript
- EGL
- Eiffel
- Elixir
- Elm
- Emacs Lisp: Emacs Lisp、Elisp
- Emerald
- Erlang
- Etoys
- Euphoria
- EXEC
- F #: F#、F-Sharp、FSharp、F Sharp
- Factor
- Falcon
- Fantom
- Felix: Felix(置信度:86%)
- Forth
- Fortran
- Fortress
- FreeBASIC
- Gambas
- GAMS
- GLSL
- GML: GML、GameMaker Language
- GNU Octave
- Go: Go、Golang
- Gosu
- Groovy: Groovy、GPATH、GSQL、Groovy++
- Hack
- Harbour
- Haskell
- Haxe
- Heron
- HPL
- HyperTalk
- Icon: Icon(置信度:90%)
- IDL: IDL(例外情况:-corba -interface)
- Idris
- Inform
- Informix-4GL
- INTERCAL
- Io
- Ioke
- J#
- J: J(置信度:50%)
- JADE
- Java
- JavaFX 脚本
- JavaScript: JavaScript, JS, SSJS
- JScript
- JScript.NET
- Julia: Julia, Julialang, julia-lang
- Korn shell: Korn shell, ksh
- Kotlin
- LabVIEW
- 梯形图逻辑
- Lasso
- Limbo
- Lingo
- Lisp
- LiveCode: Revolution, LiveCode
- Logo: Logo (可信度:90%,例外:-tv)
- LotusScript
- LPC
- Lua: Lua, LuaJIT
- Lustre
- M4
- MAD: MAD(可信度:50%)
- Magic: Magic(可信度:50%)
- Magik
- Malbolge
- MANTIS
- Maple
- MATLAB
- Max/MSP
- MAXScript
- MDX
- MEL
- Mercury
- Miva
- ML
- Modula-2
- Modula-3
- Mojo
- Monkey
- MOO
- Moto
- MQL5: MQL4, MQL5
- MS-DOS 批处理
- MUMPS
- NATURAL
- Nemerle
- NetLogo
- Nim: Nim, Nimrod
- Nix
- NQC
- NSIS
- NXT-G
- Oberon
- Object Rexx: Object Rexx, ooRexx, Open Object Rexx
- Objective-C: Objective-C, objc, obj-c
- OCaml: Objective Caml, OCaml
- Occam
- OpenCL
- OpenEdge ABL: Progress, Progress 4GL, ABL, Advanced Business Language, OpenEdge
- OPL
- Oxygene
- Oz
- Paradox
- Pascal: Pascal(可信度:5%)
- Perl
- PHP
- Pike
- PILOT: PILOT(可信度:50%,例外:-Palm Pilot 编程)
- PL/I: PL/1, PL/I
- PL/SQL
- Pliant
- Pony
- PostScript: PostScript, PS
- POV-Ray
- PowerBasic
- PowerScript
- PowerShell
- Processing: Processing(例外:+sketchbook)
- 非编码技术编程:非编码技术编程,PWCT
- Prolog
- Pure Data: Pure Data, PD
- PureBasic
- Python
- Q
- R: R(可信度:90%,例外:+statistical)
- Racket
- Raku: Perl 6, Raku
- REBOL
- Red: Red(可信度:20%)
- REXX
- Ring
- RPG: RPG(可信度:80%,例外:-role),RPGLE,ILERPG,RPGIV,RPGIII,RPG400,RPGII,RPG4
- Ruby
- Rust: Rust, Rustlang
- S-PLUS: S-PLUS(例外:+statistical)
- S: S(例外:+statistical)
- SAS
- Sather
- Scala
- Scheme: Scheme(例外:-tv -channel)
- Scratch
- sed
- Seed7
- SIGNAL: SIGNAL(可信度:10%)
- Simula
- Simulink
- Slate: Slate(可信度:57%)
- Small Basic
- Smalltalk
- Smarty
- Snap!
- SNOBOL
- Solidity
- SPARK
- SPSS
- SQL
- SQR
- Squeak
- Squirrel
- Standard ML: Standard ML, SML
- Stata
- Structured Text
- Suneido
- SuperCollider: SuperCollider(可信度:80%)
- Swift
- SystemVerilog: SystemVerilog, Verilog
- TACL
- Tcl: Tcl/Tk, Tcl
- tcsh
- Tex
- thinBasic
- TOM: TOM (置信度: 50%)
- Transact-SQL: T-SQL, Transact-SQL, TSQL
- TypeScript: TypeScript, TS
- Uniface
- Vala/Genie: Vala, Genie
- VBScript
- VHDL
- Visual Basic: Visual Basic .NET, VB.NET, Visual Basic.NET, Visual Basic (置信度: 50%), VB (置信度: 50%)
- WebAssembly: WASM, WebAssembly
- WebDNA
- Whitespace
- Wolfram: Mathematica, Wolfram
- X++
- X10
- xBase
- XBase++
- XC
- Xen
- Xojo: REALbasic, Xojo
- XPL
- XQuery
- XSLT
- Xtend
- yacc
- Yorick
- Z shell: Z shell, zsh
- Zig: Zig, zlang
等级
等级的计算方法是,统计最热门的搜索引擎的点击量。使用的搜索查询是
+"<language> programming"
点击量决定了一门语言的等级。统计到的点击量针对列表中的所有语言,对每个搜索引擎进行标准化。换句话说,所有语言的得分总和为 100%。我们将“点击量(SE)”定义为搜索引擎 SE 中所有语言点击量的总和,将“点击量(PL,SE)”定义为搜索引擎 SE 中编程语言 PL 的点击量。查询中可能的误报已在“点击量(PL,SE)”的定义中过滤掉。这是通过对每个查询使用手动确定的置信度因子来实现的。类似“基本编程”这样的查询也会返回包含“用 Java 提升您的基本编程技能”的内容。每个搜索引擎的前 100 页都将被检查是否存在可能的误报,然后用它来定义置信度因子。如果此因子为 90%,则“点击量(PL,SE)”中只使用 90% 的点击量。
等级的计算使用以下公式
(hits(PL,SE1)/hits(SE1) + ... + hits(PL,SEn)/hits(SEn))/n
其中 n 是所用搜索引擎的数量。
将感激地接受有关 TIOBE 指数计算改进的人工制品或想法 ([email protected])。