Explaining My Problem with Frameworks

I have tried time and time again to find an elegant way to describe what it is about Fusebox and frameworks in general that I don't like. I think that my trouble orating these issues is a contributing factor to all of the dialogue.
This weekend I was up in New York having lunch with Shlomy Gantz, and while talking about his beef with FB, was able to perfectly summarize my feelings in a single sentence. "My problem with Fusebox is that it solves a bunch of problems that I don't have"
Yup, that just about says it all. Thanks, Shlomy. You'd think that being an instructor and author I'd have touched on this simple explanation myself years ago.

Comments
Not sure it's meant to solve problems. I've never used FB because it's allowed me to solve a problem I couldn't have otherwise.

I look at it as the ability to implement certain design patterns. That may be a bad choice of wording... But everything I build, even applications that have no similarities, are designed in similar ways. The framework just allows you to design a certain way. That's not to say that it restricts you in anyway, for other fellow fuseboxers may take a completely different approach to certain situations, and yet they use the same framework. And even then, we'd still both pick up each others approaches in a matter of no time.

So it really has nothing to do with whether a framework is used or not... that's completely irrelevant. You have your own methods of designing software, as I do. The difference is that my method is aided by "helper files". You may have helper files as well. Maybe you like to use CFC's? Do your applications require CFC's in order to work? Many times not. But CFC's do help many people design software in ways they like. And those people may use CFC's as objects or simply as collections of udf's. How's that any different with using frameworks? Application.cfc and cflogin are just helper frameworks just like fusebox, do you dislike those as well? The same concepts are occur there as well.

So when you dislike frameworks like FB, you're also saying you dislike how FB sites are designed and built, yet you really have no idea how any of my sites, or the sites of other fuseboxers are designed in built.
# Posted By Devin | 9/26/05 5:33 PM
Frameworks are supposed to solve problems - problems regarding where to put code, how to control flow, how logic and presentation tiers are kept seperate, etc., etc. Following a methodology also eliminates these "problems" but it still requires developers to have stronger application development skills and it doesn't bind them. There are simply best practices with my approach - there are some core files I recommend using, but they are optional, non-restrictive, and I encourage modifying them to suit the needs of an application if need be. Likening the application event framework to fusebox is not accurate but since you asked, I'm not crazy about some of the practices encouraged by it. The security framework isn't really an accurate comparison either, but I don't have any problems with that. Why like one and not the other? Application.cfc forces you to write CF code certain ways and sometimes this violates what I'd consider best practices for CFC development. The security framework (JAAS) doesn't do this - it's up to a java developer to implement it anyway they need... Macromedia did this with a couple tags and functions and it works... without forcing developers to code a certain way. Fusebox does force development a certain way, and though you're right that design patterns can be implemented in a FB app., I'd say it discourages design pattern use more than it encourages it. By the way, I think it's silly to get hung-up over patterns and pattern terminology... it usually results in silly rhetoric and wasted time. I've said this publicly on several occasions. I have read the FB and FLiP documentation and core files and understand how it all works, I have seen some FB apps, and I have spoken with many FB developers about how they use the framework. Hal's a good friend of mine, and we enjoy sitting and talking about frameworks, etc. Though I wouldn't dare speak for him, you might be surprised how similar Hal and I actually are in our thoughts on this topic. I promise you that if you send my an app you've built with FB and I think it is designed well... hell, even if I ust agree that using FB to build it was the best choice, I'll use FB for all my apps from now on and I'll never hypothesis that their might be a better way. I wouldn't dream of addressing what you said about CFCs and how I build apps. Just uttering the sentence "maybe you like to use CFCs" out load is a cardinal sin. I'm sorry if you feel some sort of personal attack when I talk about FB - it's not meant to be one. Personally, I always welcome criticism. In fact, criticism is the one thing I'm looking forward to more than anything else when I publicly release my methodology for designing and building applcations. Have at me, make it better, please. One thing I'll say about Fusebox developers though... you guys really do take things very seriously. If I only had a nickel for every time I got a FB developer all bent out of shape...
# Posted By Simon Horwith | 9/26/05 6:07 PM
LOL! it sounds like what some wag in the audience said about XML at a Sun XML conference years ago:

"XML was a great solution looking for a problem"

tie that in with

"when you have a hammer, everything looks like a nail..."

just my 2c worth...
# Posted By barry.b | 9/26/05 6:27 PM
Simon it's not so much that I get "bent out of shape" as it is that, in all the years and all the times I've heard people criticize Fusebox (or frameworks in general for that matter), I've never heard anyone actually give a valid reason WHY they dislike them. It's always vague, unsubstantiated statements like "Fusebox does force development a certain way, and though you're right that design patterns can be implemented in a FB app., I'd say it discourages design pattern use more than it encourages it". Which, if look at that statement, actually says nothing except an opinion; a perception. Excatly what is Fusebox "forcing on you"? WHY do you think it discourages design pattern use? The jist of everything I've heard (from others as well) seems to really end up being "I just don't like it". What am I missing?
# Posted By Brian Kotek | 9/26/05 6:38 PM
No worries, I've never felt personally attacked, nor have a taken the debate seriously. I just like to debunk Fusebox myths as to not sway other people's opinion on faulty information.

I've never been restricted when using Fusebox. So could you elaborate on that?

# Posted By Devin | 9/26/05 6:48 PM
Disclaimer: I know very little about Fusebox 4, and this may not be the place for this discussion, but while I'm inspired....

Brian, this is reason I was never sold on the fusebox approach:

Everything goes (submits?) back to the index.cfm (the fusebox) and different actions (the fuses) execute depending on the value of the FuseAction URL variable. Is my understanding accurate?

This approach reminds me of a "Main Routine" approach (it may have another more official name that I do not remember). Basically, when an [traditional / non-web based] application starts the main routine is executed. This main routine doesn't do anything other than calling other routines.

I do not have a problem with that approach for traditional apps. After all you are only running a single program and everything is self-contained. However, in terms of web development I find it easier (and better) to view each page as a separate program, especially since they all execute in isolation of each other. The "main routine" approach that fusebox uses does lend itself well to this type of thinking.

It might be interesting to note that ASP.NET uses a fusebox-reminiscent style with Web forms. The Postback and Viewstate variables define the page's state and decide what code to execute based on their values (similar to how the Fusebox decides what to execute based on the FuseActio). The purpose of this was to make it transparent to move from windows development to web development; and that is something it does relatively well.
# Posted By Jeff | 9/26/05 8:06 PM
One correction:
The "main routine" approach that fusebox uses does *NOT* lend itself well to this type of thinking.
# Posted By Jeff | 9/26/05 8:07 PM
I have felt restricted using fusebox. I hate having to go to multiple places just to add a new file to the site. You have to add it in at least one if not multiple circuits in xml. It oftentimes gives me errors that are less than helpful which is something im just not used to when working with coldfusion. A simple xml error like not closing a self closing tag can be quite hard to track down and fusebox just tells me which page its on. (a good ide can help this, true, but to me it should be able to tell me exactly where in the error message). It (the framework itself) has also oftentimes caused errors that are hard to discern. Everyone keeps telling me that the circuits are great because you can look at them and tell about the flow of the entire application. I don't see that at all. Thats what documentation is for anyway. Maybe if you have been looking at circuits for years this would be easier, but I doubt it.

To me, the fusebox framework (im not speaking of other frameworks which I have not had a chance to try yet) is great for developers that are trying to just get started and get something churned out quickly that other developers can work on with them. But if you have time to plan (which in a perfect world we all would) a methodology would be just as easy to maintain and a lot less code to write. I have used fusebox for about four projects now and in each of them I ended up writing more code and spending more time than I would using my general methodology. So thats how I feel that fusebox restricts me.

Sorry, just couldn't help fueling the debate ;)

All this being said, I am glad to have learned it so if I go to a consulting position that uses fb already Ill be up to speed, but any project I work on where my opinion is required, I will always suggest not using it. my two cents...
# Posted By Ryan Guill | 9/26/05 8:11 PM
I don't use frameworks just to solve a problem I have. One of the reasons I use a framework is to promote for my team good structured coding. I am sure that Simon does a great job writing good clean code so he doesn't really need a framework for that which is one of the biggest reasons to use one. However, for my team, I believe we produce better code by using Mach II and ColdSpring. Sure I could write my own documentation and basic structure for my team, but that would be re-inventing the wheel a bit since there are some of these nice relatively well documented frameworks out there.
# Posted By Kurt Wiersma | 9/26/05 8:18 PM
I have to disagree with you there. Fusebox is the best documented framework for coldfusion I have found (mach-ii is coming around) but even it is sparse. Which frameworks are you talking about that are relatively well documented? I may have just missed them.
# Posted By Ryan Guill | 9/26/05 8:24 PM
Ryan, you are correct about fusebox. I was mainly referring to Mach II. I know it could use a little more public documentation. We have some internal examples that we use for our developers to get up to speed. Mostly I have found that the barrier to get people going with Mach II isn't so much the framework is in how to build and maintain OO applications.
# Posted By Kurt Wiersma | 9/26/05 8:32 PM
Ryan said "I have felt restricted using fusebox. I hate having to go to multiple places just to add a new file to the site. You have to add it in at least one if not multiple circuits in xml." Ryan if you're adding anything in more than one place you're probably not solving the problem in the best way. The whole point of Fusebox is "once and only once" meaning you have one bit of functionality that you can then call from anywhere you need to. Grid layouts in particular are extremely easy to build with Fusebox for just this reason.

Ryan said "It oftentimes gives me errors that are less than helpful which is something im just not used to when working with coldfusion. A simple xml error like not closing a self closing tag can be quite hard to track down and fusebox just tells me which page its on. (a good ide can help this, true, but to me it should be able to tell me exactly where in the error message)." XML errors of any kind are difficult to determine in CF. But it is very easy to use an XML editor that autopopulates and validates the tags/attributes from the DTDs.

Ryan said "Everyone keeps telling me that the circuits are great because you can look at them and tell about the flow of the entire application. I don't see that at all." Not sure what to say here because when done correctly, the circuits *are* an excellent roadmap of what is happening.
# Posted By Brian Kotek | 9/26/05 9:34 PM
Ryan, your said restrictions don't sound like restrictions at all, rather, a lack of understanding. Some of it may be more common to those learning the framework, but becareful about lumping lack of experience in with framework restrictions.
# Posted By Devin | 9/26/05 9:39 PM
Im not denying that after only 4 applications that Im no fusebox expert. But following the documentation that I did find, and even a fusebox book (which I could not find one for 4.1, but thats not a big deal, this is at least the one framework for coldfusion that actually has a book...) this is what I come up with. Also, looking at the example applications (specifically the ones that enforce model, view and controller circuits), I dont see how you could put all of your things in one circuit unless you have a gigantic circuit. Maybe for a small application thats fine, but for the types of applications that I am developing, thats just not an option. And if you split it up into multiple circuits that take care of different sections of the application, then where do you go to see this overview of the entire application?

Regardless of why the xml errors are a problem, the fact is they are a problem for me. I don't have trouble writing code, but when I make a small mistake like missing a /, it shouldn't be so difficult to tell me where that is. Maybe thats a problem with working with xml, but regardless, xml is what I have to work with.

I dont want an xml circuit telling me the roadmap. Thats what documentation is for. And regardless, I don't see any possible way that you could write your fuseactions in your circuit that could make it easy for me to glance at and read. I would love to see how you do it though, that may help me in my progress with the fusebox apps we do have.

Heres the main point for me though. I have to learn fusebox. I have to learn syntax, I have to learn fusebox best practices, I have to learn fusebox architechture, all this, just to build a simple application. Im not learning coldfusion, Im not learning patterns or object orientation, or anything else that I can apply to things besides the fusebox framework. At the end of the day, I *am* writing more code, and I *am* doing more work to get the same thing done. Methodologies don't require you to learn new syntax and things that you shouldn't already be learning for other reasons. Things like how to work with objects effectively and actual language best practices. These things are general programming techniques, things that I can describe to someone writing php, asp, java or anything else and were on the same page.

So, if you can't agree with me that the things I have mentioned about fusebox that I don't like are restrictions, surely you do agree that having to learn a framework like this to use it is extra requirements. And in my opinion, the extra requirements are too expensive for the few benefits.

# Posted By Ryan Guill | 9/26/05 10:07 PM
To me, there's a lot of huffing and puffing going on about the LEAST important part of your application: the controller. I've migrated several apps between homegrown, Fusebox, and Mach-ii controllers without hassle. I actually think it's a good thing to do once in a while to make sure that you aren't relying on the framework for too much of your app's structure.
# Posted By Dave Ross | 9/26/05 10:50 PM
I think I agree with part of Dave Ross's point but I'd state it another way: even the best framework still lets you write crappy code - but don't blame that on the framework, blame it on the developer.

Simon makes an interesting point that his methodology "requires developers to have stronger application development skills" (he says this of methodologies vs frameworks). If your development skills are strong enough, you can write good code with any framework.

So we seem to have some consensus that a framework helps less skilled developers build maintainable code (although it isn't a silver bullet) and that highly skilled developers can use frameworks too.

Which means that if you have a team of mixed skills, especially a large team, perhaps geographically spread, using a framework should provide a set of common reference points without requiring that every member of the team have "stronger application development skills". That seems like an easy win to me: a little compromise by the lead developers to assist all of the junior developers. Isn't that what teamwork is all about?
# Posted By Sean Corfield | 9/26/05 11:55 PM
I also agree with Ross - not only do I believe there is there too much huffing and puffing... I don't even find controllers necesary in many respects - not in the way that all these frameworks implement them anyway. I know that sounds odd, but when you look at my methodology you'll understand. I do agree that highly skilled developers can use frameworks, but what they build most likely won't be designed as well as could be - not if done in the context of the framework. Sure, an expert should be able to build anything great and drop it into a framework, but if you build something great then why bother? That's kind of like buying a Ferrari and never taking it out of 2nd gear (OK, bad analogy but you get my point). Using my methodology does require a higher skill level - but using my methodology and having a lead developer assist just the way you describe, would allow a fairly junior developer to still play an important role on the team. Yes, they'd probably have to know a little more about development but nothing that they couldn't learn in less time than it takes to learn a framework - any framework. Besides, what's wrong with expecting developers to know how to develop? My methodology certainly doesn't require all of the developers on the team to be experts - but it's slightly more necessary for the architect and/or tech lead to be one.
# Posted By Simon Horwith | 9/27/05 1:14 AM
well, then alls I can say is that I look forward to your methodology and expect it to blow my mind and be better then all the rest out there.
# Posted By Devin | 9/27/05 2:16 AM
Frameworks solve two main problems with mainstream "team" development. They are to accelerate delivery and not to re-invent the wheel.

Anything outside of these two points is "cream" in ones coffee.

Frameworks in many shape or forms are simply code templates to extend outward on, and aren't there to solve all developers problems in one hit. The FuseBox frameworks origins stemmed from how to separate a procedural code solution into something that hints at "abstraction".

Somehow over the years it's mutated and adjusted to the new additions Coldfusion has thrown at it.

If you are a solo developer and are currently using a framework, it will most definitely feel like you are jumping through countless hoops to solve virtual problems resulting in an overall bad experience with the chosen framework. Yet, the moment you suddenly find a problem with your laid out architecture, you are also now able to communicate your problem without asking your listeners to play pre-lude catch-up. Furthermore you can seek advice on how to re-arrange code-base in a more efficient manner. Then there is the fact that if you get hit by a bus, someone can come along and go "ahah, Mach-II, I know what to do here".

To me, there are a number of deciding factors that are at play when I develop a team or project, the main aspect is Communication.

When you write an application and have to sit in the world of "debug queues" you kind of need a way to communicate your "pain points" in a manner that doesn't require extra translation. If you utilize a common framework, you can do this quite easily, as it's a manner of keeping your listeners focus on the context of the problem and not everything else surrounding it.

It also has to do with "scalability", if you need to swap components in and out, how do you cater for that? If all your co-developers have their own disparate way of implementing various portions of logic and you need to somehow dislodge a component or inject one, how will your architecture cope in this regard?

Frameworks exist for a tone of reasons and each solve various problems, some even overlap but the point is this: They are there for a reason, not because a coder got bored one evening and decided he/she would add to the overwhelming mass of already existing frameworks.

It's a matter of first understanding what problems are solved before using a framework, too many people pickup OO Patterns and Frameworks simply because "All the other kids are doing it, so why not me".

I feel into that category and now have the luxury of reflection, and thanks to my peers and their patience I've come to that conclusion, choose because you find it solves not because it simply exists.

The irony of all is that Coldfusion in its current state is actually a grouping of existing J2EE frameworks (i.e. Jasper anyone?) all being "glued" together via common backbone, entitled CFML.

- Hopefully i'll be at MAX this month, and would love to catchup with any who wish to cry about frameworks into a beer or two hehehe..
# Posted By Scott Barnes | 9/27/05 4:12 AM
I've spent a few years learning and developing with the BEST framework in the world. It was VERY easy for me to get up to speed and begin developing very powerful applications with this framework. It allows me to develop portable, OO, lean, and efficient code. Millions of developers out there use this framework, so it is very easy for someone to take my well documented code and quickly jump in and maintain it in my absence. The documentation that accompanies this framework is second to none, and VERY thorough and complete. What is this silver bullet? ColdFusion.
# Posted By Yacoubean | 9/27/05 10:02 AM
Yacoubean,

When I was writing my books the publisher decided the number of CF Developers was half a million (500,000). I doubt the number of CF Developers has more than doubled over the past 3-4 years.

I thought that this was the number being thrown around when MM acquired Allaire (However, I have also heard 300,000 as the number).

Perhaps this is a minor point, but... does anyone have any current estimates as to how many CF Developers their are?
# Posted By Jeff | 9/27/05 10:10 AM
Jeff,

I have no idea how many CF developers there are in the world, but my point doesn't change with the numbers. Here's an abstraction so that my sentence is more portable: "Oodles of developers out there use this framework, so it is very easy for someone to take my well documented code and quickly jump in and maintain it in my absence."
# Posted By Yacoubean | 9/27/05 10:17 AM
Oh yes, and I suppose Java is a framework for people too lazy to learn Assembly language, right? Can we try to stick to accurate comparisons, please. ColdFusion is much more than a framework - for one, it's a product. Is every CMS a framework? They do share many traits. Three are similarities betewen CF and Java compared with FB and CF, but let's be honest - CF is controled by a company not a community. Besides, CF is a little more than something written in java to help you organize your java code - it is a valid programming language that happens to be built on the J2EE platform. If this were an accurate comparison, which it's not, am I to assume that you're using FB because it's so slow and difficult to build applications in CF without it? I like discussing the benefits of FB in team environments, etc. I'm not going to be led into any ridiculous debates or comparisons, though. I'll say one thing - if you need scalability and other features not offered in CF you do have to roll up your sleeves and use pure Java it couldn't possibly perform slower than CF since ColdFusion is an abstraction layer with some overhead... using your analogy I guess I'd be right in saying that every FB app would be more scalable and better performing if rewritten without the FB framework? Neither here nor there - truth be told, there have been several times in which the CF server HAS gotten in my way on a project because of it's limitations. So maybe you're right. Maybe CF is a framework and maybe it also sucks. Maybe I'm wrong and frameworks are going to save the world. Who knows - I'm begining to care less and less as people continue to try and convince me. I apologize for the rant - I guess I'm getting tired of hearing about Fusebox. Maybe someone would like to send me some amazing application built in FB or some other framework so I'll just be convinced that there is a need for frameworks in the world of ColdFusion? It gets tiring exchanging comments with an entire community, and I've really got more important things to do. Can we just leave accept that "Simon doesn't use frameworks to build CF Apps" and leave it at that? You're all welcome to come hear me speak about these topics at the Fusebox conference, and you're more than welcome to criticize my methodology and/or any code you see me write or release, as much as you'd like.
# Posted By Simon Horwith | 9/27/05 10:28 AM
I would agree that it is easy for a competant CF developer to jump in and work with code that is documented and structured.

# Posted By Jeff | 9/27/05 10:33 AM
Actually, Simon, my comment was intended to show that people don't need FB, Mach II, OnTap, ColdSpring, RoR, or any of their friends. I am in your camp, I don't like the idea of frameworks.

However, I do think frameworks can be a valuable tool for people that want to use them. I'm just not one of those people.
# Posted By Yacoubean | 9/27/05 10:34 AM
Well simon... if you're going to post about it, we're going to comment on it.
# Posted By Devin | 9/27/05 10:37 AM
Simon, watch out for the rotten fruit and vegetables as you take the stage on Thursday. :)

# Posted By mgw | 9/27/05 10:47 AM
Simon, watch out for the rotten fruit and vegetables as you take the stage on Thursday. :)

# Posted By mgw | 9/27/05 10:54 AM
Jeff, do you mean "easy for a competent developer as opposed to difficult for an incompetent developer" or do you mean "easy ... with code that is documented and structured" as opposed to "difficult ... with code that is not documented and / or not structured"? Or do you mean as opposed to using frameworks?

I agree with both of the former assertions (but not the latter, obviously).
# Posted By Sean Corfield | 9/27/05 11:02 AM
Sean,

I think I got confused. My statement was intended to be framework-independent.

I believe I meant the second. It's easy with code documented and structured, as opposed to difficult to work w/ undocumented / unstructured code.

Any [competant] developer should be able to work with structured / documented code regardless of whether it was built using a framework or not.

If they have trouble working with structured / documented code, then that would trigger incompetance flags in my mind.

Did that clarify for you?
# Posted By Jeff | 9/27/05 11:20 AM
Thanx Jeff. I suspected that was what you meant but wanted to make sure.
# Posted By Sean Corfield | 9/27/05 11:27 AM
Yeah, no kidding about the rotten fruit. I was joking in the office here about having a </fusebox> TeeShirt made to present in, just to get a rise out of people, but decided it was just too over the top. Yacoubean, I agree with what you said in response to my comment and am sorry if I jumped the gun on that one... guess I'm getting a little defensive (or is it offense?). Devin, point taken - and I do love the comments. I was just feeling a little bit like a one man army under siege from attacking foes. I'm fairly sleep deprived today so you'll have to forgive me.
# Posted By Simon Horwith | 9/27/05 11:49 AM
'Can we just leave accept that "Simon doesn't use frameworks to build CF Apps" and leave it at that?' Yes, I can leave it at that. Because this is a position based on personal opinion and debating opinion is mostly pointless. If that's the real reason then that's fine. It's the generalizations and vague reasons that I'll take issue with. I suspect the reality is somewhere in the middle. And I also agree with Hal and others that the UI controller is definitely the LEAST important part of the application. The model and the view layers are far more important (and far more fun to code as well). In my experience a well thought out model and view can basically be glued into just about any framework with a minimum of fuss.

Though I do agree Simon that if you're going to post about it in a negative way you have to be prepared for the response! You said "I was just feeling a little bit like a one man army under siege from attacking foes." and it's funny when I get into debates like this on CF-Talk or elsewhere I often feel the same way but on the other side. Anyway good luck with your talk.
# Posted By Brian Kotek | 9/27/05 12:05 PM
Hello Folks,

Try to learn & use coldfusion perfectly rather than debating about various Frameworks. If you know 90% of the built-in fuctions and tags, you can write better quality code than what u can accomplish with less knowledge and using frameworks.

So guys, better learn Coldfusion deeply..
# Posted By shimju | 9/27/05 12:39 PM
Shimju, you're missing the point here and demonstrating that you don't understand the role of application frameworks. Most people involved in this debate have been using ColdFusion for years and are not newbies, looking for some clever shortcuts (if that's what you're thinking?).

Frameworks are tools that many experienced coders use to organise their application code. Typically, framework users have turned to frameworks after several years of 'traditional' development. Frameworks are not an alternative to knowing CFML (or any other language) and their adoption or eschewal has nothing to do with how many CFML functions and tags you know.
# Posted By Roger Lancefield | 9/29/05 5:21 AM
Shimju has just contacted me 'off-blog' to let me know that his last posting was very tongue in cheek. He's actually a long-term and committed Fusebox 3 user!

(I suspected that he was our old friend, the 'ColdFusion Purist' writing under a pseudonym!)
# Posted By Roger Lancefield | 9/29/05 5:59 AM
Roger, I think maybe you've hit the nail on the head! The ColdFusion Purist is just Simon writing under a pseudonym! :)
# Posted By Sean Corfield | 9/29/05 10:16 AM
I know this is kind of an old thread, but I've got to get something off my chest. :)

Last night I watched the CF 10 year birthday party video, the party that was held this last July in Newton (I think). I found it very interesting listening to all of the original CF coders talk about priorities and motivations behind CF (including Tim Buntel). They kept comparing CF to 'pure' languages like Java and C++ ('they' being the Allaire bros. and 2-3 of the original employees). One discussion really got me thinking. Tim Buntel asked the guys what kind of things led them to the java rewrite, and what challenges they faced. All of them talked about the decision to leave CF an easy, but not 'pure' language, and how they feel they made the right choice. So I ask this:

A lot of low level languages have these rules:
1. Case sensitive variables, functions, etc.
2. Strict scoping
3. Strict variable typing

I'm sure there are other things that I can't think of, but when I look at all of the activity surrounding the framework community, I am reminded of these 'pure' languages. I'd love to hear some of your comments on why CF isn't a 'pure' language, and if it should be, and how this relates to the frameworks.
# Posted By Yacoubean | 9/29/05 10:36 AM

Technically, ColdFusion is an application server, encompassing much more than just the language. CFML is the language.

Speaking in terms of CFML, I'm not sure why it would not be called a programming language. I'm not sure what makes up a programming language "pure" or not.

With the introduction of CFCs, I'd say that CF is now on par w/ other languages I have worked with in terms of encapsulation features of the language.

I never worked with a case sensitive programming language before Java Is C / C++ Case sensitive? I thought not, but I could be wrong.

I'd like to see ColdFusion offer stricter (?different?) variable scoping rules. For example, if I create a variable inside a function, why can't it be "local to the function" by default. Why must I specify it as local using the var keyword?
# Posted By Jeff | 9/29/05 10:55 AM
"Speaking in terms of CFML, I'm not sure why it would not be called a programming language. I'm not sure what makes up a programming language 'pure' or not."

CFML is clearly a programming language. A lot of people like to complain that CF is not pure enough, in that it doesn't do the 3 things mentioned in my previous comment, and other things. I am not one of those people.

"Java Is...Case sensitive?"

I was once told by a Java programmer, "Java is VERY case sensitive, as all programming languages should be".

"Why must I specify (a local function variable) as local using the var keyword?"

I'm sure the CF engineers know what they are doing, and I'm sure they'd have an answer for you. Similar questions one could ask: Why isn't CF case sensitive? Why aren't CF variables strictly typed? Etc, etc. Listening to the ColdFusion founders in that birthday party video, I'd say the answer is that CF is supposed to be easy, yet powerful. The Allaire brothers kept referring to CF as magic, because of its ease/power combination. Do we really want to take away the magic by making CF a 'pure' language? What about frameworks, then?
# Posted By Yacoubean | 9/29/05 11:50 AM

I've heard of complaints about CF as a programming language, but never that it was not pure.

Since very few languages are case sensitive, I'm not sure why that is a point against CF.
# Posted By Jeff | 9/29/05 12:28 PM
I haven't had time to follow this thread from its inception, and just caught up on it today. There was a mention of a lack of a Fusebox 4.1 book. To that I'll offer that "Fusebox 4: Master-Class ColdFusion Applications" and "What's New in Fusebox 4.1" are both available at www.protonarts.com.
# Posted By Jeff Peters | 10/2/05 2:37 PM
Your son <a href="http://www.44414.com">christian louboutin shoes</a> is good <a href="http://www.44414.com/cheap-christian-louboutin/Christian-Louboutin-Pumps-c11_p1.html">Christian Louboutin Pumps</a> for you <a href="http://www.44414.com/cheap-christian-louboutin/Christian-Louboutin-Sandals-c12_p1.html">Christian Louboutin Sandals</a> and i <a href="http://www.44414.com/cheap-christian-louboutin/Christian-Louboutin-Slingbacks-c21_p1.html">Christian Louboutin Slingbacks</a> very much <a href="http://www.44414.com/cheap-christian-louboutin/Christian-Louboutin-Boots-c10_p1.html">Christian Louboutin Boots</a> approval <a href="http://www.china-sharing.com">christian louboutin shoes</a> For you <a href="http://www.china-sharing.com/products/Christian-Louboutin-Pumps-c11_p1.html">Christian Louboutin Pumps</a> i agree <a href="http://www.china-sharing.com/products/Christian-Louboutin-Sandals-c12_p1.html">Christian Louboutin Sandals</a> with <a href="http://www.china-sharing.com/products/Christian-Louboutin-Slingbacks-c21_p1.html">Christian Louboutin Slingbacks</a> i have it <a href="http://www.china-sharing.com/products/Christian-Louboutin-Boots-c10_p1.html">Christian Louboutin Boots</a> i feel <a href="http://www.jeansky.com">christian louboutin shoes</a> very happy <a href="http://www.jeansky.com/products/Louboutin-Pumps-c11_p1.html">Christian Louboutin Pumps</a> i hope life <a href="http://www.jeansky.com/products/Louboutin-Sandals-c12_p1.html">Christian Louboutin Sandals</a> treats you kind <a href="http://www.jeansky.com/products/Louboutin-Slingbacks-c21_p1.html">Christian Louboutin Slingbacks</a> i wish you <a href="http://www.jeansky.com/products/Louboutin-Boots-c10_p1.html" target="_blank">http://www.jeansky.com/products/Louboutin-Boots-c1...">Christian Louboutin Boots</a> happiness
# Posted By sdfer | 7/28/10 2:30 AM
A simple xml error like not closing a self closing tag can be quite hard to track down and fusebox just tells me which page its on. (a good ide can help this, true, but to me it should be able to tell me exactly where in the error message). It (the framework itself) has also oftentimes caused errors that are hard to discern. Everyone keeps telling me that the circuits are great because you can look at them and tell about the flow of the entire application.
# Posted By FFXIV power leveling | 7/28/10 11:39 PM
Hello,<a href="http://www.hdl-flex.com">Vinyl</a>,<a href="http://www.hdl-flex.com">flex</a> and <a href="http://www.hdl-flex.com">flex banner</a> on sale ,we offer <a href="http://www.hdl-flex.com">tarpaulin</a>, <a href="http://www.hdl-flex.com/about.html">mesh</a> and <a href="http://www.hdl-flex.com/about.html">one way vision</a>,<a href="http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html">blockout</a>,<a href="http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html">pvc fabric</a> and <a href="http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html">pvc adhesive vinyl</a>,if you want to buy <a href="http://www.zjmsd.com/en/index.asp">flex</a>,<a href="http://www.zjmsd.com/en/index.asp">Vinyl</a>,<a href="http://www.zjmsd.com/en/index.asp">flex banner</a> ,<a href="http://www.zjmsd.com/en/index.asp">tarpaulin</a>,you can contact us,<a href="http://www.zjmsd.com/en/news.asp">mesh</a>,<a href="http://www.zjmsd.com/en/contact.html">pvc fabric</a> on sale store, welcome!
# Posted By duoyingduo | 7/29/10 5:16 AM
Hello,<a href="http://www.hdl-flex.com">Vinyl</a>,<a href="http://www.hdl-flex.com">flex</a> and <a href="http://www.hdl-flex.com">flex banner</a> on sale ,we offer <a href="http://www.hdl-flex.com">tarpaulin</a>, <a href="http://www.hdl-flex.com/about.html">mesh</a> and <a href="http://www.hdl-flex.com/about.html">one way vision</a>,<a href="http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html">blockout</a>,<a href="http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html">pvc fabric</a> and <a href="http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html">pvc adhesive vinyl</a>,if you want to buy <a href="http://www.zjmsd.com/en/index.asp">flex</a>,<a href="http://www.zjmsd.com/en/index.asp">Vinyl</a>,<a href="http://www.zjmsd.com/en/index.asp">flex banner</a> ,<a href="http://www.zjmsd.com/en/index.asp">tarpaulin</a>,you can contact us,<a href="http://www.zjmsd.com/en/news.asp">mesh</a>,<a href="http://www.zjmsd.com/en/contact.html">pvc fabric</a> on sale store, welcome!
# Posted By duoyingduo | 7/29/10 5:17 AM
Hello,[url=http://www.hdl-flex.com]Vinyl[/url],[url=http://www.hdl-flex.com]flex[/url] and [url=http://www.hdl-flex.com]flex banner[/url] on sale ,we offer [url=http://www.hdl-flex.com]tarpaulin[/url], [url=http://www.hdl-flex.com/about.html]mesh[/url] and [url=http://www.hdl-flex.com/about.html]one way vision[/url],[url=http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html]blockout[/url],[url=http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html]pvc fabric[/url] and [url=http://www.hdl-flex.com/flex.html" target="_blank">http://www.hdl-flex.com/flex.html]pvc adhesive vinyl[/url],if you want to buy [url=http://www.zjmsd.com/en/index.asp]flex[/url],[url=http://www.zjmsd.com/en/index.asp]Vinyl[/url],[url=http://www.zjmsd.com/en/index.asp]flex banner[/url] ,[url=http://www.zjmsd.com/en/index.asp]tarpaulin[/url],you can contact us,[url=http://www.zjmsd.com/en/news.asp]mesh[/url],[url=http://www.zjmsd.com/en/contact.html]pvc fabric[/url] on sale store, please click her.welcome!
# Posted By duoyingduo | 7/29/10 5:18 AM
This site is hosted by HostMySite and runs off of BlogCFC - thanks, Ray.