But is it Programming?

    April 12, 2006

Apple has put out a tutorial introducing programming with Core Data, Xcode and Interface Builder. Even if you’ve never written a line of code in your life – and maybe even especialy if you have not – go take a look at Building a Sample Core Data Application.

It’s all drag and drop, with a very little bit of property and behavior check-off’s. My question is this: is it programming?

It’s certainly fascinating. It’s also tempting: no programmer can read that and not want to jump in for a test drive. It’s definitely “cool”, it’s obviously powerful stuff. But..

Let’s digress for a moment. I stumbled across Charles Petzold’s Does Visual Studio Rot the Mind? presentation. If you don’t know who Charles Petzold is, I congratulate you for having managed to avoid even the most rudimentary exposure to Windows programming, but it’s time to broaden your horizons. Charles may be programming on the wrong side of the fence, but he’s a very bright and interesting guy and I recommend reading his blog even if it is Windows centric (I think he’ll come to his senses some day). A recent snippet :

We programmers, as you know, have malformed brains. Most of the time we tend to think like engineers, but if you give a regular engineer a new tool, the engineer will say “Thank you for this interesting tool. I will keep it in mind if a problem arises that seems to require it.”

A programmer, on the other hand, given a tool like XAML, starts to think: “This is very cool. I wonder what I can do with this in the absence of all other tools. What it would be like to live on Planet XAML? How would I move around? What would I eat? How would I procreate? And if the only tool I have is XAML, what do the problems look like?”

Ayup: that’s the difference between engineers and programmers.

Back to “Does Visual Studio Rot the Mind?”. If you didn’t click through the link above, I want to tell you that you really should read it. But if you just aren’t going to do that (it is long, and you have other things to do), let me extract the stuff most relevant to where this blog piece started:

Most of the really innovative interactive design stuff found its first expressions in the Windows-based versions of Visual Basic, and here’s where I started becoming nervous about where Windows programming was headed. Not only could you move a button onto your form, and interactively position and size it just the way you wanted, but if you clicked on the button, Visual Basic would generate an event handler for you and let you type in the code.

This bothered me because Visual Basic was treating a program not as a complete coherent document, but as little snippets of code attached to visual objects. That’s not what a program is. Thats not what the compiler sees. How did one then get a sense of the complete program? It baffled me.

Two paragraphs later he says:

For an author who writes programming books, all this stuff presents a quandary. How do you write a programming tutorial? Do you focus on using Visual Studio to develop applications? Frankly, I found it very hard to write sentences like “Now drag the button object from the tool box to your dialog box” and still feel like I was teaching programming.

Maybe because it isn’t programming? I’m not sure what this is – it’s something like programming, sort of, but not quite. Charles gives an example:

I saw an Avalon clock application that somebody at Microsoft wrote. It actually set the time once in code and used Avalon animation entirely implemented in XAML to keep the clock going. It was very, very cool, except that the 12 tick marks of the clock were implemented in 12 virtually identical chunks of XAML. The only thing that would have appalled me more was seeing 60 tick marks implemented 60 identical chunks of XAML.

I don’t know what rule you go by, but for me its always been simple: “Three or more: Use a for”. This is why we have loops. This is why we are programmers.

If all you are doing is rearranging furniture in a room, you aren’t an interior designer. That’s true EVEN IF THE ROOM LOOKS GOOD when you are done. You can “write” useful and usable programs with Visual Studio and Xcode etc. but I don’t think it’s programming.

Don’t misunderstand: I’m not against it any more than Charles Petzold is. Or maybe I’m against it every bit as much as he is. It’s hard to say where he is on this subject, and honestly I can’t really pin myself down either. I could easily see myself developing something much like that Apple tutorial demonstrates. I just don’t know that I’d call it programming.

I’ll leave this with a final quote from “Does Visual Studio Rot the Mind?”. Charles relates doing some simple C programs to solve a puzzle posed in a magazine. He describes some of the thinking that takes place before actually writing code and then says:

Even after this preliminary process, there’s still coding to do, but there’s no APIs, there’s no classes, there’s no properties, there’s no forms, there’s no controls, there’s no event handlers, and there’s definitely no Visual Studio.

It’s just me and the code, and for awhile, I feel like a real programmer again.

Like a “real programer”. ‘Nuff said.

*Originally published at APLawrence.com

Add to | Digg | Yahoo! My Web


A.P. Lawrence provides SCO Unix and Linux consulting services http://www.pcunix.com