Awhile back, Tim Buntel called for some real resons why people wanted to see interfaces added to ColdFusion. At CFUNITED the debate raged on… I was feeling relatively smart until I stumbled into this conversation between developers Max Porges and Barney Boisvert on the patio after the conference. I had been talking with the others but I realized when the conversation leaped 40,000 feet above my head it was time to shut up and press the record button. I managed to capture a riveting 20min debate on “how OO Coldfusion should really strive to be.” Also present were developers: Jared Rypka-Hauer, Paul Kenny, Simeon Bateman and two other guys whose names I’ve since forgotten (need that CFUNITED yearbook). If you can ignore the smooth jazz in the background and the occasional city bus that tramples the audio, it’s actually a very good debate. Feel free to chime in here and contribute your thoughts. Total Time= 18:46min. Listen to the audio here.
WOW! That was fast. I so have to get me one of those iPod recorders. I had no idea the audio capture was actually that good.
I’m really glad you got it, and I look forward to listening to it a little later in the day.
Laterz!
Nice commentry!
Some very interesting points made on all sides.
I like the point made about the fact that you can write interfaces with CFCs, but you can’t check them at compile time – they will only be checked at run time. Its a fair point to make, and a sacrifice you need to consider if you want to use interfaces with CFCs (I think anyway).
Nice one, on the capture ;o)
I need to remember not to talk when being recorded I just sound drunk. :)
One of the two other guys was jim collins and thats all lower case please :). Glad you captured the conversation and yes it was awesome although I was a mere instagator.
Sean,
Great capture… it’s a shame you didn’t catch the next five minutes where Paul Kenney and I continued the discussion on interfaces and binary compatibility. I drove home the point that above all, interfaces facilitate maintenance and reliability in a multi-implementation environment (which is really the point why they are there in OO languages).
I still feel that as a community, we really need to stop pushing OO using CFCs to developers. Even the first time I looked at the CFC spec prior to CFMX 6, there was a "bad smell" there that I didn’t like for OO, similar to the smell I got from early reports that .NET would make VB and COBOL object oriented (ugh)…
As I promised at the conference, I’ll be dropping some OO/layering knowledge on maximporges.com in the coming weeks. One of my articles is specifically going to focus on why I dislike CFCs for OO, and why I feel CF developers that get that far in to OO really need to take a serious look at Java.
– max
I wish they all took turns talking :-) Nonetheless, great capture… and your site name is awesome.. LOL. I just happened to catch it on fullasagoog.
Mike
Maxim, just for the record, COBOL was the first programming language to have an ANSI standard that included OO features, many, many years ago…
I was offered the lead role on the team that created OO-COBOL. I turned it down because I felt I’d done enough work on COBOL compilers by that point (and partly because I thought OO-COBOL was a silly idea!).
As for switching to Java for OO stuff, I disagree with you pretty fundamentally on that one. Java is too low-level and the type system is too restrictive for rapid development. I’ve worked with a lot (a LOT!) of programming languages over the years and the dynamic, late-binding ones kick the ass of all the others for speed of application development.
If you’re not too worried about speed of initial development (or effectiveness of maintenance) then I agree that Java is a good choice, particularly for integration with CF.
Sean,
Interesting comments on your history with COBOL and its object orientation. I’m glad we see eye to eye on the potential for silliness of OO in COBOL…
As for the CFC/Java thing, we may have to agree to disagree here. I’ve built OO-like systems with CFCs, and they seem clunkier than their Java equivalents. I also built a layered system using CFCs with a few attendees at CFUNITED, and it was quite painful compared to the same thing with Java.
Could it be that the pain stemmed from the possibility that CFCs aren’t supposed to be used in that fashion? Assuming so, it would seem to fly in the face of best practices from my experience.
I’d also disagree with your comments about effectiveness of maintenance and speed of development. If you do it right, Java development is as rapid as CFC development. And as for maintenance, programming to an API of public interfaces and using delegates appropriately has given me all the maintenance freedom and flexibility I’ve needed. I’ll be covering these in detail on my blog, and I’ll be interested in your thoughts.
A key point to note is that I would never be saying these things about Java if we weren’t using the Spring framework, which makes Java a hell of a lot easier/faster to use than without. In fact, I deliberately held off from migrating our shop from CFCs to Java/J2EE until I found a rapid framework to use Java within; Spring was the framework I was waiting for.
Who knows… there is a ton of recent interest in loose, late languages again (particularly Ruby in the Java community). I like to consider myself open minded and a student of experience, so while I’m happy with the present state of affairs, I may be eating these words in the years to come! :)
– max
If Spring makes that much difference to the speed of development in Java then it must be an impressive framework. I need to learn about it.
It seems we agree that "raw" Java cannot compete with ColdFusion for speed of development tho’?
As for CFCs feeling clunky, no, I don’t find that and I’ve worked in a lot of languages over the years. But that’s based on writing idiomatic CF code. If you try to force a non-idiomatic style, perhaps a pure Java style, onto the language, it is going to feel ‘wrong’…
IBM Developerworks just published an introduction to Swing, part one of a three-part series:
http://www-128.ibm.com/developerworks/web/library/wa-spring1/index.html?ca=drs-tp2605
Sean – totally agree on the clunky thing. As I alluded, it’s quite possible that I’m squeezing a square peg in a round hole! As for Spring, it completely changes thhe J2EE paradigm – it’s like getting to use POJOs *and* get the benefit of a J2EE container all at once. They also have many, many convenience libraries (for "low-level" feeling Java operations like straight JDBC), and an open mindset that allows their libraries to be used with or without Spring, which is a pretty good philosophy if you ask me.
For the benefit of all of you, Jim typed "Swing" (the Java desktop widget library) in the previous comment, but the articles linked are for "Spring" (the IoC container), which is what I was referring to. I’ve made that same typo many times myself…
More info on Spring is also available at http://www.springframework.org (including their generally excellent documentation in manual and JavaDoc format).
– max
CFC’s are great. Frameworks are ok so long as they don’t take more time building the framework than the app! Serious OO is really not for ColdFusion. One word: RAD (Rapid Application Development)