Booch: I have had conversations with people really driving things there. I would not say I am nudging things in a different direction, because these guys are absolutely on the right path. But from a patterns perspective what we are trying to catch is, what are the architectural patterns that are emerging for us to be able to exploit on top of grids? Flatly, that community has a number of one-off experiences of applying grids in certain places, and we are trying to harvest that experience to see what we can learn about providing automation to it. I am not so much an influencer of what they are doing, as I am a respecter of their work in trying to build on [it].
InfoWorld: What you mean when you say "solving complexity by raising the level of abstraction"?
Booch: Think of it this way. Imagine today building a Web-centric system but having to do it in Assembly language, which has an impossible semantic gap. What has happened over the years is languages and tools that raise the level of abstraction from worrying about individual Assembly language lines that drive the bare machine, up to the next level that says let's instead deal with algorithmic abstractions. So now I can talk about variables and algorithms and the like. The object-oriented realm said "Let's bring data and algorithms together into one thing called an object." That is what Java and C # and C++ are all about. Each one of these things moves me further away from the bare hardware and actually allows me to express things where once I had to expand them out and through the bare hardware by many orders of magnitude. This allows me as a human to start addressing the problem further away from the machine and closer to the problem area. That is what moving up levels of abstractions is all about. The whole history of software has been that. We see that especially in our languages for Assembly, to structured languages like C, to object-oriented languages and who knows what is next.
InfoWorld: Is this progressing as rapidly as you would like, or more slowly?
Booch: It goes in fits and starts. If you look at the history of programming languages over the last three to four decades, you have seen what the evolutionists would call "punctuated equilibrium." There would be periods of incredible innovation and then points of stability. For example, in the early days of procedural languages there were languages like FRED and others you never heard of, but the marketplace said, "Oh, let's bless things like Cobol, Fortran, and C." We saw the same miracle happen with object-oriented languages. We counted upward of 100, maybe 200 languages with only a few surviving. Some of the dominant ones now are Java, C++, and C to a lesser degree. We are currently in a period of reasonable equilibrium, but you can see the furnace starting to heat up. And it is not the traditional languages doing so but instead XML, WSDL, and variants of XML. So all of a sudden we can see in the non-traditional programming language space a whole flood of languages popping up. We will see a period of equilibrium among them in a few years,
InfoWorld: With so much focus on Linux and open source code in general, what has impressed you the most in that space technically? What do you think the biggest contributions to programming have been?