This recommendation defines the CCITT high level programming language CHILL. CHILL stands for CCITT High Level Language.
The following sub-sections in this chapter introduce some of the motivations behind the language design and provide an overview of the language features.
For information concerning the variety of introductory and training material on this subject, the reader is referred to the CCITT Manuals, Introduction to CHILL and CHILL User's Manual.
An alternative definition of CHILL, in a strict mathematical form (based on the VDM notation), is available in the CCITT Manual entitled Formal Definition of CHILL.
CHILL is a strongly typed, block structured language designed primarily for the implementation of large and complex embedded systems.
CHILL was designed to:
- enhance reliability and run time efficiency by means of extensive compile-time checking;
- be sufficiently flexible and powerful to encompass the required range of applications and to exploit a variety of hardware;
- provide facilities that encourage piecewise and modular development of large systems;
- cater for real-time applications by providing built-in concurrency and time supervision primitives;
- permit the generation of highly efficient object code;
- be easy to learn and use.
The expressive power inherent in the language design allow engineers to select the appropriate constructs from a rich set of facilities such that the resulting implementation can match the original specification more precisely.
Because CHILL is careful to distinguish between static and dynamic objects, nearly all the semantic checking can be achieved at compile time. This has obvious run time benefits. Violation of CHILL dynamic rules results in run-time exceptions which can be intercepted by an appropriate exception handler (however, generation of such implicit checks is optional, unless a user defined handler is explicitly specified).
CHILL permits programs to be written in a machine independent manner. The language itself is machine independent; however, particular compilation systems may require the provision of specific implementation defined objects. It should be noted that programs containing such objects will not, in general, be portable.