January Headline: PHP awarded programming language of 2004
The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the world-wide availability of skilled engineers, courses and third party vendors. The popular search engines Google, MSN, and Yahoo! are used to calculate the ratings. Observe that the TPC index is not about the best programming language or the language in which most lines of code have been written.
The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system.
Position
(Position)
Programming Language
Ratings
(Ratings)
Status
1
C
20.709%
+2.11%
A
2
Java
17.478%
-6.09%
A
3
C++
11.927%
-4.16%
A
4
PHP
9.482%
+3.17%
A
5
(Visual) Basic
7.928%
-0.62%
A
6
Perl
7.461%
-2.14%
A
7
SQL
3.314%
+0.22%
A
8
Python
2.842%
+1.72%
A
9
Delphi/Kylix
2.572%
+1.77%
A
10
C#
2.203%
+0.40%
A
11
JavaScript
1.703%
-0.04%
A
12
SAS
1.412%
+0.63%
A
13
COBOL
1.068%
+0.31%
A
14
ABAP
0.736%
+0.50%
A-
15
IDL
0.726%
+0.31%
A-
16
Pascal
0.641%
+0.04%
B
17
Lisp
0.618%
+0.12%
B
18
Fortran
0.523%
-0.02%
B
19
Ada
0.493%
-0.04%
B
20
RPG
0.429%
+0.09%
B
Legend
Some columns need extra explanation:
(Position). This column indicates the difference in position with respect to last year.
Ratings. The search query '+"<language> programming" -tv' is used to calculate the TPC Index. This query is executed for the regular Google, MSN, and Yahoo! web search and the Google newsgroups for the last 12 months. The formula that is applied is #(normalized Google web hits) + #(normalized MSN web hits) + #(normalized Yahoo! web hits) + #(normalized Google newsgroup hits). The term "normalized" means that the sum of all web hits of the first 50 languages for a query is taken and evenly distributed.
(Ratings). This column indicates the changes in ratings for the last 12 months.
Status. Programming languages that have status "A" are considered to be mainstream languages. Status "A-" and "A--" indicate that a programming language is inbetween status "A" and "B". From a supportability point of view, it is strongly advised to stick to mainstream languages for industrial, mission-critical software systems. If a programming language has a rating that is higher than 0.7% 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".
Sending us artefacts or ideas how to improve the way the TPC index is calculated are very appreciated (tpci@tiobe.com ).
Long term trends
The long term trends for the first 10 programming languages are depicted in the line diagram below.
Other programming languages
On request, the complete top 50 of programming languages is listed below. This overview is published unofficially, because it could be the case that we missed a language. If you have the impression there is a programming language lacking, please notify us at tpci@tiobe.com.
Position
Programming Language
Ratings
21
MATLAB
0.424%
22
Felix
0.422%
23
VB.NET
0.368%
24
Prolog
0.363%
25
Postscript
0.345%
26
Scheme
0.323%
27
ColdFusion
0.271%
28
Awk
0.259%
29
Ruby
0.241%
30
REXX
0.207%
31
Logo
0.194%
32
Forth
0.186%
33
ActionScript
0.180%
34
LabView
0.179%
35
S-Lang
0.173%
36
Tcl/Tk
0.167%
37
Icon
0.159%
38
Bash
0.158%
39
PL/1
0.121%
40
Clipper
0.105%
41
Smalltalk
0.102%
42
Natural
0.100%
43
VHDL
0.094%
44
Objective-C
0.092%
45
VBScript
0.091%
46
ML
0.090%
47
Lingo
0.087%
48
Csh
0.083%
49
Groovy
0.080%
50
Dylan
0.073%
Possible Candidates for the Near Future
Apart from the 50 languages that are mentioned above, we keep track of some other programming languages that have the potential to become part of the top 50 in the near future. The languages are listed in alphabetical order.
ABC, Algol, APL, AppleScript, BCPL, Beta, Bourne shell, Clarion, Clean, Eiffel, Erlang, Euphoria, Haskell, Inform, Io, Lua, Mantis, Maple, Mathematica, Modula-2, Moto, MS-DOS batch, MUMPS, Oberon, Occam, OPL, Oz, Pike, Powerbuilder, Progress, Q, Scala, Slate, Verilog, Visual FoxPro, Whitespace, and XSLT.
January's Newsflash
brought to you by Paul Jansen
In order to minimize fluctuations of the index, www.msn.com is now also used as a search engine to measure programming language popularity. Both C and Java take most advantage of this change, whereas PHP loses a couple of percents.
PHP has earned the title "Programming Language of the Year 2004" with a positive delta of more than 3 percent within 1 year. The launch of PHP version 5 is generally regarded as a further step to maturity. It is expected that PHP will be capable to maintain its top 4 position for a long time. Suprisingly, C is runner up thanks to the addition of MSN.com as an extra data provider. Delphi and Python are third and fourth best respectively.
We asked Bruce Eckel (author of 'Thinking in Java') why Java dropped so heavily this year. His answer can be found at his weblog: http://onthethought.blogspot.com/2004/12/java-slipping.html. Most interesting are the comments of Benjamin Ferrari stating that "[...] one reason for Java slipping could be that it is not treated as a 'language for everything' anymore.".
Finally, FYI. We started monitoring the programming languages AppleScript, BCPL, Oberon, Occam, and Slate. We stopped keeping track of A+, REALBasic, and Rebol.
Frequently Asked Questions
Q: What definition of programming languages has been used?
A: The adopted definition is "any computer language which is either interpreted or compiled and is capable of manipulating data". Based on this definition languages such as HTML and XML are not considered programming languages. ASP is also not because it is regarded a technique that makes use of other languages such as JavaScript and VBScript.
Q: How are dialects of languages grouped?
A: Some languages are grouped together because they are very similar to each other. An example is the language entry Basic which covers Visual Basic, QBasic, Microsoft Basic, etc. VB.NET is an exception to this rule because it differs too much from classic Visual Basic versions. The ratings for a collection of languages is calculated by taking the maximum of all individual entries. BTW, assembly languages are not grouped in the index because they differ so much from each other in our opinion that they are treated separately.