Saturday, April 29, 2006

Language Influences Architecture?

Peter Seibel started to give an interesting talk on "How Implementation Language Influences Architecture" at the recent SDForum Software Architecture and Modeling SIG. Peter started with three theories. The Sapir-Whorf theory is a long standing theory of natural language. It claims that language determines thought. The current common consensus is on the weak form of this thesis. (I will give you my opinion of Sapir-Whorf on another day.)

The second theory is the Blub paradox. This theory starts from the assumption that everybody has a favorite programming language that controls how they think about programming, which is where it loses me. The theory itself is too complicated and tenuous to sum up in an elevator pitch, so it may as well be forgotten.

The final theory is Turing equivalence. This is the idea that all programming languages are capable of expressing any computation and are therefore equivalent. The Turing tarpit is the idea that while all computationally complete languages are in theory equivalent, in practice some programming languages are just so much better and easier to use that the notion of equivalence is moot.

Unfortunately, after this strong start, Peter degenerated into a less satisfactory discussion of design patterns. The descent continued as Peter showed some particular problems with Java and claimed that they are better solved in Common Lisp. My experience with Lisp is confined to maintaining my emacs configuration file, something I have to do far too often. However, I think that the problems Peter highlighted were the usual problems with static versus dynamic checking. Java has some restrictions because it tries to detect and eliminate problems at compile time. Lisp has little compile time checking so problems are only discovered at run time. As it is better to discover problems sooner than later, compile time checking beats run time checking any day.

My view is that programming languages are tools. Just as I have four different hammers in my garage for different types of hammering tasks, so I use several different programming languages for different types of programming tasks. The issue is not that the language influences the architecture, rather that the software architecture influences the choice of implementation language.

Saturday, April 22, 2006

The Future of Music Confirmed

Last year I wrote about the future of music in a world where reproduction (copying) of music costs virtually nothing. The old model was that the publisher controlled the means of reproduction and artists made their living by promoting the sales of their recorded product for the publisher. Now that copying is free, the publisher has lost control. Artist are moving to a new mode where they give their music away to promote themselves and make their living through selling tickets live performances.

Now a Princeton University economist has come out saying the same thing. Of course, being an economist, he has numbers to back up his argument. But remember you read it here first.

Tuesday, April 18, 2006

RSS Reconstructed

The other day I posted some sarcastic comments on RSS. So to put the record straight, here is the real dope. RSS creates the appearance of push on the internet. Push is the idea that new things are pushed out to you automatically. Well not everything is pushed out to you. You subscribe to a "feed" and whenever anything new comes along on that feed, you automatically get it.

For example, I subscribe to a number of podcasts in iTunes. Every time I start iTunes, it goes out and looks for new versions of these podcasts and downloads them. Then I have to fiddle faddle around to get only the latest podcasts, the ones that I have not yet heard loaded onto my iPod. Most RSS readers are less intrusive than iTunes and appear to be more automatic. Then again, most RSS readers only deal with web pages that are quick to download compared to a podcast.

The reason you 'need' a RSS reader is that the internet is pull, not push. Your browser, RSS reader or whatever goes out and pulls back pages for you to read. An RSS reader works by periodically reading a feed page to see if anything has changed. Thus it creates the appearance of push on top of pull technology. At the other end, the most important thing about a RSS feed page is the convention about how it is updated. Unfortunately you can search far and wide and not find anything useful about this convention on how to run a feed.