Вы находитесь на странице: 1из 6

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION

TIOBE SOFTWARE BV

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION


Since there are many questions about the way the TIOBE index is assembled, a special page is devoted to its definition.

PROGRAMMING LANGUAGE
Before discussing how the ratings are calculated, first it needs to be clarified what counts as a programming language for the TIOBE index. There are 2 criteria that should both hold: The language should have an own entry on Wikipedia and it should clearly state that it concerns a programming language. This is the reason why (Ruby on) Rails, Excel, Boost, Cocoa, ASP and AJAX are not considered programming languages for the index. The programming language should be Turing complete. As a consequence, HTML and XML are not considered programming languages. This also holds for data query language SQL. SQL is not a programming language because it is, for instance, impossible to write an infinite loop in it. On the other hand, SQL extensions PL/SQL and Transact-SQL are programming languages.

The following languages are tracked by the TIOBE index:


1) 2) 3) 4) 5) 6) 7) 8) 9) 10) 11) 12) 13) 14) 15) 16) 17)

(Visual) Basic (Visual) FoxPro 4th Dimension/4D ABAP ABC ActionScript Ada Agilent VEE Algol Alice Angelscript Apex APL AppleScript Arc AspectJ Assembly APRIL 2012

18) 19) 20) 21) 22) 23) 24) 25) 26) 27) 28) 29) 30) 31) 32) 33) 34)

ATLAS AutoIt Automator Avenue Awk Bash bc BCPL BETA BlitzMax Boo Bourne Shell C C Shell C# C++ C++/CLI

35) 36) 37) 38) 39) 40) 41) 42) 43) 44) 45) 46) 47) 48) 49) 50) 51)

Caml CFML cg Ch CHILL CIL CL (OS/400) Clarion Clean Clipper Clojure CLU COBOL Cobra COMAL C-Omega cT

PAGE 1 OF 6

APRIL 2012

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION


52) 53) 54) 55) 56) 57) 58) 59) 60) 61) 62) 63) 64) 65) 66) 67) 68) 69) 70) 71) 72) 73) 74) 75) 76) 77) 78) 79) 80) 81) 82) 83) 84) 85) 86) 87) 88) 89) 90)

TIOBE SOFTWARE BV

Curl D Dart DCL Delphi/Object Pascal DiBOL Dylan E EGL Eiffel Erlang Etoys Euphoria EXEC F# Factor Falcon Fantom Felix Forth Fortran Fortress Gambas Go Gosu Groovy Haskell haXe Heron HPL HyperTalk Icon IDL Inform Informix-4GL INTERCAL Io Ioke J APRIL 2012

91) 92) 93) 94) 95) 96) 97) 98) 99) 100) 101) 102) 103) 104) 105) 106) 107) 108) 109) 110) 111) 112) 113) 114) 115) 116) 117) 118) 119) 120) 121) 122) 123) 124) 125) 126) 127) 128) 129)

J# JADE Java Java FX Script JavaScript JScript JScript.NET Korn Shell LabVIEW LabWindows/CVI Ladder Logic Lasso Limbo Lingo Lisp Logo LotusScript LPC Lua Lustre M4 MAD Magic Magik Malbolge MANTIS Maple Mathematica MATLAB Max/MSP MAXScript MEL Mercury Miva ML Modula-2 Modula-3 Monkey MOO

130) 131) 132) 133) 134) 135) 136) 137) 138) 139) 140) 141) 142) 143) 144) 145) 146) 147) 148) 149) 150) 151) 152) 153) 154) 155) 156) 157) 158) 159) 160) 161) 162) 163) 164) 165) 166) 167) 168)

Moto MS-DOS Batch MUMPS NATURAL Nemerle NQC NSIS NXT-G Oberon Object Rexx Objective-C OCaml Occam OpenCL OpenEdge ABL OPL Oz Paradox Pascal Perl PHP Pike PILOT PL/I PL/SQL Pliant PostScript POV-Ray PowerBasic PowerScript PowerShell Processing Prolog Pure Data Python Q R Racket REALBasic

PAGE 2 OF 6

APRIL 2012

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION


169) 170) 171) 172) 173) 174) 175) 176) 177) 178) 179) 180) 181) 182) 183) 184) 185)

TIOBE SOFTWARE BV

REBOL Revolution REXX RPG (OS/400) Ruby Rust S SAS Sather Scala Scheme Scratch sed Seed7 SIGNAL Simula Simulink

186) 187) 188) 189) 190) 191) 192) 193) 194) 195) 196) 197) 198) 199) 200) 201) 202)

Slate Smalltalk Smarty SPARK S-PLUS SPSS SQR Squeak Squirrel Standard ML Suneido SuperCollider TACL Tcl Tex thinBasic TOM

203) 204) 205) 206) 207) 208) 209) 210) 211) 212) 213) 214) 215) 216) 217) 218)

Transact-SQL Vala/Genie VBScript Verilog VHDL Visual Basic .NET Whitespace X10 xBase XBase++ Xen XPL XSLT yacc Yorick Z shell

RATINGS
The ratings are calculated by counting hits of the most popular search engines. The search query that is used is +"<language> programming" This search query is executed for the top 9 websites of Alexa that meet the following conditions:

The entry page of the site contains a search facility The result of querying the site contains an indication of the number of page hits

Based on these criteria currently the following search engines are used:

Google: 30% Blogger: 30% Wikipedia: 15% YouTube: 9% Baidu: 6% Yahoo!: 3% Bing: 3% Amazon: 3%

The number of hits determines the ratings of a language. The counted hits are normalized for each search engine for the first 50 languages. In other words, the first 50 languages together have a score of 100%. Let's define "hits50(SE)" as the sum of the number of hits for the first 50 languages for search engine SE and "hits(PL,SE)" as the number of hits for programming language PL for search engine SE. Possible false APRIL 2012

PAGE 3 OF 6

APRIL 2012

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION

TIOBE SOFTWARE BV

positives for a query are already filtered out in the definition of "hits(PL,SE)". This is done by using a manually determined confidence factor per query. A query such as "Basic programming" also returns pages that contain "Improve your basic programming skills in Java". The first 100 pages per search engine are checked for possible false positives and this is used to define the confidence factor. If this factor is 90%, then only 90% of the hits are used for "hits (PL, SE)". An overview of the confidence factor can be found in the groupings table below. The ratings are calculated with the following formula: ((hits (PL, SE1)/hits50 (SE1) + ... + hits (PL, SEn)/hits50 (SEn))/n Where n is the number of search engines used.

STATUS
Besides the rating of programming languages, there is also a status indicated in the TIOBE chart. Programming languages that have status "A" are considered to be mainstream languages. Status "A-" and "A-" indicate that a programming language is between status "A" and "B". If a programming language has a rating that is higher than 0.7% (yes, this number is arguable but we had to fix it somewhere) for at least 3 months it is rewarded status "A". The first two months the programming language will receive status "A--" and "A-" respectively. The opposite holds for languages that go from status "A" to status "B". So if a language had status "A" 2 months ago, a rating of "0.607%" last month and a rating of "0.687%" now, it will have status "A--". From a supportability point of view, it is strongly advised to stick to mainstream languages for industrial, mission-critical software systems. This is for three reasons:

The pool of skilled engineers is much smaller for non-mainstream languages Tool vendors do not write and maintain tools for non-mainstream languages In general fewer libraries are available for non-mainstream languages

It is important to note that this is only one of many criteria to be used before taking a decision to adopt a language. Other criteria are: suitability for the application domain, reliability of compilers, expression power, performance, and scalability. Hence, Ada can still be used for mission-critical systems although one should consider alternatives. This is what you also see in daily practice: Ada is hardly used for new mission-critical systems anymore. The other way around is also true. Everybody will agree that it is not wise to program missile software in JavaScript.

GROUPINGS AND EXCEPTIONS


Programming languages that are very similar are grouped together. Currently the maximum of the hits of the individual languages is taken into account when calculating the ratings of groupings. In the future we will do a better job and take the union (from mathematical set theory) of all the hits. APRIL 2012

PAGE 4 OF 6

APRIL 2012

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION

TIOBE SOFTWARE BV

The definition of what languages are grouped has been formalized according to the following rules:

If a language has its own Wikipedia entry it will not be grouped with another language If a language A automatically redirects to another Wikipedia entry B, A will be grouped together with B. If a language A has no separate Wikipedia entry but is mentioned as part of another Wikipedia entry B, A will be grouped together with B.

In order to filter out false positives, two mechanisms are used. First of all a confidence is defined for a language. By default the confidence is 100%, but for some difficult search queries such as "Basic Programming", the confidence will be lower. Apart from the confidence, sometimes also exceptions or mandatory additions are used to weed out false positives. The following table contains the definition of all groupings, confidences and exceptions.
NAME ABC ActionScript Alice ATLAS Awk BETA BlitzMax Bourne shell C shell C# CFML cg CH CL (OS/400) Cobra D Delphi/Object Pascal DiBOL F# Go Groovy Icon IDL JavaScript Lisp Logo MAD Objective-C OCaml OpenEdge ABL PILOT 50% 90% CONFIDENCE EXCEPTION/GROUPING Exception: tv, channel Grouping: ActionScript, AS1, AS2, AS3 90% Grouping: ATLAS, C/ATLAS Grouping: awk, gawk, mawk, nawk 70% 90% 80% Grouping: BlitzMax, BlitzBasic, Blitz Basic Grouping: Bourne shell, sh Grouping: csh, C shell Grouping: C#, C-Sharp, C Sharp, CSharp, CSharp.NET, C#.NET Grouping: CFML, ColdFusion Exception: computer game Addition: ChScite Exception: Lisp Grouping: CL, CLLE Exception: interface Exception: 3-D Programming, DTrace Grouping: Delphi, Delphi.NET, Object Pascal Grouping: DBL, DIBOL, Synergy/DE Grouping: F#, F-Sharp, F Sharp, FSharp Grouping: Go (Addition: Google), golang Grouping: Groovy, GPATH, GSQL, Groovy++ Exception: corba, interface Grouping: JavaScript, JS Grouping: Lisp, Elisp 96% 50% Grouping: Objective-C, objc, Obj-C Grouping: Objective Caml, OCaml Grouping: Progress, Progress 4GL, ABL, Advanced Business Language, OpenEdge

90%

APRIL 2012

PAGE 5 OF 6

APRIL 2012

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION

TIOBE SOFTWARE BV

NAME
PL/I Processing Pure Data R Revolution RPG S S-PLUS Scheme Standard ML T-SQL Tcl/Tk Tom (Visual) Basic Visual Basic .NET (Visual) FoxPro Z shell

CONFIDENCE

EXCEPTION/GROUPING
Grouping: PL/1, PL/I Addition: Sketchbook Grouping: Pure Data, PD Addition: statistical Grouping: LiveCode, Revolution Exception: role Grouping: RPG, ILERPG, RPGIV, RPGIII, RPGLE, RPG400, RPGII, RPG4 Addition: statistical Addition: statistical Exception: tv, channel Grouping: Standard ML, SML Grouping: T-SQL, Transact-SQL, TSQL Grouping: Tcl/Tk, Tcl Grouping: Basic, VB Grouping: Visual Basic .NET, Visual Basic.NET, VB.NET Grouping: FoxPro, Fox Pro, VFP Grouping: Z shell, zsh

80%

50% 85%

Artifacts or ideas on improving the calculation of the TIOBE index will be received with gratitude (tpci@tiobe.com).

RELATED LINKS
TIOBE Softwares main site: http://www.tiobe.com/index.php/home Contact to TIOBE Software: http://www.tiobe.com/content/company/Contact.html Privacy Statement: http://www.tiobe.com/content/general/privacy.html Electronic Mail: tpci@tiobe.com

BIBLIOGRAPHY
http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm (April 2012)

2012 TIOBE Software BV. Free copy and redistribution are authorized. Portable Document Format file edited by ngel Moiss Garca Zepeda.

APRIL 2012

PAGE 6 OF 6

APRIL 2012

Вам также может понравиться