Friday, January 25, 2008

SofSW: The Background (2/3)

I am excited about what is to come. I’ve been to this train a hundred times before, but it always excites me. I think it is the promise of adventure. Every trip I take has a hint of adventure in it. This one is filled with unknowns. I feel exhilarated.

I felt exhilaration when I encountered computer science for the first time. I had played with a home computer before. My father bought me a rubber-keyboard Spectrum 48 in the UK and I used it to play some games on ordinary C-cassettes. I even got some books with listings of program code and I used to type several page long listings on those rubber keys for hours and hours in order to see what would happen. Once I had done the typing correctly I could play the game as long as I wanted, but when I turned the power off, it was gone. I had no way of saving the work. I don’t remember experimenting with the code, however. I don’t think I ever thought about it as programming or ever understood for real what I was doing. I was just mindlessly copying strings of characters that formed magical spells that would allow me to play a game with amazing graphics. Some of the games even used colors. My friends had other home computers, which were all used exclusively for playing games. Vic-20, Commodore 64, Amiga all bring fond memories of playing sessions with my long-lost friends.

Several years later, in the university of technology I bumped into computers again. The feeling that I had had with my Spectrum came back to me. I had perhaps never understood the concept of programming but it had felt right nonetheless. It was something I was willing to devote hours and hours of my time to, there was just something there. I think the cold logic behind it all must have been visible to me. This time, however, I was going to learn to program and to understand it. This time the computers would be able to save my work and I wouldn’t have to complete it all at once. I could start with a piece, save and continue after resting. If I had made an error earlier, I could fix it later. I spent six years in the university of technology majoring in computer science and the grip of logic tightened. Logic was my world. Although I now can say that I love logic, such strong feelings couldn’t have been further from my field of interest. Following logic requires no emotions, but even Mr. Spock - a creature of pure logic - softened as the original Star Trek series went on.

Many of my friends seemed to have more previous experience with programming and I felt threatened by it. What if I couldn’t understand something, what if I couldn’t learn, what if I couldn’t catch them in my studies? Some of this fear made me study even harder. I got a programming job during my studies, which helped me put the theory I was learning into practice.

Now, a decade later, I suddenly found physics again. This time it was packaged as video lectures available for free in the internet, which I used extensively years before any of my relatives even heard about it. The access to email and the internet was one great advantage of studying in a university of technology. The video lectures showed a professor of Massachusetts Institute of Technology (MIT) presenting physics to the students. It seemed so very familiar and clear. The professor used a very fluent style of lecturing. He first described a theory and then made some predictions based on the theory and then conducted an experiment, always observing the predicted result to a reasonable margin of error. He showed that “physics works”. This core idea of scientific study of making a prediction and then trying to observe it finally gave me the idea of trying to explain the immaterial world of software in a similar way. The way you can create new theories on top of old, familiar ones and by mathematically “massaging” well-observed formulas arriving at new completely non-intuitive formulas which however produce observable predictions is a fascinating one. What if we could predict some properties of software just from some of its intrinsic properties? I won’t be able to reveal all the secrets of software, but just trying is certainly going to create some new insights. What if there was a formula that would predict the effort needed of adding a feature into a piece of software? What if we could calculate the quality of software? There might be a totally non-intuitive relationship between number of errors and the average length of lines in the source code.

Labels:

0 Comments:

Post a Comment

<< Home