“Dynamic Languages Strike Back”, 2008-05-11 (; backlinks):
[talk] …I went to the University of Washington and [then] I got hired by this company called Geoworks, doing assembly-language programming, and I did it for 5 years. To us, the Geoworkers, we wrote a whole operating system, the libraries, drivers, apps, you know: a desktop operating system in assembly. 8086 assembly!…It’s amazing what you can talk yourself into liking, which is the real irony of all this. And to us, C++ was the ultimate in Roman decadence…And we knew that we could outperform any compiler out there because at the time, we could!
So what happened? Well, they went bankrupt. Why? Now I’m probably disagreeing—I know for a fact that I’m disagreeing with every Geoworker out there. I’m the only one that holds this belief. But it’s because we wrote 15 million lines of 8086 assembly language. We had really good tools, world class tools: trust me, you need ’em. But at some point, man…
The problem is, picture an ant walking across your garage floor, trying to make a straight line of it. It ain’t gonna make a straight line. And you know this because you have perspective. You can see the ant walking around, going hee hee hee, look at him locally optimize for that rock, and now he’s going off this way, right?
This is what we were, when we were writing this giant assembly-language system. Because what happened was, Microsoft eventually released a platform for mobile devices that was much faster than ours. OK? And I started going in with my debugger, going, what? What is up with this? This rendering is just really slow, it’s like sluggish, you know. And I went in and found out that some title bar was getting rendered 140× every time you refreshed the screen. It wasn’t just the title bar. Everything was getting called multiple times.
Because we couldn’t see how the system worked anymore!
Small systems are not only easier to optimize, they’re possible to optimize. And I mean globally optimize.
So when we talk about performance, it’s all crap. The most important thing is that you have a small system. And then the performance will just fall out of it naturally.
…I’ve seen it all over the place. Do you know why this one happened? Why was the Ruby on Rails faster than Struts?… I mean, the Java people went nuts, I mean really really nuts… It was because they were serializing everything to and from XML because Java can’t do declarations. That’s why. That’s the reason. I mean, stupid reasons, but performance comes from some strange places.
View HTML: