ColdFusion has evolved significantly since last a writeup was added to this node. ColdFusion MX (that is, version 6.1 as of this writing) was released in 2003, and (being professionally employed writing ColdFusion for the past 7 years) here's my moderately informed opinion.
With version 6, Macromedia did a complete rewrite of the ColdFusion system, making it run entirely within a Java runtime environment. On Windows servers running IIS, this meant generally packaging an integrated JRE (conveniently enough, since Macromedia also bought up jrun when they swallowed Allaire.) However, the farther implication is that with version 6 you can make ColdFusion run on anything that can run Java. Windows, Linux, and Sun are preconfigured, but I could set it up on Mac OSX if I felt like it.
There's no denying that earlier versions of ColdFusion were dreadfully slow and not particularly reliable. ColdFusion 5 installations were regularly set up to periodically restart in order to get around memory leaks and other technical atrocities. Beyond straight downtime, handling requests was slower than dog shit climbing uphill on a cold day. Particularly if you didn't reboot the server occasionally.
It's actually sort of sad that a transition from a program written largely in C to one written in Java and compiled to bytecode on the target server resulted in a dramatic performance increase. But, what's to complain about? It's faster, nontheless. Not actually being a Java programmer, I can't tell you exactly why, but I'm sure some clever person out there could explain it. I program in CFML. And, while I won't quote statistics, from everyday work on my development server, the feel of things runs close to twice as fast, at least once you let the system compile your templates.
Oh, I didn't mention that, did I? It's not just the application server that is written in Java. ColdFusion 6 takes your good old CFML templates and translates them (on the fly) to Java code, and then compiles it down to bytecode right along with the rest of the application server. No "compile" button need be hit, it just checks for new files and eats up your code automatically. It does tend to bog down the first execution of a new template, but afterwards, your code runs pretty much as fast as the app server itself.
That, and no more crashy. Uptime on my dev server is going on something like months (which I know is not really worth bragging about) but is a hell of a lot better than CF 5 ever did.
Now, as for the merits of the language itself:
ColdFusion is, in fact a very easy-to-learn web application development platform. However, like the game othello, it takes a moment to learn, but a lifetime to master. Continuity's opinion notwithstanding, you can, in fact, do some very complicated and graceful work in ColdFusion, and be very successful at it. You can also hire hire a bunch of schmoes from the local community college, people with no skill or experience, and they will produce a mediocre work.
Like Maslow's Hierarchy of Needs, the more basic requirements we fulfill allows us to focus on loftier, more abstract and pleasurable goals. I tend to believe that working in a high-level intepreted markup language like CFML frees me from a great deal of the technical baggage which otherwise would consume all of my time. I can spend that time designing more useful interfaces, more creative information designs, more flexible database schemas.
To paraphrase Jakob Nielsen
, how helpful can a program be if the users don't want to touch it? Despite its shortcomings, I have found there is very little that I cannot do in ColdFusion.
Admittedly, I am painted into a corner by the forces of economics. I have to pay my bills, thus I work with what I know, and have no time to learn another language. I'm stuck with ColdFusion until I effect a major career change. But, necessity is the mother of invention, and it's really not that hard to invent with ColdFusion. Don't write it off, despite what some language snobs might tell you.