http://seancorfield.github.io for newer blog posts." />

An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

To OO or not to OO? What is the question?

May 30, 2009 · 29 Comments

Marc Funaro kicked off quite a heated debate on his blog lately by raging against people pushing object-oriented programing/design and how his attempt to follow their advice nearly led to the collapse of his business. Marc was expressing a common frustration that many of us have heard from people who try to learn OO, especially from people with a long history of procedural programming and/or no computer science background. I've left comments on a few of the blog posts but several people have asked me to go into a bit more depth about my thoughts on this issue (since I'm one of the people sometimes accused of "pushing" OO and insisting it's the "right" way to do things).First off, I'll repeat what I've said many times: there is no One True Way. What works for me might not work for you and even I will solve the same problem different ways at different times in different circumstances. Having said that, for me there is almost no problem today where a purely procedural solution is the right one for me. Years ago, that wasn't the case. Prior to 1992, I hadn't worked with any OO languages but I hadn't done just procedural programming either: I had started learning functional programming techniques around 1982. As part of my university degree, I did a one year work experience assignment at an insurance company, mostly writing IBM 8100 assembler (and some COBOL). I helped design and implement a number of powerful library routines for a hierarchical database system the team was developing, recursive routines that I now recognize as implementing the Visitor design pattern (which I hadn't heard of at the time). What I'd learned from high-level functional programming changed how I wrote the most procedural language available - assembler. In 1992, I started to pick up C++. I picked up Smalltalk in the mid-90's. By 1997, I'd discovered Java. Over the years, I got a little better at writing OO code and started learning about design patterns and OO design. It was a process, a journey, still ongoing. Along the way there were a few lightbulb moments and there was plenty of frustration. Surprised? Knowing what you know of me from my blog and my posts on mailing lists and my talks at conferences, would you expect that I have been through a lot of frustration trying to become a better software developer, a better software architect? I'd be surprised at anyone who had not had such frustrations! Why do we go through this? Why do we push through to the other side to learn - and master - this stuff? IT is an interesting industry because not only does it change - like all other industries - but the pace of change is extremely fast. What we learned last year will be outdated next year, or the year after. If you look at job descriptions for ColdFusion developers, they've changed over the last few years. Most of them want experience with frameworks and CFCs now. As Matt Woodward said in comments on those blog posts, the debate is over - OO won. Years ago. No matter what you think about OO, the industry has moved on and OO is the norm. COBOL, the mainstay of procedural programming, adopted OO features in the early 90's and OO COBOL compilers were available by 1997 with an OO ANSI standard following in 2002. Ada was the first ANSI standardized OO language in 1995. C++ became an ANSI standard in 1998 but work first began on that language in 1979. Simula is considered the first object-oriented language and it appeared in 1967. Smalltalk appeared in the 70's, became a de facto standard in 1980 and an ANSI standard in 1998. All modern languages - all new languages - embrace objects from the start. Many modern languages go beyond OO and incorporate other advanced features - some of those languages would probably seem incomprehensible to traditional, procedural programmers. We shouldn't expect to understand everything but we should expect to continually learn new things so that we remain employable, relevant, interesting. One of the subjects that came up in the various blog conversations was Fusebox. Someone lamented that "even" Fusebox had become OO. Fusebox is a very important illustration for the CF community. Fusebox 4 was built as four large, procedural files and supported both procedural and OO styles of application (yes, a framework written in a procedural style supported OO - even Fusebox 3 supported OO application development!). Fusebox had become hard to maintain and enhance. In order to move forward, I rewrote the core files to be more maintainable - I rebuilt Fusebox as a set of collaborating objects but it was 100% backward compatible. The same procedural apps that ran on Fusebox 4 still ran on Fusebox 5. The same OO apps that ran on Fusebox 4 also still ran on Fusebox 5. Even tho' the core files changed from pure procedural (and unmaintainable) code to fully object-oriented (and, hopefully, more maintainable) code, the range of supported application styles did not change. So, how do I really feel about Marc's post? I sympathize. I know his frustration is real. His background is design and not computer science - of course he finds OO to be extremely hard. I have met only a handful of people who have a natural ability for OO thinking. Sorry, but for everyone else, this is hard shit! There are no short cuts. Some years ago, I gave a talk at CFUnited (I don't even remember which talk now) and a guy came up to me afterward and asked me about learning OO. I told him to go easy on himself and expect this to be a difficult path that would take him a long time to learn. He exploded in anger, accusing me of calling him too stupid to learn OO. For me, that perfectly sums up the unrealistic expectation many people have about learning OO. It is hard. It does take a good long while. Many people give up. Some people push through and eventually reap the benefits of the pain of learning this stuff - and of making lots of mistakes along the way. Don't beat yourself up if OO doesn't make sense. Don't kill yourself trying to master it. I don't "get" numbers but many people do (including my wife). I completely "get" abstract math (my wife does not). She "gets" OO but she can't program (programming languages are too fussy for her tastes). Don't kill your business attempting to achieve some ideal that doesn't work for you. Spend some personal time on it, sure, but don't lose too much sleep over it. Here are the original blog posts:

Tags: architecture · coldfusion · programming

29 responses so far ↓

  • 1 Yves // May 31, 2009 at 2:24 AM

    Great post Sean.

    It's been an interesting discussion in the blogs.

    This is a topic I've really enjoyed reading... I've found that I could certainly relate with the challenges of learning new concepts and also the benefits of challenging one's self to learn those concepts....

  • 2 Jim Pickering // May 31, 2009 at 9:38 AM

    Thanks Sean - I read some of Marc's verbose post - and I appreciate your comments here.

    While it is clear you've been coding for a long time, it isn't always obvious that you've been coding for decades. But it is easy to set a completely unrealistic expectation that one should be able to code an app the "right" way with OO - the way Sean would do it. After all, there is so much pressure in doing things "right" the first time, right? But what really happens is we end up doing it "right" the last time, because along the way we learned and taught ourselves to correct this or that, so that the result is "right;" until we change it again and make it even better. The Devil is in the details. "Right" never happens the first time.

    I appreciate the help and support that you've given to me and to the entire CF Community.
  • 3 Sean Corfield // May 31, 2009 at 11:17 AM

    Thanx Jim. Yes, I first started programming for fun in the mid-70's and my first commercial development gigs were in 1980 (C and COBOL in those early days).

    "the way Sean would do it" has changed dramatically over those three decades!
  • 4 David // Jun 2, 2009 at 7:52 AM

    To paraphrase Bill Belichick - you have to do whats best for your team, what puts you in the best situation to succeed. (We actually have very similar backgrounds Sean only you started about 10 years earlier - I too started with COBOL).

    It doesn't appear that Marc followed Belichicks (sorry, for non-US/Football fans, he's the Head Coach of the Patriots) basic principle. Marc focused on a programming approach rather than the business need at hand.

    His attempt at implementing OO nearly ruined his company? It should never have gotten that far.

    I'm a big proponent of OO and MVC, but to a point. The IT and business world has changed so much since the early 90's, I wonder if our development practices have also? I guess they have - Agile is now mainstream, tools have made developers much more productive. Does OO still hold the same place? Does it still provide the same benefits? I'm not sure it does (this, ironically when my team is doing more OO work than ever!).

    Thanks for posting - good to get your insight on the matter.

    Cheers.
  • 5 Jake Munson // Jun 2, 2009 at 5:29 PM

    "As Matt Woodward said in comments on those blog posts, the debate is over - OO won. Years ago."

    I'd like you to elaborate on that comment some more.

    From my limited experience, there are still a LOT of developers that code procedurally. Is that good? That's another debate. But I really doubt the debate about OO is over. That is why to this day we continue to see blog posts from people like Marc who have not decided that OO is all that it is hyped to be. In fact, I have seen a few influential people argue that there is still a place for procedural coding.
  • 6 Jake Munson // Jun 2, 2009 at 5:38 PM

    As a follow up to my previous comment about procedural programming having a place (and some prominent opponents), check out all of the criticism of OO in it's wikipedia article:
    http://tinyurl.com/o9tqkx

    I don't want to debate whether or not we should be using OO. But I do think some OO fans could be a bit more open minded about it.
  • 7 Sean Corfield // Jun 2, 2009 at 8:12 PM

    @Jake, sure a "LOT of developers" still code in a procedural manner. Many Java developers still try to write procedural code even in a language where everything is (supposed to be) an object. The point is that all mainstream languages have OO features these days and almost all newly created languages are OO as well.

    The wikipedia articles lists a *few* criticisms and some may have been taken out of context I suspect. Stepanov's comment about OO being a "hoax" should be viewed in light of his belief that "STL, at least for me, represents the only way programming is possible" - a rather dogmatic point of view about generic programming being the best way to write code (BTW, I know him personally from my time on the C++ committee and he currently works at Adobe - or did while I was still there).

    I think you're misrepresenting people's views a little with comments like "I have seen a few influential people argue that there is still a place for procedural coding" because the fact is that all the "OO people" I know (for want of a better term) will say that there *is* a place for procedural coding but, in general, *for them* it's a small place and they find OO to have great benefits.

    The point in all this discussion is that several people are accusing the OO proponents of a dogma that simply isn't there. For example, Hal has talked about "all the misinformation" out there and often takes swipes at "gurus" using OO jargon but he hasn't (yet) called out specific posts on blogs or mailing lists with an analysis of how it is wrong. *That* would be useful to everyone!
  • 8 Jake Munson // Jun 2, 2009 at 9:57 PM

    "...the fact is that all the 'OO people' I know (for want of a better term) will say that there *is* a place for procedural coding but, in general, *for them* it's a small place and they find OO to have great benefits."

    I do agree with this statement. Again, I don't want to debate the merits of OO as I believe it has a lot to offer for writing solid software.
    But I do think one can take OO too far.

    I am a big fan of Hal's because he seems to be the most grounded and level headed OO proponent in our little community. There is no doubt that he knows OO, but at the same time he presents it in an easy to understand, and *realistic* manner (which is rare, imo). To use his own terminology, he doesn't see OO as a religion, which imo is how many OO people in our community approach it (as a religion).

    OO is good...but like everything else in the world, one can have too much of anything...including OO.
  • 9 Sean Corfield // Jun 2, 2009 at 10:43 PM

    @Jake, and yet Hal was the one who said he was "preaching OO" which is about as religious a term as you get...

    So I'm going to call you on the same thing I've called Hal on: provide concrete evidence of the "many OO people" who are approaching it "as a religion". Who are these people? Which blog posts - or mailing list posts - are you referring to?
  • 10 Jake Munson // Jun 3, 2009 at 9:03 AM

    First of all, let me define what a "religious" statement would be. For me it's when an OO proponent claims that OO is the answer for everything, *or* if they try to convince someone else to use OO in a situation where it may not be the best answer.

    Using that definition, I will point out what I see as a religious statement from your own post above: "...for me there is almost no problem today where a purely procedural solution is the right one for me." I know this is just your own opinion which you are perfectly entitled to. But in my mind, anybody that says {fill_in_the_blank} is not good while some other {fill_in_the_blank} is almost always better...that's religion. I realize that you are clearly stating your own opinion, but that doesn't mean OO is not a religion *for you*. You are fully converted to OO and you don't see any reason to court other disciplines.

    I will repeat the quote I used above as a second example of what *I* see as OO religion: "As Matt Woodward said in comments on those blog posts, the debate is over - OO won. Years ago." Not to beat a dead horse...but the OO debate is clearly not over. If it were, you would not have posted this blog entry. But for you and Matt (and most other OO proponents), there is no reason to continue to debate OO. You have made your decision long ago, and you tire of hearing people continue to debate OO's merits. In your zealousness, you attempt to eliminate the debate entirely. If that is not religion, I don't know what is.
  • 11 Sean Corfield // Jun 3, 2009 at 10:41 AM

    @Jake,

    You are (deliberately?) misrepresenting what I said - and this is the root of this ridiculous "anti-OO-guru" mentality. I would have expected better from you.

    You said:

    "anybody that says {fill_in_the_blank} is not good while some other {fill_in_the_blank} is almost always better...that's religion"

    I did not says procedural is "not good". I did not say OO is "almost always better" as a generality. I said FOR ME. I even said it TWICE in the sentence that you quoted and I EMPHASIZED one of those repetitions.

    I know what a fucking religion is. I hate religion. It teaches people to follow blindly instead of questioning. I do NOT tell people that OO is the only way. I don't even tell them any one particular OO solution is the only way. That's why I've become famous (infamous?) for saying "it depends".

    If you don't like OO that's absolutely fine by me. You can believe whatever you want (belief is religion). I've tried all sorts of programming approaches and based on my experiences, I've adopted an approach that works better for me.

    You claim I'm "fully converted to OO and [..] don't see any reason to court other disciplines" (did you mean disciplines or disciples?). I have worked with a very broad range of languages and approaches. I'm very fond of functional programming, for example, and I'm a big fan of Prolog as well (declarative programming). For me (did you read that?), for me (I'll say it again), those three styles of programming all work better for me (there it is again) than procedural programming. Your mileage may vary.

    Have you tried functional or declarative programming by the way? Do you know Haskell or Prolog or Smalltalk? No? Maybe YOU need to broaden your mind and try other approaches...
  • 12 Jake Munson // Jun 3, 2009 at 12:41 PM

    I'm sorry Sean, if I came across so strongly. All of the times that I said "your" or "you" it was meant to be an understood you. Not you personally, but the generic OO religous person I was referring to. If you reread my last comment, you will notice that I took great care to point out that you personally have chosen OO for almost every programming problem. I never said that you personally evangelize OO to other people.

    I think your definition of religious is a bit different than mine. You seem to be defining religion as evangelism. I am making the distinction that one can follow a religion "religiously" without evangelizing the religion to other people. And in my opinion, when a person feels so strongly about OO that they dedicate all of their resources to it (for current and future projects), to the point that another "religion" is not worth their programming efforts (for almost all of their projects)...that is being religious. But that is just my opinion.

    Personally, if I was in a position to decide whether or not to use OO (where I work this is not generally my decision), I would use OO some of the time, and procedural some of the time. Depending on the size and scope (and long term goals) of the project. For current and future personal projects, that is what I plan to do.

    I also want to clarify that I know you have used a wide range of programming disciplines in the past (I read your personal history in your post). But at the same time, *today* you are fully focused on OO (for almost all problems, as you said in your post). So let me ask a question. You have always made sure to say "it depends" when one should use OO. I'd be curious to hear (maybe as another blog post) in which situations today you personally would use something besides OO to solve a programming problem. If a client came to you with ___ or ___ problem, you'd use something besides OO.
  • 13 Jake Munson // Jun 3, 2009 at 12:56 PM

    @Sean,

    I found another clear example of OO religion, in the comments from one of my blog posts (the very first comment by Matt W):
    http://tinyurl.com/q5z9ku

    Let me clarify about that blog post (as I did in both the post and in the comments). My post was NOT an effort to steer people away from OO. In fact, the opposite is true. I was trying to advance the conversation around OO and hopefully get some more consensus around what OO is. But many of my readers (including Joe R) jumped to the conclusion that I was bashing OO. I was NOT bashing OO, but rather pointing out what I see as some legitimate weaknesses in the OO *community*. And I was offering solutions for how these perceived weaknesses could be addressed.
  • 14 Sean Corfield // Jun 3, 2009 at 6:50 PM

    "generic OO religous person" - that's exactly my point: this is a straw man argument. Neither you nor Hal have identified who these people are. You've clearly said you aren't painting me that way but I ask: who are these "bad OO gurus"?

    As for the definition of religion, I think we agree that blindly following dogma without considering alternatives is religion, yes? That seems to be what you're saying and it's definitely what I'm saying.

    There was an additional point made that these mythical "bad OO gurus" are trying to persuade everyone to do it their One True Way - which is dogmatic evangelism.

    BTW, "*today* you are fully focused on OO" isn't really true - again you're trying to paint the "OO" folks in black and white when, as I say, "it depends". I use functional and declarative programming techniques alongside OO techniques and in my (usually small) class methods, the code is somewhat procedural (by definition: it is a linear sequence of steps). Also, as several people have pointed out, the HTTP request/response entry point to web applications is also inherently procedural. So my applications have objects and model the problem domain, have aspects of functional and declarative programming and are wired to the HTTP mechanism by some procedural code.

    Again, you're the one trying to make this an either/or debate.

    As for your blog post, I refrained from commenting at the time because the articles you referred to were so suspect that I didn't want to be drawn into the thread (and several people had already pitched in criticizing the methodology and conclusions of Potek et al - which I notice you pulled out yet again in this latest round of discussion - even tho' even the researchers couldn't really explain their findings).

    What exactly do you want from this debate? Do you want all the "OO gurus" to say "it's OK to write procedural code" to validate some point of view (that I don't fully understand)? I'm not sure exactly what your goal is here...
  • 15 Jake Munson // Jun 3, 2009 at 7:34 PM

    Well, I have given you multiple examples of what I view as a person being religious about OO. That is my opinion. If you disagree, that's your opinion. But I noticed you sidestepped (or forgot) about my last comment where I called out a couple of religious comments on my blog. To me it would be pretty hard NOT to call those comments religious...particularly because I was NOT bashing OO, but those people chose to paint me as an OO basher. Brian Kotek and a couple of others (in the comment thread) were the ones that were honestly debating with me, and I feel that we came to some good conclusions. The others did nothing to contribute to the debate, they just jumped to incorrect conclusions.

    What's my goal? Originally I disagreed that the debate about OO is over. The conversation has since morphed into a debate about religion. Don't ask me how that happened... :)

    I guess my goal would be to hear you (or someone else) agree that *some* OO gurus take their zealousness about OO a little too far. I know *not all* OO gurus do this, and I know that the problem is equally bad on the other side of the fence. But it seems like a weak argument to me to say that all OO gurus are perfect in their use and evangelism of OO. Your continued call for examples makes me believe that you believe you and your OO peers are pure in this debate.
  • 16 Sean Corfield // Jun 3, 2009 at 7:49 PM

    Who? Matt Woodward? Because he states as fact that OO is the dominant programming paradigm? I read thru that comment thread and didn't think anyone was being religious, to be honest.

    Can you be a bit more specific about who and what it was they said that you consider religious?

    Remember that this debate started because "many OO gurus" were being accused of this. Now it's just a "couple" of comments?

    What I'm waiting to hear is the specific people saying specific things that are considered out of line. Hal went so far as to accuse people of spreading misinformation without saying who or what.

    If we can get down to specifics, we can discuss something useful where we can all learn.

    "Your continued call for examples makes me believe that you believe you and your OO peers are pure in this debate."

    You and Hal have both said "Oh no, I didn't mean you!" when folks have asked if they stand accused of being "impure" (to use your phrase). That doesn't help much (beyond confirming that you both mean "someone else").
  • 17 Jake Munson // Jun 3, 2009 at 9:08 PM

    Ok, here's a specific religious comment from Matt: "if you haven't started learning OOP you're woefully behind the times. So get cracking" He is clearly stating that OO is the thing that we all should be using, and he is telling us that if we aren't, we are behind the times. Further, he tells us to start using it. What more could you ask for?

    Here is one answers.com definition for religion (the other definitions all deal with God or spirituality): "A cause, principle, or activity pursued with zeal or conscientious devotion." I think it's pretty clear most of the OO proponents would fit that definition. If one reads their blogs (or search the blog for object oriented), you will find a lot of postings that would fit within that definition. They are not casually using and talking about OO. They are zealously pursuing it, and some of them evangelise it. Is this bad? I don't think so, as long as they are respectful. I will be the first to admit that I am not always respectful...and I think sometimes they go a bit to far as well.

    I just want to say that I think there are plenty of zealous programmers on both sides of this debate. There are a lot of people out there saying that OO is crap...and likewise there are a lot of people saying that OO is the best way to build software. I'd like to think that I stand somewhere in the middle. Personally I think that there are a lot of over zealous debaters on both sides of the issue. If you feel that you personally are not over zealous...then I can't argue with that.
  • 18 Sean Corfield // Jun 3, 2009 at 10:01 PM

    "A cause, principle, or activity pursued with zeal or conscientious devotion."

    That's certainly a pretty broad brush :) That would make me religious about dancing!

    I'll concede that Matt is a bit blunt / forceful with this particular piece of advice (but he is certainly consistent). I think "learn OO" is good advice - and so do you since that's what you said (repeatedly) on your blog - is the issue here that Matt is just over-stepping some line?

    To play devil's advocate tho', I hear people say the exact same thing about SQL / JavaScript / CSS / Flex / etc and folks don't seem to object to that... I'm not sure why OO presses such a hot button for folks...

    I often suggest people learn Haskell or Prolog or Smalltalk because I think those would make them better programmers. I wonder if people think I'm religious about that too?
  • 19 Jake Munson // Jun 4, 2009 at 12:14 AM

    I like Matt. He has offered a LOT to our community. And I have had a few good conversations with him on mailing lists and such. So I'm not trying to single him out as a bad person...just that I think he fits the description of "religious" about OO. But I am very religious about a lot of things, and I don't really think it's bad to be zealous (or passionate) about things that you think are important.

    You mentioned Flex...that happens to be a hot button topic for me. I have a pretty bad opinion of Flash, mainly because of how it interacts with (or rather, doesn't interact with) the browser. I typically keep my opinions about Flex/Flash to myself, because most people in our community love Flex. So I suppose one could say that I am religious about *not* using Flex, for a lot of reasons. But that is another topic worthy of a very long blog entry (that I may never write).
  • 20 Jim Pickering // Jun 4, 2009 at 8:54 AM

    @Jake - Recall the scene in Indian Jones and the Last Crusade, when Indiana is being held by one hand off a cliff by his father who is trying to save him, and all Indiana can think about is his father's life work before him, he can almost reach the Holy Grail (the cup), the cup that gives eternal life, and Indiana's father says, "Indiana, let it go. Let it GO."

    Dude, seriously...let it go. OO is mainstream. It seems as if you wish for the OO guru bloggers to tone down on OO or shut-up all together. Your goal seems quite rebellious in nature, but to what end? What does it matter if you make the OO Guru bloggers admit procedural is still useful? For that to happen would change nothing. OO is in play, it is in motion. If you're going to be apart of the Adobe RIA landscape - the Flash Platform - with ColdFusion then you're going to have to learn OO.

    Sometimes change is a difficult thing, so rather than accept it and learn from it - people will kick and scream and make up debates, and accuse experts of being "religious," because they are challenging the status-quo. Procedural has been the status-quo for CFers. But OO has changed the landscape, so now CFers who haven't coded OO are facing a 100ft cliff. No amount of kicking and screaming or made-up debates on religion will keep procedural in the mainstream - that time has passed now.

    While I disagree with you about religion in OO vs procedural, where I see the "religion" come into play, is in the implementation of OO. ColdFusion provides many different ways to code OO that work; some that may not even really be OO (This scope). The CF Community tends to prefer some ways more than others. It is this "religion" that adds to the frustration of learning OO. There is no documented rule book how to code OO CFCs - it is simply left to experience and personal taste. But if you do enough blog reading, you can get a feel for some sense of CF Community Standards as far as encapsulation is concerned. And then there was Centaur, and the ORM - are you going to suggest we not use the ORM? That cfquery tags and SQL are still useful? Maybe they are, but nearly as time-efficient/productive as the ORM will be.

    I am thankful for OO guru bloggers like Sean, Matt, Ray, and my good buddy Doug Boude who help us all on this OO journey. They don't have to help us at all. Call it religion if you want, that I follow them, I take their advice, and I practice what they preach. I call it good, efficient, common sense. They save me the trouble of making the same mistakes they made, so I can make new ones. Learning doesn't get any more efficient than that.
  • 21 Sean Corfield // Jun 4, 2009 at 11:27 AM

    "ColdFusion provides many different ways to code OO that work"

    Part of the problem for a lot of people is that every OO language provides many different ways to code OO that work. There is no documented rule book how to code OO. Period. Several design patterns describe conflicting approaches to the same problem - deliberately. That applies outside CFML as well as inside. But you're right about learning from other people's published experiences. I learn from others as I hope others learn from me.
  • 22 Jake Munson // Jun 4, 2009 at 12:01 PM

    Wow, Jim. You really had a lot on your mind. :) I don't want to kill Sean's server by responding to all of the accusations and arguments you made, so I'll just pick a few.

    Firstly, I am not interested in being part of the Adobe RIA landscape. See the end of my previous comment (6/4/09 3:14 AM) to find out why.

    Secondly, you asked what my goal is. I think I've stated it before on this thread, but I'd like to see more respect and tolerance from many of the OO gurus (I know not all are disrespectful). Hal and Sean have demonstrated this respect here. They both said that they sympathize with Marc's troubles as he tried to learn OO.

    However, Sean and Hal could have fallen into the same trap that you just did (as well as many of the OO gurus). They could have taken personal offense at the things Marc said (or the comments I have made here), and then they could have proceeded to belittle him and call him a "cowboy coder". I *have* seen this behavior multiple times over the years. You personally just accused me of fabricating debates, and of being rebellious. This is the kind of "religious" behavior that I believe turns many coders away from OO.
  • 23 Mulaidi Jeo // Jun 7, 2009 at 9:00 AM

    Here's my comment on my blog: http://www.knowledgerecycle.com/index.php/2009/06/07/do-you-need-oo-programming-for-cf/
  • 24 Sean Corfield // Jun 7, 2009 at 2:22 PM

    @Muladi, interesting blog post. I am quite the fan of multi-language applications and I agree that it would address the "OO in CFML" question but the two languages don't mix as well as they should in my opinion. Read Nathan Strutz' post on mixing CF and Java:

    http://dopefly.com/techblog/entry.cfm?entry=294
  • 25 Muliadi Jeo // Jun 7, 2009 at 9:50 PM

    Thanks for the link Sean. There is some good insight. But if I am reading it right, Nathan is trying to use the ColdFusion as the backend and have Java read the CFC. I don't think that is the right architecture don't you think? I will think that all the complex business layer should be encapsulated to Java using BEAN approach or even web services approach. Then you will have ColdFusion to interface either with direct invoke or encapsulate the call within CFC (kind of creating adapter approach). That way, within the CF world, everything will stay simple.

    Obviously on my blog, I am over simplify the inter-connection between the language. I know in the real world it requires much more detail planning and may go through hurdle and limitatios too.

    However, what I try to convey is, looks like the new trend is the actual language behind the application or "service" is kind of "hidden" more and more. MySpace is .NET shop, Google has its own semi proprietary language, Facebook is PHP based but they all open up to outside developers to code application to whatever language they want and interact with their system.

    So if we, CF developers, wants to make impact and bring the excitement back to CF programming, we should focus and delivering functional apps. Where are the social networking app that is CF based? (the only one that I found is Contens Relate) Where are the eCommerce framework that is CF based? How about CRM? Any Freshbook equivalent solution that is CF based? Well the list goes on and on. If I go to RIAForge, all I see are mostly framework related, where is the real working applications?

    Cheers :)
  • 26 Sean Corfield // Jun 7, 2009 at 10:28 PM

    @Muladi's Nathan's point is that data access is one of the 'killer' features of CFML so you'd want your data access layer in CFCs but then you couldn't call those from Java so it restricts what you can do with your service layer. You could write your domain objects in Java (or, better, Groovy) and have the service and data layers in CFML I guess. His point is that because the language-to-language calls really only operate from CFML to Java, you can't always take the natural approach.

    What that leads to is an all-or-nothing scenario where you are forced to do almost everything in Java (Groovy) or almost everything in CFML. You can't easily mix and match which would be where the real power could come in...

    You're right about the dearth of good *applications* in the CFML open source world tho'.
  • 27 Jay McEntire // Jul 6, 2009 at 1:29 PM

    Some additional thoughts that I finally got around to posting-- http://bit.ly/1XoI8F
  • 28 Richard Develyn // Oct 2, 2009 at 8:12 AM

    It's funny I just finished writing my own views on my own blog (http://www.qusheet.com/richard) and I came over here to get your opinion and I found this interesting thread.

    Keeping the discussion very much here (if ok with you), I would like to say that I believe OO (actually, OB) is extremely important not so much because of the technicality of classes and what have you but because it enables a domain-modelling approach to solution design.

    I think this is a fundamental step in increasing program clarity, and I think program clarity is where the future of software engineering lies.
  • 29 Sean Corfield // Oct 2, 2009 at 12:42 PM

    @Richard, I didn't even know you were blogging, old friend! Some interesting stuff there - as I'd expect from you! - so I've subscribed :)

Leave a Comment

Leave this field empty