Wednesday, May 03, 2006

The Library of Imaginary Machines 

Bill de hÓra
As a consequence using the current machine or language to implement a more relevant machine or language is a powerful technique. Since new machines can take time to figure out and are hard to estimate they make line of business managers nervous - they smack of over-design, over-engineering, and over budget. As Terence Parr put it "Why program by hand in five days what you can spend five years of your life automating?" But when you have one, it's like going to battle with an AK-47 instead of a musket.

The gun analogy is crude, but apt. There is no force multiplier in software development like a new machine. Once you start writing software this way, in terms of better machines, it's very seductive. New machines are silver bullets. Power to get things done is what gets people fired up about Rails as a DSL, or MDA, or Code Generation. I suspect current heady interest in Domain Specific Languages (DSLs) is driven by the "power tool" notion.

When Joel Spolsky talks about Leaky Abstractions, he's talking about the situation where an underlying machine, one which you should ideally pay no attention to, pops through your present machine into your coding reality, Lovecraftian style. The word we use to describe this hiding of machines is "transparency", which is one of those technical terms that is correct, but bone-headed. Most people see the word "transparent" as allowing you to see through to something, not hide it. What we really mean here is "opacity", the ability of one machine to hide the fact that it is implemented in terms of another machine. It's when the underlying machine (or machines) seep through that there *is* transparency.That's when the leaky abstraction occurs and problems begin.

. . .

Multi-core is the default production configuration now for CPUs I trialed a tiny laptop a few weeks ago and the most surprising thing was that it had a dual core. I'm no metal head, but given that they're turning up in machines optimized for road warriors and office apps, and if people are right about the end of Moore's Law (bye-law?), then the next major machine/language argument could be over concurrency models, with shared memory playing the incumbent, just as static typing and OO does today in language design. Productivity and expressive power might be recast in terms of your ability to work with the concurrent architectures being imposed on you.

Topics: Programming | Language | Representation

Links to this post:


Comments: Post a Comment

This page is powered by Blogger. Isn't yours?