Ignorance Rears Its Ugly Head Again
Posted July 13, 2007 at 12:02 PM
Christian Ready just sent this along to me. Apparently, another article has come out that preaches ColdFusion as being one of the programming languages that never took off. This time, coming from SoftwareDeveloper.com in an article titled:
Ghosts in the Machine: 12 Coding Languages That Never Took Off
I don't know what is wrong with people. You'd think the name, Adobe, would at least make people go ahead and do something silly like, I don't know, fact check their articles? Too bad we don't all have editors as awesome as Judith Dinowitz!
Here is the excerpt involving ColdFusion:
ColdFusion (aka "ColdFusion Markup Language" or "CFML") was billed as the next big web development language, in the same veign as ASP.NET or Java Entrprise. ColdFusion was expected to be very popular because of its ease of use and accessibility for beginner programmers.
CFML uses tags reminiscent of HTML and need not be well-formed, which is a big help to newer (or non-meticulous) programmers who frequently forget to close tags or confuse capitalizations.
Given its ease of use and its position as a transitionary language from HTML, it is rather surprising that ColdFusion's popularity has waned so quickly. The ColdFusion killer wasn't due to a failure in marketing the programming language, nor due to any particular language design flaw. Instead, ColdFusion has been slowly displaced by ASP.NET and PHP, which offered a MySQL integrated product in a free open-source form.
Post Comment | Ask Ben | Permalink | Print Page
Newer Post
Don't Let Great Be The Enemy Of Good
Older Post
Dynamic And Unexpected ColdFusion GetCurrentTemplatePath() Behavior
Reader Comments
Time to implement cfrevolt again :)
Email the editor: editor@softwaredeveloper.com
I blogged this too at http://www.codeodor.com/index.cfm/2007/7/13/Spotlighting-12-programming-languages-that-never-quite-made-it/1444
My take was a bit different. Basically, I concluded:
Given that the article defines not making it as not being any one of the languages aside from the dozen or so used by "the vast majority" I don't disagree.
Would you call CF a mainstream language?
@Ben, thanks for the h/t. As Mark Twain said, "A lie can travel halfway around the world while the truth is putting on its shoes." Ah well, such is our fate for being a bunch of dying programmers :)
@Sam, my take on it is that while CF isn't as common a language as JAVA, .NET, etc. you make a fair point. However, the subject of the article is languages that never took off. While I can imagine it's true of the most obscure languages, CF just doesn't seem to fit in this category.
My $0.02.
Maybe we can start an article entitled "Ghosts on the Internet: 12 Tech Webmagazines That Never Took Off". Seriously, the only others I'd even heard of were PowerBuilder and Delphi. I'm pretty sure none of the rest of those languages just celebrated their 12 year of existence and use and are about to release their 8th major version.
Well, news has been more about eyeballs than facts for nearly 5 decades now, so I'm not sure we should expect any different.
@Sam:
I have a major issue with this article. I think it's not just wrong about Coldfusion either.
First, I don't think there's any way you can characterize Coldfusion as an unpopular language.
In programming in general, Coldfusion is in the top 30 in the TIOBE index (http://www.tiobe.com/tpci.htm). That's not scientific, but it does indicate that it's a relatively popular language.
However, my biggest issue is that the guy isn't looking at language within the context of its scope of use. If you consider Coldfusion as a web development platform, rather than just a computer language, it becomes clear that it's easily in the top 10 (probably in the top 5) of all web development platforms. For web development you have PHP, Java, Perl, .Net, ASP, Ruby, Python, C/C++ and Coldfusion (am I missing anything?). That probably covers 95% of all web application development. And Coldfusion is a LARGE chunk of that.
This same issue carries over to Haskell. Sure, as a standard programming language it's not very popular, but within its field, that is, academic programming languages, it's highly popular, and only growing in popularity.
Most of the languages he mentions are either ancient dinosaurs, recent extinctions, or jokes. The joke languages, surely, don't really deserve comparison to actually useful and popular languages like Powerbuilder.
That he would say that a language used EXTENSIVELY in its field (web development) is a ghost language is absurd. It would be tantamount to saying that the 3rd most popular embedded programming language for household devices is a ghost languages. Sure, not that many people develop in it, but it's certainly not dead.
Sorry for ranting. But, I'm just really unimpressed that the writer mixed these concepts so loosely.
@Greg,
True, so much news is about rating and eyeballs, so you never no what someone is gonna say. Next thing you know, someone will come along and say computer science shouldn't be related to mathematics ;)
@Toby,
I totally understand what you are saying. I have had people argue with me, bringing up Fireworks and Dreamweaver in the same context... yeah, of course Fireworks look like a crappy web development tool compared to Dreamweaver... but that is NOT the right context to examine it in.
I don't understand why CF people are so damned defensive about CF. Well, OK, I *do* understand it, but I can't respect it, and it seems a bit silly.
It's just a web-site-building scripting language, when it all boils down. And whilst it has some cute features for newbie programmers, all its bells and whistles are pretty half-baked, and definitely only cover the "easy" 80% of a given solution. And it's created in such a way that often its own architecture seems to simply *get in the way* of anyone wanting or needing to cover that last 20%.
CF *is* a niche language, and really isn't all that popular. And, I think, rightly so.
This does not mean the people that use it aren't "valid" in their career choice, so there's really no need to over-compensate or justify one's self or one's career situations when a magazine article points out what is - basically - the truth.
--
Adam
@Adam,
I am not sure I follow the whole 80/20 thing you are talking about. Would you mind expanding on that?
Toby - you make a VERY good point.
I wonder how much SW development is web development. Then we might better assign popularity on an overall basis.
On the other hand, if it is the 3rd or 4th most used in its niche, and its usage is still dwarfed by the top 2 or 3, did it "take off?" I'm not saying it /is/ dwarfed by those other 2 or 3 (I haven't seen the numbers), just asking hypothetically.
It's a reference to this: http://en.wikipedia.org/wiki/Pareto_principle
Take CFCHART. On the surface, it produces some slick charts. And for a lot of requirements (80%), they're fine. But as soon as the requirement starts getting tricky (20%): it's virtually impossible to get CFCHART to do what you want. So it becomes useless.
CFINPUT and CFUPDATE are kinda useful as long as you want to do *exactly* what Allaire decided you'd want to do. But they very quickly become useless.
CFLDAP does basic string-value querying OK, but - last time I looked - it was not possible to fetch binary data. Simply not possible (maybe this is fixed: I gave up on CFLDAP back in 6.1).
Verity is the same.
Flash forms are the same.
I find that across the board, this pretty much sums up CF. It's real easy to do basic stuff as long as one's not so fussy how it comes out, it's possible to do some mid-range stuff without CF getting too much in the road, but it works against itself once one wants to do complicated stuff. By this point one needs to rely on external systems, and just the very basics of CF to get something done.
A lot of CF's so-called benefits very quickly become mostly redundant once one is a half-decent developer. The things it makes "easy" (say performing a DB query via JDBC) aren't actually that complicated in the first place, so whilst it's nice to have a tag to wrap around one's SQL; it's really not that difficult do do the same thing WITHOUT a tag. And one's got far more scope if one leaves behind CF's helper tags, and just gets on with the coding.
CF is useful for that first 80%. And it's a pain in the arse for the rest of it.
IMO, obviously.
--
Adam
@Adam,
To be completely honest with you, I can't argue for or against that I simply never use those things you mentioned. I don't do much charting (although I should learn more about that), and I never use anything flash-based that is auto-generated.
The exception to your list is the Query. I have programmed in PHP, ASP, Java, ColdFusion, and some other stuff I can't quite recall, all of which call a database, and in my own experience, nothing makes calling a database as easy ColdFusion. Yes, they can all do the same thing, but the fact that you don't need to build a SQL "string" makes creating robust and dynamic SQL statements soo much easier... and they are easier to read (IMO). I would rather look at a CFQuery tag with 10 embedded CFIF statements and AND clauses than 10 string concat statements building a dynamic SQL string. Not to mention how easy it is to do value binding and on-the-fly data casting with CFQueryParam.
So, while I cannot speak to any of the other things, I would say that CFQuery is about the most-bad-ass query environment, and is, I think, one of the biggest selling points of the language (seeing as pretty much all of our apps communicate with a DB).
It all comes back to CF's lack of marketing. I suppose CF has always provided a decent ROI for its owners (Allaire, Macromedia, now Adobe) without the slightest bit of marketing. Why spend money on advertising if you're making money without it?
Because of this, CF is not "in your face" like a Microsoft product would be. And of course PHP was widely adopted because of its free-ness.
I don't anticipate Adobe will spend any money on marketing if it doesn't have to, so CF will continue to be a target for these types of articles for the foreseeable future, no matter how many editors we flame or blog postings we post.
@Ben,
I think that the thing with CFQUERY is that while nice, when you become a more advanced developer your DB interaction functionality is wrapped in higher levels of abstractions and you have little use for it. Like, for example, if you use Transfer or Reactor, you don't have that much use for cfquery. In Java, they have things like Hibernate, which I hear great things about, so the fact that there isn't something as easy as CFQUERY probably doesn't matter that much.
@Adam Cameron
I am a CF developer for 7 years now, and I never came across a web application challenge that could not be done with coldfusion. I am a positive guy by nature, yes, but we always came up with a good solution.
The tight integration of CF with the OS, with Java, http, ftp, wsdl, and so on, makes any task which can be done with i.e. php doable with coldfusion. It just rocks!
Just pass me an example of the 20% of _things that can not be done with cf_ (web app things off course), and I am sure it can be done. I do have to say I'm going for a holiday on sunday... :-)
btw, about the charts: there are 3rd party charting engines which can be used with cf, that can do any task I ever needed, and I have done my bit of creating management information and presentation graphs. It is true that cfchart lacks in some cases, but well, just install an extension, as you would with any other programming language, right?
Hi Thomas: your comment is very true. When one's DB interaction is abstracted from the mainline code (as it always should be!!), the value of the ease of CFQUERY - which I will not argue - is somewhat trivialised. Any benefits CFQUERY has over doing the same thing in Java or PHP or [whatever] start to diminish in real value.
Paul, I'm not going to argue the toss with you over specifics of my examples. I too am a CF developer with almost as much CF experience as you (six years in my case). And equally I have yet to be faced with an issue I cannot resolve with CF. That's not really the point.
CF *rocks* for newbies. It's a liability for seasoned programmers. There's nothing wrong with that: indeed it's Allaire's / Macromedia's / Adobe's entire marketing platform for it. Well the first bit, anyhow.
But hey, it's all right: it does the job; it keeps ME in a job. But it's a pretty ordinary programming language, and it's not at all main stream. The latter is not a cause for concern.
I don't want to get into a backwards and forwards about this on Ben's blog (I'm already guilty of fuelling that sort of thing on another one of his topics). I'm OK with you disagreeing with me.
--
Adam
Perfectly good answer, I'm ok with you too ;-)
The things CF needs to have more, we are building it ourselves (imports, null values, DAO's, etc.). We are trying to be OO, and at the same time, we (the company) can produce great websites at record speed.
I do not think it's only ... oh damn, I just said I'm ok with you too... euh, well, I feel a strong urge to disagree, so ... OK, I'm OK with disagreeing with you too :-/
adam_junk@hotmail.com.
I'm OK with continuing the discussion: just not on Ben's dime. Email me if you like.
--
Adam
Thanks for "ghost link machine!"
"CF *rocks* for newbies. It's a liability for seasoned programmers. "
I don't know what seasoned is, and I've certainly come across some things about CF I'm not fond of, but I wouldn't quite call it a liability. There are plenty CF programmers who have a lot of experience in other languages and still use CF with great results.
The problem with the 80/20 adage is that it applies to every platform, not just CF.
php is great for 80% of the things you might want to do, but really complicated for the other 20%.
The thing is, that 20% isn't the same for CF and php. What falls into the 80 for CF may fall into the 20 for php.
For example, want to create a nice pdf report for users from a html page? Well you're in for a gauntlet. So first you look at pdflib (http://us2.php.net/pdf) which is really quite complicated (read the comments and look at examples) and still doesn't provide a way to render the html. So you google and find http://www.digitaljunkies.ca/dompdf/about.php which is neat, but doesn't support a whole lot of CSS features.
<cfdocument> on the other hand solves this with no hassle. It's not perfect for every problem, but it's certainly more powerful than the current solutions you'll find for php, and it comes with CF, whereas pdflib does not come with the standard distribution of php.
So yeah, CF doesn't solve those 20% of problems without some awkward code, or an external library, but php (and really every other platform out there) has the same problem.
Each platform solves a different set of problems really well in that 80% and thus we should consider the best platform that fits our projects.
This is a fairly nice list of folks using CF, and doesn't appear to be that unimpressive.
http://www.adobe.com/products/coldfusion/proven/
In use at 75 of the Fortune 100 companies
I too must be a newbie as I find CF pretty much does everything I need it to. I'm curious though Adam - you gave a good example of a feature that cfchart doesn't have.
Now if I remember right (and I could be wrong!), both PHP and DotNet have 0 built in charting.
So why is it a liability that CF can do 80% of charting needs out of the box?
You aren't STOPPED from doing the other 20%. You just purchase an external solution, like DotNet/PHP folks do. So if CF stops me from buying extra crap 80% of the time... how is that bad?
In every language - you will have tasks that are simple and tasks that are hard. Period. No language will make it easy to land on the moon. But if CF can get me 80% of the way there before it gets hard - that isn't a liability. It is a (huge) leg up.
What I don't understand about that article is that it's supposed to be about 'languages that never took off'.
Well, it then goes on to list Delphi and Powerbuilder which most certainly _did_ take off and then says that they're on the list because popularity has wained. So, the article changes topic and approach halfway through - very good journalism, that!
As for CF being in there - as you say, check your facts! ColdFusion is only being run by one of the most important technology companies in the world, so obviously it has no future and has never 'taken off' - what version are we on again!!?!?!?
*ahem*
If you talk to someone from New Atlanta, ColdFusion != CFML. ColdFusion is the Adobe product, a web application server; CFML is the tag based language that runs on said server. Last I checked, CFML wasn't in the top 20 languages currently in use. But if you look at how popular an application made in a language is, and consider the popularity based on that, MySpace is written in CFML. Millions of teens and pedophiles spend all day using that CFML application.
Interestingly enough, http://www.tiobe.com/index.htm?tiobe_index shows ColdFusion as 29th, but places Objective-C in 50th which seems to imply some serious miscalculations. The Cocoa framework on OS X is done in ObjC and by extension the majority of OS X applications are written in ObjC too!
Also if you look at the languages that aren't ranked in the top 50:
Maple, Mathematica, XSLT. All three of those are very popular for their respective purposes.
Right, I pointed out the reference to the TIOBE index. I think it's definitely not an objectively reliable measure of a language's popularity or overall use. I simply used it to point out that it's hard to believe that a language ranked in the top 30 would be a "Ghost" language.
It's also fair to say that languages should be judged based on the level of use, and not necessarily on the level of hype. I honestly believe there are more people creating and using CF apps than Ruby apps, but because of the buzz for Ruby, it'd be insane to consider it a ghost language. Coldfusion has always been a target for these "CF is Dead" articles because it has a bit of a stealth status.
I still stand by my basic premise that the author is completely missing the boat when it comes to the context that a language is used in. Clearly there are some languages, like Java, that are used in a lot of different contexts. But for those that aren't, their reach outside of their respective contexts is going to be very small.



