Linux is the best OS for teaching and learning about computer science, software engineering, and similar fields. This is because operating systems are designed for different types of people, and of the major systems today,
Linux is for wizards,
Macintosh is for artists,
and Windows is for muggles
These are generalizations, not absolutes, so there are exceptional cases for all three. And the "designed" is not always deliberate intent, more the outcome of a shared culture and many small decisions. Stereotypes or not, these are accurate descriptions of how these computer operating systems are generally perceived and used.
Linux is for wizards, people who want to know how computer systems work and how to make them do new and interesting things. Or at least, do things interesting to other wizards. Linux isn't the only such OS, but is the easiest of all versions of Unix to obtain. So I'm using "Linux" as a shorthand for "Linux, BSD, Solaris, AIX, and other versions of Unix except MacOS X."
Once upon a time these people were called "hackers" but this term has been misused by the media for many years and I'm tired of having to explain the difference. And before you denounce me for giving in, have you seen how big the audience for Harry Potter books and movies is? Magical metaphors have a long history in computing (eg True Names by Vernor Vinge) so why not generate some positive feedback about ourselves? I quite like being a wizard, but if you want to s/wizard/hacker/g, OK with me.
Macintosh, whether Classic Mac 9 and earlier or modern MacOS X, is for artists: graphic designers, video editors, musicians and other creative folk. (The Amiga and BeOS had a similar audience, so again you can count them as being included where ever I write "Macintosh" if you like.)
Lastly, Microsoft Windows is for muggles. At one time I would have written "suits" but the almost total conquest of the home market by Windows PCs as well as business makes that no longer accurate. Muggles, for those who haven't read Harry Potter, are the ordinary folk. They are intelligent in their own fields, but they are not magical and don't want to know that magic could exist. If exposed to magic they will be afraid of it, so wizards work hard to keep muggles from seeing any. Computing muggles use computers for email, web browsing, accounting, and many other worthwhile activities; but they don't know how the computer works and really don't want to.
(I repeat, these are generalizations, not absolutes. The Earth isn't a true sphere, but saying it's round is much more accurate than saying it isn't.)
There is some crossover, particularly between wizards and artists. The cutting edge musicians, digital effects artists, and the like are very technically skilled. Artists and wizards work together in computer games, movies, and other activities. MacOS X, the fusion of a Unix OS with the Macintosh graphics and interface, is an OS that both can appreciate.
The other crossover is that since muggles don't write software themselves, wizards do it for them. Accounting programs for Windows are written by wizards, but they never regard this as anywhere near as interesting as real wizardry.
Both Apple and more recently Linux have tried to break out of their wizard/artist niches, as the muggle market is about twenty times larger than either with corresponding profit potential.
Neither have succeeded, with one major reason being that neither really understands what muggles want from a computer system. It's difficult to describe, a combination of the user experience, gestalt, aesthetic, and culture that surrounds each system.
As a trivial example, consider deleting a file. Linux has the rm command with its complete lack of feedback and sometimes disastrous wildcard expansion. A Macintosh makes it graphical (and for many years it could only be graphical) with a zippy little animation. And a Windows system is graphical, but asks "Are you sure you want to delete this file?" first.
Each of these captures the essence of how each system operates and the intended audience. Linux is pervaded by the command line mentality, where confident users issue complex commands to be obeyed without question. The Macintosh is a system for visual thinkers, with an emphasis on graphical feedback and undoable actions. The wizards find these unnecessary, but artists appreciate it for showing what is going on without slowing them down. Finally, the Windows system is designed to be reassuring and safe, a working environment with barriers and warnings to protect you from wandering into dangerous territory.
(My stereotype of Linux users appears to be shared by several companies. Linux systems aimed at the muggle market usually drop "Linux" from the name altogether, for instance Lindows and Java Desktop System.)
Wizards are able to write software for all three platforms, so why does it matter which is used for teaching and learning? It matters because each OS not only appeals to a particular type of person, but also shapes the thinking and expectations of those who use it. (If your only tool is a hammer...) If the goal is to become a wizard rather than a muggle, then an OS that encourages people to think like a wizard should be chosen.
For exactly this reason the choice of first programming language to learn is always a topic of heated debate. Which tools we use, especially in the initial stages of learning, have a strong influence on how successful the learning experience is.
It can be argued that Linux is unfamiliar, difficult, not what is used in industry, or too low level. All true, and all either advantages for Linux or irrelevant.
Anything worth learning is unfamiliar and difficult, not just computing. Art students learn about paint mixing, glass blowing, life drawing, and silversmithing. Architects learn about tensile strengths, dynamics, structures, and materials. Formula 1 drivers start with go-karts, not Volvos. That Linux is a hands on OS exposing the underlying mechanisms is an advantage, not a drawback.
While Windows is the system used in industry, this is irrelevant for teaching. Windows runs on machines with bytes and hard drives and Ethernet, not quantum computers. Windows stores data in files in a hierarchy of directories and executable programs in other files. Windows has threads, heaps, sockets, and files, just like Linux or Macintosh. Moving from Linux to Macintosh or Windows, once you have the wizard mindset, is an order of magnitude less difficult than learning how to program any OS in the first place.
(It's also worth remembering that Windows itself changes every few years. Windows developers had to relearn how Windows worked when NT and 95 came out, and again with Winforms, and against most recently with .NET. More changes seem likely with Vista. Learning a version of Windows instead of Linux is no guarantee of employment.)
MacOS X, Unix based with an Apple GUI, would appear to combine the best of both worlds. I believe it is a very good idea for anyone learning to be a wizard to have some exposure to the Macintosh, but it is not suitable as the primary OS. This is because firstly, MacOS doesn't run on a sufficiently wide range of hardware; and secondly, the implementation is not visible enough.
Linux, rather than Unix in general, is able to run on a huge variety of hardware systems, while MacOS, even with the recent switch to Intel, is much more restricted. At the low end, MacOS doesn't run on mobile phones, PDAs, or game consoles. At the high end, price makes Beowulf clusters made from Macintoshes impractical. (The much talked about Virginia Tech cluster received considerable - and so far unique - discounts from Apple.) The computing universe is more than just desktops, and Linux reflects this.
The second reason, that the implementation isn't visible enough, is best demonstrated by the behaviour of each system when things go wrong.
Linux is famous, or notorious, for cryptic error messages that are only meaningful to wizards, or only the wizard who wrote the original software. Macintosh and Windows are not designed for wizards, so such error messages would be at best unhelpful and all too often intimidating. Instead Macintosh or Windows programs fail more gracefully, "server could not be contacted", with the expectation that somebody else will provide tech support.
For non-wizards this is definitely the right thing to do. Expecting a financial planner to become a skillful debugger when their computer stops working is about as sensible as expecting them to fill their own teeth cavities instead of visiting a dentist.
Wizards, though, are the people expected to provide tech support. We all much prefer writing new software, but the reality is that a computer wizard spends a lot of time making other peoples programs run. And this requires knowing how to recognise and fix the underlying causes of failure.
Friendly configuration GUIs are not a mistake, nor do they turn people into helpless wimps. Even experienced wizards should use such systems to save themselves some effort. But wizards do need to learn how the low level configuration really works and how to fix it if the GUI can't cope, just as fictional wizards have to learn to mix their own potions even though it's messy and sometimes dangerous.
Unlike Linux, MacOS X does too good a job of hiding the actual config files. Macintosh software works wonderfully well nearly all the time, but when it fails, it is often harder to diagnose the problem than it would be on Linux. Odd though it may seem, the messy failures of Linux are necessary for teaching wizards.
If you're setting up a computer science classroom, whether it's for fifty students or just yourself, Hogwarts is what you should be aiming for, not an accountants office. PCs with Linux are the ideal platform, although if you've got the money, have at least one Macintosh around to stimulate the other parts of the brain. Dive into shell scripts and makefiles, and accept the occasional magical accident as an opportunity to learn. It's more work than becoming a Visual Basic drone, but becoming a wizard has never been easy.
Back to Writings