Charles Simonyi
Charles Simonyi is still actively engaged with the world and continues to push the software envelop. He remains a deep thinker whether about how software is built or the latest venture into space. At Microsoft, he currently serves as a Technical Fellow and has taken his place as a legendary figure in computing, He made his way from Hungary where he was raised and eventually to Seattle. His life has been a great adventure and continues in that vein. Back when I first spoke with him for the book, he led the development teams of Microsoft's first application software, including early versions of Microsoft Office. Later he co-founded Intentional Software, a company focused on his concept of intentional programming which he believes is highly relevant to how developers may approach coding with AI agents.
Excerpts from the 1985 Interview in the Book
“Almost everywhere in the microcomputer world, Charles Simonyi has made his mark, either by something he has accomplished or by influencing someone with whom he has worked. He’s a modest but spirited fellow, quick to smile and able to comment on just about any topic, computer related or not. During the two times we met with Charles, once over lunch and the other time in his office, the conversations ranged from the attributes of Microsoft Excel, to flying helicopters, to certain facets of modern poetry. His speech is distinguished by a Hungarian accent which has become Charles’ trademark both in speaking and programming. Clad almost daily in a uniform of weathered jeans jacket, shirt, and worn jeans, he retains the appearance of a Berkeley student during the sixties, but his breadth of knowledge, manner, and accomplishments exhibit a wealth of wisdom and experience.”
“SIMONYI: I think the Gier Algol program is still in my mind and influences my programming today. I always ask myself, “If this were part of the Algol compiler, how would they do it? It’s a very, very clever program. One notion that sticks in my mind is how they scanned the source code backwards. It turns out that in some cases, if you do things backwards, problems that previously appeared complex suddenly become very simple…Just by looking at a problem in a new way, what formerly might have been rather difficult to solve becomes easy to solve. The Algol compiler was absolutely full of wonderful tricks.”
Excerpt 1:
“SIMONYI: The Russian machine, for example, looked like a science-fiction computer because each flip-flop [the on-off device that stores one bit of information] in the machine had a little orange, old-fashioned gas discharge light. Hundreds of orange lights flickered behind glass doors and cabinets. The whole life of the machine pulsed right in front of your eyes.
The Danish computer was a beautiful piece of furniture. It was about the size of an antique wardrobe closet. The front of the computer had three teak doors. I once saw an American executive look at it in disbelief because it was paneled in teak. It even had a Danish-modern console. The whole machine had the intriguing smell of teak.
The Berkeley computer was quite large, about twenty feet long, six feet high, and two feet deep. It was hidden in a concrete vault that was painted completely black. The computer was a little like the monolith in the film 2001 A Space Odyssey because of the way it was placed inside the vault with spotlights shining on it.”
Excerpt 2:
“SIMONYI: The first step in programming is imagining. Just making it crystal clear in my mind what is going to happen. In this initial stage, I use paper and pencil. I just doodle, I don’t write code. I might draw a few boxes or a few arrows, but it’s just mostly doodles, because the real picture is in my mind. I like to imagine the structures that are being maintained, the structures that represent the reality I want to code. Once I have the structure fairly firm and clear in my mind, then I write the code. I sit down at my terminal—or with a piece of paper in the old days—and write it. It’s easy. I just write the different transformations, and I know what the results should be. The code for the most part writes itself, but it’s the data structures I maintain that are the key. They come first, and I keep them in my mind throughout the entire process.
INTERVIEWER: Is that the biggest step?
SIMONYI: Absolutely, that is the biggest step: The knowledge of the best algorithms is the science, and the imagining of the structure is the art. The details of algorithms—writing efficient lines of code to implement transformations on those structures—is the trade aspect of programming. Technically, this is called maintaining the invariances in the structures. Writing the code to maintain invariances is a relatively simple progression of craftsmanship, but it requires a lot of care and discipline.
INTERVIEWER: Do you ever get tired of programming?
SIMONYI: Yes”
Excerpt 3:
“INTERVIEWER: How do you see the role of the programmer in the future?
SIMONYI: When any particular science has a string of great successes, there seems to be a tendency for those involved to say, “We knew we were really bright.” Then they want to solve problems in other areas.
What comes to mind is the physicists after 1945. They said, “We really did it! Now let’s look around.” And they looked at biology and cybernetics and they said, “These guys studying brains don’t know anything. They don’t even know how memory is stored. No wonder, because they are turkeys. Let us look at it. We’ll fix it. We’ll apply Heisenberg’s equations, or quantum mechanics, or whatever worked before, and we’ll apply it to brain research and something great will come out of it. Sometimes it works and sometimes it doesn’t work. Who knows? Maybe computer science will help decode DNA, and not just by supplying tools. Disassembling DNA could be a hacker’s ultimate dream.”
Excerpt 4:
Top: Code written in 1965 on the Russian-made Ural II computer. All changes had to be patched using goto’s (instructions beginning with “22”). Bottom: “Hungarian” code from Microsoft Word. The name vbchrMac, for example, shows that the variable is: global (v), current maximum pointing one beyond the last element (Mac) based pointer to a group (b) of chr structures. The name chr has further meaning: character run, which is specific to Word. See the Appendix (pages 387–389) for a sample of Simonyi’s “early Hungarian style.”