First published in December 2012, Millennium Technology Prize winner Linus Torvalds tells Computing about how he first got into computers, and the development of Linux. The first in a three-part series.
Q. Who were your big heroes in your teens?
I grew up thinking I'd be a scientist and my big heroes were all the big scientists and mathematicians. So I grew up idolizing people like Newton, Einstein and Gauss. On a more personal front, it was probably my (maternal) grandfather, Leo Törnqvist, who was a professor of statistics at University of Helsinki.
Q. What got you into computing and writing code?
My grandfather got a Commodore VIC-20 in the early 1980s. I would have been, maybe, 12 when he got it and he used it basically as a glorified programmable calculator for his work.
He never seemed that comfortable with the machine, though. He would write out BASIC programs with, to me, incomprehensible formulas on paper, and I'd type them in for him. In retrospect, I wonder how much of that was him just being more comfortable with paper, and how much of it was about getting me involved in some way [with computing]. Either way, the end result was that I got pretty familiar with the machine.
I'd play around with it and read the manuals and type in the example programs. In the manuals (and in computer magazines of the time) there were simple games you could type in and study.
While I played some of them - and even a few commercial ones - the actual programming ended up being the most interesting part. Later on, in high school, I'd often do my own games, but game play was never the most interesting thing to me: it would be about having smooth sideways scrolling by using machine code, or having good flicker-free "sprites".
Q. Was the creation of Linux primarily a step in a new direction or largely a reaction to frustration with the limitations of existing systems?
I wouldn't call the main impetus anything so negative as frustration. Sure, I had been a bit frustrated trying to get Unix for my shiny new PC. I'd been introduced to Unix at the university, and wanted it on my own machine too.
But I ended up having access to a reasonable substitute - Minix - and what really drove my early development was the fact that I was playing around with the low level details of the machine; I wanted to learn all about how it worked at a very low level.
That's how I had grown up programming: working with the machine directly on top of the hardware, accessing all the devices by hand, and mostly using assembly code. That's really what you needed to do to get the most out of early home computers. I was kind-of continuing doing the same with my new Intel-based PC.
Everything was unfamiliar, but there were books about how the machine worked, and I was especially interested in the new CPU features of the - at the time - fancy i386.
In fact, the original program that became Linux wasn't even an operating system at first. It started out as a very rough boot loader to first learn how to set up the 32-bit environment on the CPU, and then I started to learn how to write characters to the screen. Then it became a terminal emulation program to connect to the university machines over a modem in order to read news groups, and so on.
[Please turn to page two]