Introduction: Computers

A computer is a machine that can do very quickly computations that each are very simple. By combining these simple tasks, it achieves somehow more complicated ones, but with great difficulty. It is thus very opposite with respect to this, to human collaborators, who can do complex tasks, but slowly, and can do a lot of mistakes when accomplishing simple computations.

Software is the combinatorial part of computers. It allows all useful jobs to be done, and all human-computer interaction to happen. But building all computer software from scratch is no task for everyone; people always write software from some commonly known state, called system software; they also almost always use a computing system (most often the same) for this.

This paper aims at demonstrating that while currently available computing system software provide a lot of expedient services, their low-level structure forbids them to provide useful services, and leads to huge, inefficient, slow, unusable, unportable, unmaintainable, unupgradeable, software. This paper tries to explain why the current design of "system software" is deeply and unrecoverably flawed, and proposes a new way for designing computing systems such as to achieve real utility, using only well-known available (though sometimes deprecated) techniques.



  • Next: I. Operating Systems and Utility

  • Up: Table of Contents


    Faré -- rideau@clipper.ens.fr