Viewing by month: February 2005

Feb 14 2005

Mach-ii and II: Ben Edwards Replies

Ben Edwards has posted a reply to last week's post on the "implicitness" of the mach-ii framework. He makes some great points: you can read the full thing at http://benedwards.coldfusionjournal.com/.

In case anyone wonders my thoughts on it, I'm not turning it into a debate. My post was the result of thinking about mach-ii from a different angle than its creators ask us to, and the points made are fairly high-level and semantical. At some point, arguing mach-ii's implicitness would be like arguing which side of a sphere is the top.

I really like the following quote from Ben's post:

"The biggest problem Hal and I encounter while teaching people Mach-II is in breaking the procedural, tightly-coupled mindset, rather than Mach-II not being ?II? enough."

Considering the procedural state of probably 95% of existing ColdFusion code, anything that gets people thinking in a different manner is a good thing.

3 comments - Posted by Joe Rinehart at 7:00 AM - Categories: ColdFusion MX

Feb 10 2005

Mach-ii: Implicitly explicit?

Ok, this one may get me in trouble: I'm currently on the fence as to whether or not I consider mach-ii an "implicit invocation" architecture.

Now, I may have some mach-ii concepts wrong: I'm not an II or MVC newbie, but I am new to mach-ii. Please state your corrections kindly.

Except barney b. He can say whatever he wants.

Read more...

20 comments - Posted by Joe Rinehart at 11:49 PM - Categories: ColdFusion MX

Feb 6 2005

Blackstone = ColdFusion 7 = Available Now!

Allrighty, it's out. Ben said switched from "soon" to "very soon," and he wasn't kidding. Not much more to say. See http://www.macromedia.com/software/coldfusion/.

0 comments - Posted by Joe Rinehart at 10:26 PM - Categories: ColdFusion MX

Feb 4 2005

Don't learn CF. Or any other language.

Well, ok, that's a little drastic, but I got you to read a little more, didn't I? This is a quick post-lunch post about concepts vs. language.

Let's take a look at a given day in my schedule:

  1. Wake up. Do a little work in Actionscript 2.0.
  2. Read blog posts and analyze some CFML code in the Tartan framework.
  3. Go to work and do some C#. It'll be using some SQL.
  4. Still at work, do some ASP.NET. That includes HTML, CSS, and JavaScript.
  5. Go home and do some freelance ColdFusion.

That's eight development languages in a day. Oi!

How do developers manage this type of stuff?

Simple: we don't learn the languages.

Seriously.

I focus on learning concepts that can be applied, at various degrees, across the languages. Then, when I switch languages, I already know what I'm going to do - I just need to know what words to type. That's a menial task best left to a good IDE, books, and even Google.

After a while, you'll find yourself memorizing the language, but it's an afterthought, a side effect of what you're really doing: becoming a more effective developer by thinking at a higher level than the language you're using.

6 comments - Posted by Joe Rinehart at 1:18 PM - Categories: ColdFusion MX

Feb 2 2005

OOP Stinks?

Well, I obviously don't think so, but Richard Mansfield sure does. He's got an article over at DevX talking about his problems with OOP.

Read the full article at http://www.devx.com/DevX/Article/26776/0/page/1.

While he makes some good points, I think the article, overall, takes the wrong approach - it attacks OOP without understanding what it is. My points of contention start with the first line:

"(OOP) offers benefits only in a specialized context?namely, group programming"

Then why have my personal projects gotten cleaner and more flexible?

"Still trying to get OOP right after ten years? Something strange is going on here."

OOP is hard. Too many people jump to the code without thinking about what the code is really doing: delegating responsibility and defining collaboration.

"That's why very few programming books I've read use OOP techniques (classes, etc.) in their code examples."

Funny, the first programming book I got in college was "Solving Problems with Objects and Data Structures in C++."

"OOP is to writing a program what going through airport security is to flying."

That's bass-ackwards. OOP/OOD/OOA is to writing a program as figuring out what runways are going to handle what planes before telling them all to land.

"In effect, a programmer with no knowledge of the specific inner workings of your encapsulated class is asked to reuse it"

And this is a problem? I seem to remember that this is the point.

"Even after years of OOP, many?perhaps most?people still don't get it."

I think you're probably one of them. Most people don't get discrete math, but successfully apply some of its problem-solving principles daily.

"History has seen these 'final best solutions' many times, when waves of professors applauded some idea"

Get your head of of the academic sand, man. Take a look at what's going on in the industry today - I haven't seen anyone selling OOP as the endgame of programming paradigms. Have you heard of service or component orientation?

"Few people attempt to modify the methods of components. You may change a text box's font size, but you don't change how a text box changes its font size."

Hence why they're called "components." It's a tradeoff, and it's what we're here for.

"This dynamic environment wreaks havoc on your 'nouns' (object classifications). You can find yourself trying to fit things into categories more often than you're actually programming. Sound familiar?"

It's just as easy to design things poorly in OOP as it is in procedural design. Misunderstanding of OOP principles and people's naive love for inheritance (usually caused by never getting past that Inheritance chapter to "Using Composition Instead of Inheritance") all too often causes this "inflation."

However, it's still much easier to create a dynamic, complex application with OOP. OOP, at a base level, compartmentalizes responsibility for data and collaborations. It's a lot easier to swap out an object for one with the same interface than to pour over millions of lines of procedural code, looking for every instance of a given variable name.

"The catch is that in the real world programming jobs rarely are perfect, nor class details flawless."

I haven't met any programmer, OOP or procedural, who thinks they'll get it right the first time.

"Indeed, in Microsoft's Visual Studio .NET suite of languages, the compiled result is identical whether you use Java, C++, or Basic."

And...ummmm...an object-based type system is part of what makes it happen. And that Visual Studio GUI...yeah..objects there, too.

"Programming has become bloated?ten lines of code are now needed where one used to suffice."

That's backwards again, and a gross simplification. Those ten lines should be reusable over...and over...and over...and when something changes, you only change in one place.

"Massive API code libraries are "organized" into often-inexplicable structures, requiring programmers to waste time just figuring out where a function (method) is located and how to employ it."

Funny...I just moved from a Java based platform to .NET, and everything seems to be in logical places. System.Data...hey...that's where I find my data layer! Imagine that!

Anyhow, I need to go to the gym.

7 comments - Posted by Joe Rinehart at 8:33 AM - Categories: ColdFusion MX