I was just perusing through my aggregated blogs and saw that
Joe Rinehart has posted an entry on
TheServerSide.com entitled
IoC, AOP, and Rails-like productivity...in ColdFusion?. In the entry, he notes that "hot" areas of J2EE development such as Spring and Aspect-Oriented Programming (AOP) are available in ColdFusion and, coupled with established frameworks like
Model-Glue, can make the lives of J2EE developers much easier. Further, he notes that since ColdFusion is just a J2EE application itself, existing infrastructure can be leveraged, effectively minimizing or outright eliminating the need to switch to alternative technologies such as
Ruby on Rails.
I am specifically pointing out this entry because it's great to see ColdFusion being promoted on major J2EE-developer sites (as it should be). This sort of "grassroots" marketing is far more effective than glossy magazine ads that most people will likely skip over when reading their trade magazine. Plus, with Joe's YouTube videos, current and prospective developers can see a real-world application of these concepts rather than just hearing and/or reading that concepts like Inversion of Control (IoC) and AOP are merely possible.
Also, RoR has NOTHING to do with the event/listener model that Mach II and Model-Glue run on. In RoR the function and method calls are actually in the code where they make the most sense, rather than yet another XML config file.
The whole idea beind RoR was to have the framework figure most of the boring stuff out for your so you can get back to programming and having fun, not define the structure of your app in yet another language (XML).
People lock onto the ActiveRecord portion of Rails and think that any similar system built in ColdFusion now has Rails-like productivity, but ActiveRecord is a very small part. Stuff like the routes behind pretty URLs, form helpers and built-in Ajax stuff is more of what makes Rails, Rails. The #1 feature is the language behind Rails -- Ruby. Something we'll never duplicate in a CF framework.
But you know what? I can do rapid application development in CF. I can leverage the power of the J2EE server in the process, extending my applications, not only from the creations I come up with but also with most any java app or library I want to drop in place. I can develop my models, views, and controllers in such a way as to keep them loosely coupled, so that I can easily reuse the code in other applications, written in (or not) other CF frameworks, with little concern over dependencies.
Oh, and by the way, the use of an XML file for configuration is ... Well, you go look it up ('Designing Enterprise Applications
with the J2EE Platform, Second Edition'). It's in the java documentation on Sun's website. Something about a 'standard of development within the J2EE platform' or something ...
http://steve-yegge.blogspot.com/2006/03/execution-...
This shouldn't be news to anyone, but CF isn't really a programming language. It's a meta language build on top of a real language. There are some things which will not be possible in it (sort of instantiating some Java objects and using them, something which your average CF Joe is never going to do).
And CF is not Java. Why everyone wants to turn it into Java, I don't know. CF is not for people with doctorate degrees in computer science. If you have one, you're probably not using ColdFusion because you created your own language from scratch and wrote it in machine code. I'm sure that CF application itself has an XML config file just like every other J2EE application, but CF apps don't need it. They are not Java. They are meant to be simple to build and understand for a normal human being. That's who Wheels is for.
And to say that CF "isn't really a programming language...build on top of a real language." Many languages don't utilize themselves for their runtime engines. "not for people with doctorate degrees in computer science"? I don't know what degrees Sean Corfield has, but I do remember something about him being a part of the standards process for C++.
CF is for the web, and always has been. It was the first web application server with the release of 1.0 back in 1995. It's closest competition (DBWeb) failed, was bought by Microsoft, and turned in to ASP. But hey, it's just for hacks, right? (I notice it's still around)
But I want to go back to your claim that CF isn't a "real" programming language. You know, just because some people write crap code and crap apps in a specific language doesn't mean the language itself is crap. But I did decide to lookup a definition of a programming language, and from all of the following, I believe CF still qualifies:
# A computer, human-created language used to write instructions for a computer.
www.satellite-tv-hq.com/telecom-glossary-p.htm
# The Rosetta Stone for computers. Programming language is what translates instructions from humans to computers. Programming languages are generally spelled with an initial cap such as: Basic, C, C++, Cobol, Fortran and Java.
ospa.utdallas.edu/Publications/VIG/13tech.htm
# An artificial language that enables people to instruct machines. Computer commands that form procedures by which software programmers design and implement computer software programs.
www.atlab.com/LIMS/glossaryp-t.html
# A standard which specifies how (sort of) human readable text is run on a computer. Programming languages vary quite a lot in style (eg Procedural - made up of blocks run from each other, Object-Oriented - program made of a set of communicating isolated objects, Functional - everything is a function!, ...), and make some things easier than others. ...
www-xray.ast.cam.ac.uk/~jss/lecture/grad_training/notes/out/glossary/
# The instructions used in creating computer programs. There are a great number of programming languages in existence and no one language is suitable for writing all types of programs. The language a programmer uses to create an application will depend on the desired properties of the program. Some programming languages lend themselves to mathematical and analytical functions while others are better suited for creating business or data processing applications. ...
www.scotsmist.co.uk/glossary_p.html
# A computer tool that allows a programmer to write commands in a format that is more easily understood or remembered by a person, and in such a way that they can be translated into codes that the computer can understand and execute.
platon.lacitec.on.ca/~jlemoe/Cobol/Materiel/Cobol/Manuel/apg/apg.htm
# services provide the basic syntax and semantic definition for use by a software developer to describe the desired application software function. Shell and executive script language services enable the use of operating system commands or utilities rather than a programming language. Shells and executive scripts are typically interpreted rather than compiled, but some operating systems support compilers for executive scripts. ...
www.opengroup.org/architecture/togaf8-doc/arch/p3/trm/tx/tx_sweng.htm
# A series of instructions written by a programmer according to a given set of rules or conventions (syntax). High-level programming languages are independent of the device on which the application (or program) will eventually run; low-level languages are specific to each program or platform. ...
www2.cheshire.gov.uk/SOCIAL/crossservice/Paris/glossary.htm
# A formal language in which computer programs are written. The definition of a particular language consists of both syntax (how the various symbols of the language may be combined) and semantics (the meaning of the language constructs). (Ref: foldoc)
www.rjsystems.nl/en/3500.php
# (computer science) a language designed for programming computers
wordnet.princeton.edu/perl/webwn
# ----A programming language or computer language is a standardized communication technique for expressing instructions to a computer. It is a set of syntactic and semantic rules used to define computer programs. A language enables a programmer to precisely specify what data a computer will act upon, how these data will be stored/transmitted, and precisely what actions to take under various circumstances.
en.wikipedia.org/wiki/Programming_language