Ted Neward has clued in that one major reason why Smalltalkers are so fond of the language (<troll>not just because they’re nuts, like LISP proponents</troll>) is Smalltalk’s image. The image is quite a revelation: it’s the in-memory representation of everything you’ve ever done in Smalltalk. You can reset it, and trim it down if you like, but basically, out of the box, the image makes programming Smalltalk more like writing in a notebook and less like rolling a fresh piece of paper into a typewriter. So if one month you write a program to, say, explore genetic algorithms and then the next month you’re writing a graph layout program, it’s not like you say “Oh, let me open up that genetic algorithm project and see if there’s anything I can use,” it’s just there.
That’s the long-term benefit, but even in the short-term, the workspace allows you to write something, grab a chunk out of the middle, execute it in a stand-alone manner, change it, move it back into the “guts” of the big block you wrote (although “doing the right thing” and refactoring it into it’s own method is no harder than cut-and-paste). Python and other dynamic languages have a console that’s equivalent to the workspace, but I don’t think they go the extra step to persist the image over time.
I wish that there were .NET languages that had a console / workspace and an image. I think such a language would be very, very attractive. Since .NET does not require objects to be serializable, is an image fundamentally impossible? If so, is there an 80-20 solution?
According to Cringely (thanks, Chris!), Sun’s Jonathan Schwartz talks up the Windows API as key to “interoperability” aspects of the MS-Sun agreement. If true (and apparently this is straight from the horse’s mouth), Cringely is right to say “…what Sun has actually obtained from Microsoft (beyond the money, of course) is less than nothing.”
Frankly, the thought of a smart guy like Schwartz waxing enthusiastic about Windows APIs as the route to strengthening the Java Desktop is so difficult to believe that if it were anything less than first-hand reporting, I wouldn’t give it credence. Much better than I could, Cringely’s article gives the business argument against the value of letting Microsoft dictate your business strategy. At a more technical level, this is the exact scenario that Gosling poo-pooed as the work of conspiracy nuts: agreeing to help someone cook by getting together every Friday and deciphering a great big bowl of spaghetti. “Okay, we were talking about this strand last time, right? Picking things up, you can see it goes about another quarter-inch and then it turns here.” “Oh, why’s that?” “Okay, it’s because of this piece over here, isn’t it? See how that curves around right here?” “Oh, right! Boy, now we’re really getting somewhere!”
I’m not saying that I have advice for what Sun should do, but dicking around with the Win32 APIs clearly ain’t it.
In celebration of my family history and 40th birthday, from now on I get to have a colonoscopy every five years. When the nurse asked “April 15?” I said “Tax day? Seems appropriate!” And then, just to make sure that I was in prime condition, last weekend I came down with a middle ear infection, for which I couldn’t even take aspirin because of the colonoscopy. Ever had an ear infection? Ever time you swallow it feels like you’re having acupuncture and they say “Eh, screw it,” and just slap the needles home with a brick.
As you can guess, I’ve been in a swell mood. Ever seen a cat in a vet’s office? I’ve been like that: alternating between fury and misery.
P.S. The colonoscopy came out fine. As I left they gave me a series of photos of my insides, but I’m going to file that under “too much information.”
P.P.S. I can understand this whole post might be “too much information,” but I thought the confluence of miseries would provide some schadenfreude.
James Gosling blogs about the Sun-Microsoft agreement. It’s an interesting read in that Gosling rebuts conspiracy theories that are apparently bouncing around the echo-chamber of the “M$” mob (as a rule, I don’t bother reading discussions where that “witticism” is common currency — as much as I love the amateur programming community, I’m really only interested in people who are mature enough to understand that big companies are big companies, not soap opera characters). Apparently, the fear is that Microsoft has cleverly maneuvered into Sun into aggreeing to an impenetrable thicket of “compatibility” requirements, compliance with which will drain Sun’s energy and innovation. (Ironic, huh?)
Gosling naturally says “We’re not idiots. We don’t blindly trust Microsoft. We’re working in the best interests of our company and our clients.” He doesn’t address the question I’ve gotten left and right over the past couple weeks: “Does this mean we’re going to see Java on .NET?” (Interestingly, no one’s yet asked me “Does this mean we’ll see C# or Visual Basic on JVM?”).
I can’t say with 100% certainty, but I’ve been discouraging people from believing in that. The class libraries are incompatible, and why go to the effort to port your class library to the other platform when your platform is the strategic foundation? (But might the agreement lower barriers to a third-party Open Source port of one class library to the other platform?) My guess is that 90% of the interoperability talk will boil down to WS- specifications: Web Service interop serves the interests of both companies.