Chapter 1. Introduction

Table of Contents
1.1. Special-Purpose Languages
1.2. Real Time
1.3. Syntax
1.4. Implementation

It is virtually impossible to design a standard language such that programs will run with equal efficiency in all types of computer and in any applications. Much of the design of Coral 66 reflects this difficulty. For example, the language permits the use of non-standard code statements for any parts of a program where it may be important to exploit particular hardware facilities. A special feature is scaled fixed-point for use in small fixed-point machines; the floating point facilities of the language can be omitted where hardware limitations make the use of floating-point arithmetic uneconomical. Other features also may be dropped without reducing the power of the language to an unacceptably low standard. Some reduced levels of implementation are suggested in Appendix C to this definition.

1.1. Special-Purpose Languages

A clear distinction must be made between general-purpose languages for use by skilled programmers, and more limited languages designed to incorporate the inbuilt assumptions of specialized applications or to make direct computer access practical for the non-specialist user. Coral 66 belongs to the first category. Languages in this class are suitable for writing compilers and interpreters as well as for direct application. Special-purpose languages can therefore be implemented by means of software written in Coral 66, backed up as required with suites of specialized macros or procedures. It is largely for this reason that the facilities for using the procedures have been kept as general as possible. The main differences between Coral 66 procedures and those of Algol 60 lie in the replacement of the Algol 60 dynamic name parameter by the more efficient location or reference parameter used in Fortran, and the requirement to declare recursive procedures explicitly as such, again in the interest of object-code efficiency.