I live in a small town of about 5,000 people on the Sunshine Coast in BC, Canada. Meeting my neighbors Grandpa was an interesting experience. Grandpa grew up in the Northern part of the Sunshine Coast and has lived here most of his life. I got to know him a bit when we were launching fireworks (its big here!) last Halloween with our families.
Over 4 months I would have occasion to bump into Grandpa on the ferry as I take a 40 minute ferry ride into Vancouver everyday, as does anyone that needs to make it to Vancouver from the Sunshine Coast.
Yesterday, I was sitting at the local Tim Hortons having a coffee and working on my new Acer 8204 laptop (which I purchased specifically for WinFX, Vista development), and I met Grandpa after I had been sitting for an hour, long enough for me to disappear completely into the computer. He said, Are you actually doing something or trying to look intelligent. I said I was coding. He said, What do you do for a living. "I write software". He said, that he used to program assembler way back when. He said, "if just one letter or number is off, it doesnt work!. I said nothing has changed.
First, I was a bit taken back that he could even remember assembler, I cant, and he does not even remotely look the type. Second, I was surprised by my own comment of nothing has changed since assembler. Now really, we have come a long way since assembler, see Raising the Level of Abstraction . But otoh, it is still true today one character or number is off in your source code that you are hand writing and it wont compile. It is much easier to find the compile error today, I suppose. And with Intellisense, how can you miss? (ha ha). The point is, the computer is excellent at repeating precision instructions and we humans are not. So why not get the computer to do the work of writing precision code based on a higher-level abstraction (i.e. tool) where we don't concern ourselves with hand writing low level code.
This makes me wonder about how far programming languages have come over the last twenty five years. Personally, I am a Smalltalk fan. The concept of everything is an object and message passing made much more sense to me than C. The fact that objects in Smalltalk could do only three things made it easy for my brain to understand what was going on. However, from an employment perspective, I chose and have been working with Microsoft technologies since 91 when VB1 was first introduced.
The only language that has come my way that makes me as excited like Smalltalk did is XAML. I have discussed a bit about XAML in my previous posts. Here is a snippet from the WinFX SDK help file for Build 5308:
"WinFX application development raises abstraction to the level of a declarative programming model. To facilitate programming for this model a new XML-based declarative programming language, XAML, has been developed. XAML is based on Extensible Markup Language (XML) and enables developers to specify a hierarchy of common language runtime (CLR) objects with a set of properties and logic"
"XAML is the preferred way to create a UI in the WinFX programming model because it provides a way to separate UI definition from logic, and enables you to integrate code by using code-behind files that are joined to the markup via partial class definitions. XAML enables you to create a UI entirely without using code. You can create quite elaborate documents or pages entirely in markup using controls, text, images, shapes and so forth."
I am impressed with XAML. It is early game, but GDI has done well for 20 years, Microsoft is betting on XAML, WPF, WinFX and Vista as a worthy successor to GDI and hoping it will last as long. For the computer user, the next generation XAML based applications will be like when HTML first hit the web, (then FLASH), where everyone, all of a sudden, is a web site designer
However, what shakes out is the next level of computing interactions based on these Microsoft technologies.
However, to make life a bit confusing, XAML is but one of the 5 ways, just using Microsoft Technologies to develop user interfaces. Tim Sneath has an interesting angle on explaining these five UI technologies called, "Windows Forms, ASP.NET/Atlas, DirectX, WPF, Win32 - that's five UI technologies to choose between. How do I decide?"
Having read his article I am satisfied that using XAML and WPF to develop my Storyboard Designer Application is the right choice. Once I have developed something, I can say to Grandpa that we dont have to worry about each individual character or number anymore, thats what the software tool does!