I learned that having a poor reputation among the influential opinionists is not a strong indicator of a language's inherent worth. As a language designed to achieve a specific purpose I think it is equal (or superior) to many options with a better reputation, e.g. PHP, Ruby, Python, Jython, Groovy.
I also learned that a language can be substantially improved with small, incremental improvements. Modern CFML has an JavaScript-inspired syntax, objects, closures, lambda, and countless benefits that come from running directly on the JVM.
Also, they can hammer out a solution to things pretty quickly with it. I don’t know if this is so much the language or the developer, but at a minimum it doesn’t appear to be a hindrance to development.
It's not so much as it's preferred, but rather that it's possible. In fact, because templates and business logic are really just the exact same language with different grammar, a CFML programmer may be passively incentivied to mash the two together because, well, what's the point of splitting it up anyway? If I'm just going to run these ten lines of code to acquire my data and run these ten lines of template to output my data, I might as well put these twenty lines next to each other into one file...at least for now. You can always split it up later if it becomes more complex, or if you want to take "proof of concept" code and refactor it in the house style.
If you want you can structure your programs with as much (or as little) buzzword compliance as you wish. There are numerous frameworks which help you structure your code, including a few that are quite similar to Ruby on Rails. CFML doesn't hold your hands and declare the one true correct way to structure your code properly, which is both a big strength and perhaps its biggest weakness.
Not sure why you'd put PHP and Apache Groovy in that list.
As for Groovy, I meant to say Grails. I don’t really know, I just remember it touted heavily ten years ago. Every time I check out Groovy I am forced to ask what the point is. Looks like dumbed down Java to me. If you’re going to dumb down Java, do it properly and make a language as dumb as CFML. :-)
However, it was nice to just run a semi-complex SQL query inside a cfQuery tag, at least compared to building queries in ASP and the like at the time...so long as you remember that you have to explicitly sanitize your inputs.
An easy way to view the contents of a data structure is nice.
And most importantly: there's much better stuff now than even up-to-date ColdFusion.