6
TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV APRIL 2012 PAGE 1 OF 6 APRIL 2012 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) (Visual) Basic 2) (Visual) FoxPro 3) 4th Dimension/4D 4) ABAP 5) ABC 6) ActionScript 7) Ada 8) Agilent VEE 9) Algol 10) Alice 11) Angelscript 12) Apex 13) APL 14) AppleScript 15) Arc 16) AspectJ 17) Assembly 18) ATLAS 19) AutoIt 20) Automator 21) Avenue 22) Awk 23) Bash 24) bc 25) BCPL 26) BETA 27) BlitzMax 28) Boo 29) Bourne Shell 30) C 31) C Shell 32) C# 33) C++ 34) C++/CLI 35) Caml 36) CFML 37) cg 38) Ch 39) CHILL 40) CIL 41) CL (OS/400) 42) Clarion 43) Clean 44) Clipper 45) Clojure 46) CLU 47) COBOL 48) Cobra 49) COMAL 50) C-Omega 51) cT

TIOBE Programming Community Index Definition

Embed Size (px)

DESCRIPTION

Title:TIOBE Programming Community Index Definition || Author: TIOBE Software || Year: 2012 || Since there are many questions about the way the TIOBE index is assembled, a special page is devoted to its definition.

Citation preview

Page 1: TIOBE Programming Community Index Definition

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV

APRIL 2012 PAGE 1 OF 6 APRIL 2012

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) (Visual) Basic

2) (Visual) FoxPro

3) 4th Dimension/4D

4) ABAP

5) ABC

6) ActionScript

7) Ada

8) Agilent VEE

9) Algol

10) Alice

11) Angelscript

12) Apex

13) APL

14) AppleScript

15) Arc

16) AspectJ

17) Assembly

18) ATLAS

19) AutoIt

20) Automator

21) Avenue

22) Awk

23) Bash

24) bc

25) BCPL

26) BETA

27) BlitzMax

28) Boo

29) Bourne Shell

30) C

31) C Shell

32) C#

33) C++

34) C++/CLI

35) Caml

36) CFML

37) cg

38) Ch

39) CHILL

40) CIL

41) CL (OS/400)

42) Clarion

43) Clean

44) Clipper

45) Clojure

46) CLU

47) COBOL

48) Cobra

49) COMAL

50) C-Omega

51) cT

Page 2: TIOBE Programming Community Index Definition

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV

APRIL 2012 PAGE 2 OF 6 APRIL 2012

52) Curl

53) D

54) Dart

55) DCL

56) Delphi/Object Pascal

57) DiBOL

58) Dylan

59) E

60) EGL

61) Eiffel

62) Erlang

63) Etoys

64) Euphoria

65) EXEC

66) F#

67) Factor

68) Falcon

69) Fantom

70) Felix

71) Forth

72) Fortran

73) Fortress

74) Gambas

75) Go

76) Gosu

77) Groovy

78) Haskell

79) haXe

80) Heron

81) HPL

82) HyperTalk

83) Icon

84) IDL

85) Inform

86) Informix-4GL

87) INTERCAL

88) Io

89) Ioke

90) J

91) J#

92) JADE

93) Java

94) Java FX Script

95) JavaScript

96) JScript

97) JScript.NET

98) Korn Shell

99) LabVIEW

100) LabWindows/CVI

101) Ladder Logic

102) Lasso

103) Limbo

104) Lingo

105) Lisp

106) Logo

107) LotusScript

108) LPC

109) Lua

110) Lustre

111) M4

112) MAD

113) Magic

114) Magik

115) Malbolge

116) MANTIS

117) Maple

118) Mathematica

119) MATLAB

120) Max/MSP

121) MAXScript

122) MEL

123) Mercury

124) Miva

125) ML

126) Modula-2

127) Modula-3

128) Monkey

129) MOO

130) Moto

131) MS-DOS Batch

132) MUMPS

133) NATURAL

134) Nemerle

135) NQC

136) NSIS

137) NXT-G

138) Oberon

139) Object Rexx

140) Objective-C

141) OCaml

142) Occam

143) OpenCL

144) OpenEdge ABL

145) OPL

146) Oz

147) Paradox

148) Pascal

149) Perl

150) PHP

151) Pike

152) PILOT

153) PL/I

154) PL/SQL

155) Pliant

156) PostScript

157) POV-Ray

158) PowerBasic

159) PowerScript

160) PowerShell

161) Processing

162) Prolog

163) Pure Data

164) Python

165) Q

166) R

167) Racket

168) REALBasic

Page 3: TIOBE Programming Community Index Definition

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV

APRIL 2012 PAGE 3 OF 6 APRIL 2012

169) REBOL

170) Revolution

171) REXX

172) RPG (OS/400)

173) Ruby

174) Rust

175) S

176) SAS

177) Sather

178) Scala

179) Scheme

180) Scratch

181) sed

182) Seed7

183) SIGNAL

184) Simula

185) Simulink

186) Slate

187) Smalltalk

188) Smarty

189) SPARK

190) S-PLUS

191) SPSS

192) SQR

193) Squeak

194) Squirrel

195) Standard ML

196) Suneido

197) SuperCollider

198) TACL

199) Tcl

200) Tex

201) thinBasic

202) TOM

203) Transact-SQL

204) Vala/Genie

205) VBScript

206) Verilog

207) VHDL

208) Visual Basic .NET

209) Whitespace

210) X10

211) xBase

212) XBase++

213) Xen

214) XPL

215) XSLT

216) yacc

217) Yorick

218) 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

Page 4: TIOBE Programming Community Index Definition

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV

APRIL 2012 PAGE 4 OF 6 APRIL 2012

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.

Page 5: TIOBE Programming Community Index Definition

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV

APRIL 2012 PAGE 5 OF 6 APRIL 2012

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 CONFIDENCE EXCEPTION/GROUPING

ABC

Exception: tv, channel ActionScript

Grouping: ActionScript, AS1, AS2, AS3

Alice 90% ATLAS

Grouping: ATLAS, C/ATLAS

Awk

Grouping: awk, gawk, mawk, nawk BETA 70% BlitzMax

Grouping: BlitzMax, BlitzBasic, Blitz Basic

Bourne shell

Grouping: Bourne shell, sh C shell 90% Grouping: csh, C shell C#

Grouping: C#, C-Sharp, C Sharp, CSharp, CSharp.NET, C#.NET

CFML

Grouping: CFML, ColdFusion cg 80% Exception: computer game CH

Addition: ChScite

CL (OS/400)

Exception: Lisp Grouping: CL, CLLE

Cobra

Exception: interface D 90% Exception: 3-D Programming, DTrace Delphi/Object Pascal

Grouping: Delphi, Delphi.NET, Object Pascal

DiBOL

Grouping: DBL, DIBOL, Synergy/DE F#

Grouping: F#, F-Sharp, F Sharp, FSharp

Go

Grouping: Go (Addition: Google), golang Groovy

Grouping: Groovy, GPATH, GSQL, Groovy++

Icon 90% IDL

Exception: corba, interface

JavaScript

Grouping: JavaScript, JS Lisp

Grouping: Lisp, Elisp

Logo 96% MAD 50% Objective-C

Grouping: Objective-C, objc, Obj-C

OCaml

Grouping: Objective Caml, OCaml

OpenEdge ABL

Grouping: Progress, Progress 4GL, ABL, Advanced Business Language, OpenEdge

PILOT 50%

Page 6: TIOBE Programming Community Index Definition

TIOBE PROGRAMMING COMMUNITY INDEX DEFINITION TIOBE SOFTWARE BV

APRIL 2012 PAGE 6 OF 6 APRIL 2012

NAME CONFIDENCE EXCEPTION/GROUPING

PL/I

Grouping: PL/1, PL/I Processing

Addition: Sketchbook

Pure Data

Grouping: Pure Data, PD R

Addition: statistical

Revolution

Grouping: LiveCode, Revolution

RPG 80% Exception: role Grouping: RPG, ILERPG, RPGIV, RPGIII, RPGLE, RPG400, RPGII, RPG4

S

Addition: statistical S-PLUS

Addition: statistical

Scheme

Exception: tv, channel Standard ML

Grouping: Standard ML, SML

T-SQL

Grouping: T-SQL, Transact-SQL, TSQL Tcl/Tk

Grouping: Tcl/Tk, Tcl

Tom 50% (Visual) Basic 85% Grouping: Basic, VB Visual Basic .NET

Grouping: Visual Basic .NET, Visual Basic.NET, VB.NET

(Visual) FoxPro

Grouping: FoxPro, Fox Pro, VFP Z shell

Grouping: Z shell, zsh

Artifacts or ideas on improving the calculation of the TIOBE index will be received with gratitude

([email protected]).

RELATED LINKS

TIOBE Software’s 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: [email protected]

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 Moisés García Zepeda.