Software development is frequently touted as Software Engineering, as part of the grand field of Computer Science. If you ask me, this is quite pompous! On hearing this you would expect all products to be flawless state-of-the-art software. Why is this clearly not the case? Why is there such a gap between current practice and the theory? Let's take as an example the realm of operating systems.
During her speech at Apple Expo, Ellen Hancock explained – in a very open and frank manner – the current situation regarding Mac OS: ‘the two highest-demand features [are] pre-emptive multitasking and memory protection. And we can't build those into System 7. Those we will be building into Mac OS 8. And we'll be delivering them at the API level.’ The fact that Hancock has been Chief Technology Officer at Apple for only four months and the references to the version numbers of the OS give away the date of this speech: only last month.
From that quote, someone not knowledgeable in OS theory would imagine that both pre-emptive multitasking and memory protection are among the latest cutting-edge features to be found only in Apple's research labs. Not quite. Not only have these two topics been covered in great length in many books for at least fifteen years, but any Computer Science student specialising in operating systems will have written either a task manager or a memory manager (or both) as a three month project. The usual assignment consists, for a task manager, of a full-featured multi-threading, multitasking kernel with at least one CPU allocation strategy if not several. As for the other, it would be the implementation of a complete segmented and paged memory manager. And of course in these three months a group of two or three students would have written full documentation for the project explaining the rationale of the different strategies chosen.
If Apple was used as an example it is not the only culprit: just look at Windows 3.1 and 95 for probably the most widespread use of antiquated technology. Where are all the Computer Science students going? Do they prefer to stay in the research labs? And who are all the developers employed by these large companies who should know better.
These days all operating systems should have a decent multi-threaded kernel and virtual memory with pagination. The war between OSs should happen at another level and by that I don't mean which one crashes fewer times per day. To quote GNU's Richard Stallman: ‘By definition, a properly functioning kernel doesn't allow user programs to make it crash unless they say “please”’.
(C)1996, Centaur Communications Ltd. Reproduced with the kind permission of EXE Magazine.