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%
以下搜索引擎因 указанной причине 不符合条件
- Aliexpress.com: 无计数器
- Baidu.com: 来源无法解析
- Bilibili.com: 无计数器
- Canva.com: 无搜索字段
- Chatgpt.com: 完全没有结果
- Cnn.com: 完全没有结果
- Duckduckgo.com: 无计数器
- Dzen.ru: 无计数器
- Facebook.com: 无搜索字段
- Fandom.com: 完全没有结果
- Globo.com: 无计数器
- Instagram.com: 无搜索字段
- Linkedin.com: 无计数器
- Live.com: 无搜索字段
- Mail.ru: 无计数器
- Microsoftonline.com: 非网站
- Naver.com: 无计数器
- Netflix.com: 无搜索字段
- News.yahoo.co.jp: 来源无法解析
- Office.com: 无搜索字段
- Ozon.ru: 来源无法解析
- Pari-match-in.com: 非网站
- Pinterest.com: 无搜索字段
- Pornhub.com: 色情网站
- Quora.com: 无计数器
- Reddit.com: 无计数器
- Samsung.com: 完全没有结果
- Stripchat.com: 色情网站
- T.me: 无搜索字段
- Temu.com: 无计数器
- Tiktok.com: 无计数器
- Twitch.tv: 无计数器
- Vk.com: 无计数器
- Weather.com: 完全没有结果
- Whatsapp.com: 无搜索字段
- X.com: 无搜索字段
- Xhamster.com: 色情网站
- Xnxx.com: 色情网站
- Xvideos.com: 色情网站
- Yahoo.co.jp: 来源无法解析
- Yahoo.com: 来源无法解析
- Yandex.ru: 来源无法解析
- Youtube.com: 无计数器
- Zoom.us: 来源无法解析
编程语言
本节阐明了 TIOBE 指数中哪些内容被视为编程语言。需要满足以下 3 个要求
- 该语言应在 维基百科 上有自己的条目,并且维基百科应明确声明其涉及编程语言。这就是 (Ruby on) Rails、Excel、Android、Boost、Cocoa、ASP 和 AJAX 未被视为该指数的编程语言的原因。
- 编程语言应是 图灵完备 的。因此,HTML 和 XML 不被视为编程语言。
- 编程语言在 Google 中应至少有 5,000 个 +"<language> programming" 的搜索结果。
非常相似的编程语言被归为一组。目前,在计算分组的评分时,会考虑单个语言的命中次数的最大值。未来,我们将做得更好,并采用所有命中次数的并集(来自数学集合论)。
语言分组的定义已根据以下规则正式确定
- 如果一种语言有自己的维基百科条目,则不会与其他语言分组。
- 如果语言 A 自动重定向到另一个维基百科条目 B,则语言 A 将与语言 B 分组在一起。
- 如果语言 A 没有单独的维基百科条目,但在另一个维基百科条目 B 中被提及,则语言 A 将与语言 B 分组在一起。
为了过滤掉误报,使用了两种机制。首先,为语言定义置信度。默认情况下,置信度为 100%,但对于某些难以搜索的查询(如“Basic Programming”),置信度会较低。除了置信度之外,有时还会使用例外或强制添加项来排除误报。
下表包含所有跟踪的编程语言,包括其分组、置信度和例外情况。
- (Visual) FoxPro: FoxPro, Fox Pro, VFP, VFPA
- 1C:企业脚本
- 4th Dimension/4D: 4D, 4th Dimension
- ABAP
- ABC: ABC (例外: -tv -频道)
- 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%, 例外: -"计算机游戏" -"计算机图形")
- Ch: Ch (例外: +ChScite)
- Chapel: Chapel (例外: -基督)
- 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%, 例外: -治疗), crystallang
- cT
- Curl
- D: D (置信度: 90%, 例外: -"3-D 编程" -"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 -接口)
- Idris
- Inform
- Informix-4GL
- INTERCAL
- Io
- Ioke
- J#
- J: J (置信度: 50%)
- JADE
- Java
- JavaFX Script
- JavaScript: JavaScript, JS, SSJS
- JScript
- JScript.NET
- Julia: Julia, Julialang, julia-lang
- Korn shell: Korn shell, ksh
- Kotlin
- LabVIEW
- Ladder Logic
- 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")
- 无代码编程技术: Programming Without Coding Technology, PWCT
- Prolog
- Pure Data: Pure Data, PD
- PureBasic
- Python
- Q
- R: R (置信度: 90%, 例外: +"统计")
- Racket
- Raku: Perl 6, Raku
- REBOL
- Red: Red (置信度: 20%)
- REXX
- Ring
- RPG: RPG (置信度: 80%, 例外: -角色扮演), RPGLE, ILERPG, RPGIV, RPGIII, RPG400, RPGII, RPG4
- RPL
- Ruby
- Rust: Rust, Rustlang
- S-PLUS: S-PLUS (例外: +统计)
- S: S (例外: +统计)
- SAS
- Sather
- Scala
- Scheme: Scheme (例外: -tv -频道)
- 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
- 结构化文本
- 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%。我们将“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)。