I’ve never taken the TIOBE Programming Community Index overly seriously. It’s not really a gauge of anything overly meaningful. As TIOBE itself explains:
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 number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, and YouTube are used to calculate the ratings.
In other words, the index is more of a hypeometer than anything else, and the results posted each month are more of an item of curiosity than anything substantive.
And this seems to be validated by the following statements which appeared in TIOBE’s May Newsflash:
Richard Bremner pointed out that ColdFusion is not a programming language. It is a framework comparable to JSP and ASP. As a consequence, ColdFusion has been removed from the TIOBE list. All its history has been deleted, which means that the history of the index has changed a bit as well.
I have no idea of who Richard Bremner is, or who made him the authority on the subject, but … he’s either mistaken, ignorant, or some combination thereof. Let’s analyze this brilliance:
The Wikipedia definition of programming language is: an artificial language that can be used to control the behavior of a machine, particularly a computer. Programming languages are defined by syntactic and semantic rules which describe their structure and meaning respectively. Many programming languages have some form of written specification of their syntax and semantics; some are defined only by an official implementation. ColdFusion is indeed used to control the behavior of a machine, it does have syntactic and semantic rules, and it does have a written form.
So, as per Wikipedia, ColdFusion is most definitely a language. But is ColdFusion a framework? Again, let’s use Wikipedia which defines software framework as: a code library that is designed to help software development. The idea is that all of the tedious, low-level details of creating an application are already in a reusable package. For a developer, this means you can spend your time worrying about specific problems related to your application, and not the actual building of the code behind it. For example, a developer can quickly and easily access a database using a framework, rather than having to write all of the code required to accomplish this simple task. Well, ColdFusion does indeed include a massive library of pre-written reusable code, and it does indeed attempt to prevent having to mess with tedious low-level details allowing developers to worry about what’s important for their application.
So, is ColdFusion a framework? I’d have to say not really. For starters, while ColdFusion may include a software framework, that is not a part of the core CFML (ColdFusion Markup Language). Yes, it is possible to use the provided functionality to simplify talking to databases, but that is not required. The libraries and packages included with ColdFusion are much like the standard libraries that come with all languages, from C to Java and more – they are pre-written libraries that are meant to help developers so that not everyone has to reinvent the wheel, but they are not part of the language itself.
Here’s another way to look at it. Imagine you had the ability to write code in plain text files and save them to disk. Then you could run a compiler which would process those files and generate Java bytecode which could be executed inside the Java runtime. Now consider the code you wrote, code that had to adhere to a defined syntax and structure, and which indeed used provided libraries where appropriate, and could then be executed to perform some action. Would you say that you used a language? I’d think so. And that language is called Java. Or, that language may be called CFML, which, just like Java, compiles to Java bytecode for execution. So, to be consistent, TIOBE must include CFML as a language just like Java, or it should remove Java from its index too, just like it did ColdFusion.
The bottom line is that CFML is a language, but ColdFusion is the combination of CFML language plus runtime libraries (what may be called the ColdFusion framework). In other words, if TIOBE truly wanted to improve the quality of their index, they could have simply used “CFML” (or ColdFusion Markup Language) instead of “ColdFusion” as the language name. But writing ColdFusion off as a language altogether demonstrates a remarkable lack of understanding as to what the product and technology actually is.