Archive for January 8th, 2008
Linus Torvalds: “Linux is Just Fun”
Every interview with Linus Torvalds is well worth a read. The latest is Linus Torvalds – Part I. My favorite Q&A is:
Jim Zemlin: You’ve often been quoted as saying, ‘Linux is just fun,’ and that’s what really motivates you to do this.
Linus Torvalds: Right.
Jim Zemlin: Do you see Linux, the development of Linux as something of a greater cause?
Linus Torvalds: No. No, not to me; I mean, to other people it is. I mean, it’s actually one of the things I found to be interesting is how people use Linux in ways that I didn’t start out designing it for and sometimes use it for things that I really don’t care about personally that much.
And all the usage where people use Linux for third world countries and helping humanity, some people think that’s why I got into it and, no, that’s not why I got into it and the credit should go to projects like OLPC that use Linux to try to better the world in a bigger picture.
To me it’s being – I think it’s very interesting and, I mean, when I say it’s – what drives, motivates me is the fun part. I mean, part of being fun is that it should be difficult enough to not be trivial. So, fun doesn’t mean that it’s frivolous; it just means it’s interesting and exciting.
…
But at the end of the day, the only thing that matters is actual code and the technology itself and the people who are not willing to step up and write that code, they can comment on it and they can say it should be done this way or that way or they won’t, but in the end their voice doesn’t matter. The only thing that matters is code.
Right on, Linus! I couldn’t agree more, as I most recently noted in the post XO Axiom #3: Open-source is all about fun.
I applied this maxim most recently this past Sunday when I met with the Bolgar brothers, Josh and Zander, to begin their instruction in using the XO and learning the Python programming language. I started out by saying:
“The XO is based on open-source, and open-source is all about fun. If you aren’t having fun then something is wrong and we need to stop and fix it, including if I give you something to do that you don’t find to be fun.
Thing is, if it’s not fun then you might stop doing it, so we MUST keep it fun. If we can do that then everything else will take care of itself.
By the way, I took along XO-Tux and my two XO T-shirts. They are now the guardian of XO-Tux, and their father Robert reports that TUX is seated near the fireplace alongside Shrek. He reports they had a lot of fun this past Sunday, so things are looking good.
XO-Python: Where Are the Software Engineers of Tomorrow?
Courtesy of the Slashdot post Professors Slam Java As “Damaging” To Students, , I just came across the article Computer Science Education: Where Are the Software Engineers of Tomorrow? by Professors Robert Dewar and Ed Schonberg, two of my colleagues from my days at NYU/CIMS.
I have known both for over thirty years. I first met Robert when Ed and I made a visit to Champaign-Urbana to review Plato, as described in my post On Education, Innovation, OLPC, And Open-Source. I also worked with Robert on several implementations of Spitbol; see for example Computer History Museum: Preserving Snobol and Spitbol Artifacts. I worked with both Ed and Robert on the SETL and NYU Ada/ED projects.
The abstract is as follows:
It is our view that Computer Science (CS) education is neglecting basic skills, in particular in the areas of programming and formal methods. We consider that the general adoption of Java as a first programming language is in part responsible for this decline. We examine briefly the set of programming skills that should be part of every software professional’s repertoire.
I strongly recommend that anyone interested in the teaching of computer science and programming read this article closely.
Though I am known in part for my work with Philippe Charles (another former colleague of Ed and Robert on SETL and Ada/Ed project) on the Jikes Java compiler, Java has never have been my choice as a first programming language. This view applies especially today now that Java is so laden with enterprise-level cruft. While Java is a good demonstration of the power of a virtual machine and as a demonstration of object-oriented programming, a much better choice is a higher-level language such as Python.
As a long-time programmer myself I am especially sympathetic to their concern that the study of numerical and floating-point computation seems be a lost art. I had among my professors such recognized experts in this area as John Todd, Don Knuth, Herb Keller, Paul Garabedian, and Eugene Isaacson. I started my studies at CIMS over four decades ago; then and now it was the world’s best place to study applied mathematics. I was initially turned off to the merits of the Pascal programming language when I discovered an error in the floating point conversion procedures for the CDC 6600 implementation. I gained further appreciation that numerical computation was a vanishing art when Philippe and I had to provide our own long integer arithmetic support due to errors in the runtime for Microsoft’s product C++ compiler.
I agree with the importance of learning a “functional” programming language such as ML, and especially endorse the use of OCAML for that purpose. ML-style languages are very expressive, and OCAML is a a very efficient implementation, especially in its handling of strings. I used OCAML for almost a year as a member of a five-person project that developed a prototype to translate SQL stored procedures. I was struck by the lack of need for a debugger. Though it could take some time to figure out how to write down an algorithm, once I had done so it ran correctly. Indeed, the writing was the debugging, and every programmer should spend time using a language such as this to appreciate how this can be so.
Though they make no mention of assembly language programming, I fear that this is also a lost art, and wonder how many of today’s programmers have done a substantial amount of programming at the machine level. For example, I spent some time mastering the skill of writing “in-stack” loops for the CDC 6600, a skill needed to achieve maximal performance. It’s also worth noting that the first time-sharing system for the CDC 6600 was created at NYU, and this was only possible because Jack Schwartz discovered a unique hack that permitted saving the machine state. (There was only one instruction that alters memory without altering the registers, the subroutine call, and Jack realized that a series of such calls combined with appropriate test instructions, could be used to recover the contents of one of the index registers. Once you had that, the rest of the save was obvious.) I also recall incorporating many of the clever algorithms for processing strings created by Prof. Paul Abrahams in his work writing a PL/I compiler, and incorporated many of them in the CDC 6600 implementation of Macro Spitbol. It’s also worth noting that doing the port of Macro Spitbol to the X8086 architecture of the IBM PC was challenging in that, as Robert pointed out, no two registers have the same semantics.
Robert and Ed make mention of C, C++ and LISP. I would add Python to the list of essential programming languages. Among the widely-used programming languages today Python is the closest in spirit to that of the SETL language on which we all worked; indeed, Python is a descendant of SETL, as noted in the Wikipedia’s SETL entry:
Python’s predecessor, ABC, was inspired by SETL — Lambert Meertens spent a year with the SETL group at NYU before coming up with the final ABC design! [1]
They conclude by noting that programming languages are not the whole story. That is one of the reasons I find the new XO Laptop so compelling. Since all the source code is available, one could instruct a basic curriculum on computer science based in large part on the code used to power the XO. Use Linux for the operating systems course; Python and other languages for the compiler course; the GNU tool-chain for compilers and software engineering; the hardware design of the XO as an example of computer architecture; and so forth.
Notes:
links for 2008-01-08
-
Need to dig into this. Anything that helps search open-source mailing list can only help provide technical assistance via the web, what is known as “support by Goodle.”



