Staying the course

I appreciate all the advice people offered in response to my last post. I have decided to stick with my previous choice of WPF for the UI. I hope it doesn’t turn into a quagmire.

SWT and Swing would require me to build a lot of low-level UI functionality myself. Been there, done that. It’s a real bummer having to build complex infrastructure while you are trying to explore design options.

Flash has just the right UI model, is appealingly simple, and is well established. But ActionScript is still a toy programming language, and Flex Builder is still a toy IDE. I can’t find any convincing examples of complex apps built in Flash. Certainly none of the Flash developer tools are built in Flash itself. Dog food, guys. Buzzword is impressive, but I am not reassured when I hear that the Adobe developers themselves are amazed by it. Sorry, but building a word processor should not be an amazing feat for a modern UI. I might be able to get some quick prototyping done in Flash, but I am afraid it would run out of gas before long.

WPF reminds me of the early “component frameworks” in the 90’s like OLE, OpenDoc, and COM. These frameworks popularized the ideas of properties, events, reflection, and dynamic loading. Since the mainstream languages of the day (C and C++) could not handle these concepts directly, they had to be emulated in libraries with massively complex API’s. Eventually languages evolved to incorporate these features directly, making component programming much easier, as with JavaBeans and .NET. WPF is the same story all over again. It simulates a whole new layer of semantics involving declarative bindings between dynamically attached properties, a “style sheet” semantics for property overriding, “routed events”, a sub-language of time-varying functions, and a limited code-data isomorphism via XAML. The resulting complexity is really a plea for new programming language semantics.

JavaFX can be seen as a response to this need. Sean McDirmid’s SuperGlue is another. These may be examples of the next wave of language evolution. UI’s have been a driving force in language design ever since the invention of the GUI, which gave rise to Smalltalk and OO. But these new wave languages are still experimental, and I need to get going on building the wave coming after 🙂 . Right now WPF is tubular.

5 Replies to “Staying the course”

  1. Why is ActionScript a toy language? It’s just JavaScript isn’t it? It’s a dynamic, slots-and-prototypes object-oriented language. Apart from a bit of ugly syntax, it’s as capable and expressive as any OO language, and more so than many.

    It’s a shame you’re sticking with WPF, since that ties you to Windows. I’d like to play with Subtext but not enough to suffer Windows. Have you looked at Qt or Gtk+? Both are cross platform, have good support for generating language bindings and can produce modern graphical output with antialiasing, transparency and multilingual text output.

  2. Good choice, Jonathan. Indeed, WPF might seem over-engineered at the first sight, but it has a solid and extensible architecture. You’ll start appreciating it very soon.

    [OK, I’m ready now for the appreciation to start. I’ve spent the last 3 days banging my head against a series of walls. –Jonathan]

  3. Sorry to hear that 🙁

    Maybe if you describe your problems in your blog, someone will be able to help? Besides, it will be a good feedback for the WPF team.

Comments are closed.