40 Year Retrospective: From Simula 67 to here
This was a great panel. Panellists included Guy Steele (Lisp Afficiendo), James Gosling (Java Architect), Bertrand Meyer (Eiffel Grandfather), Anders Hejlsberg (The C# Guy), Ole Lehrman Madsen (Beta Language Guy). The basic jst of this discussion revolved around the fact that class based object oriented languages got their start here, and noting where we've been since then.
It was frankly surreal to hear James talk about fixing a bug in the Simular compiler years ago, talking about how hard it was to communicate back to Norway in those pre internet days, and then to have one of the older European guys stand up and apologize because he was maintaing the compiler. And then another guy who was Kristian Nygaard's colleage and eventual boss stand up and talk about some of the discussions they had. I found myself thinking "did they fly these guys in or something?" It was great.
There were many great comments by the panelists. Some interesting questions from the audience. Dave Ungar asked the navel gazing question of the panelists: "When I design a computer language, I want to amplify the programmers creativity, when you design a language, what aspect of humanity do you hope to bring out." There was a fair bit of discussion about the problems facing us in the years to come, which led to discussion about multicores and transaction. Guy made the provocative statement that "too much focus on the stack as the central part of the programming model is what will continue to make this hard."
The thought I had at this point was that it will never be easy to program highly concurrent systems for the programming masses. It came from reflecting about how I as a human solve problems with computers, and my path along programmingdom. When I learned simple ALGOL based programming in my early years, it was like having a little slave to boss around. I had to figure out how to speak his language, but other than that, I micromanaged how he did everything as he solved my task in the computer. When I switched to objects, I saw myself as a director. I could place a set of objects on the stage, script how they interacted with each other, but I was always able to control all of the timing. I shout "Action" and "Cut" at the appropriat times. With time, this has become a very manageable way of solving problems. But in a concurrent situation, it's like having a bunch of semi autonomous slaves, who I must give detailed instructions to, but whos timing I'm not readily aware of. This would be difficult for me to do. And I think asking just about anyone to constantly micromanage the actions of competing entities is a lot to ask of humans in general.