Upload
angel-m-garcia-z
View
91
Download
1
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
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 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
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
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.
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%
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
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.