In the forty years that the modern electronic computer has existed it has gone through several phases. The third generation computer of today is far removed in sophistication from the early first generation machines. In just the same way as the hardware of these machines has changed or been enhanced through the years, so has the associated software on them. The early computers required the programmer to use machine language or even set switches on the machine, while today the programmer can often use one of several high level programming languages.
Whereas the early machines were used mainly for number crunching, the computer of today is asked to perform a multitude of tasks. To cater for these wide and varied applications the programming languages of today have themselves divided into several areas. Each area designed to support a certain application. There are languages to support numeric scientific problems (e.g. Fortran), data processing processing problems (e.g. Cobol) and list processing (e.g. Lisp) to name but a few. In the course of this thesis one of these applications, that of implementing operating systems, will be covered along with the corresponding languages that have been developed to support it. [FROM INTRODUCTION]