The purpose of a programming system is to make a computer easy to use. To do this, it furnishes languages and various facilities that are in fact programs invoked and controlled by language features. But these facilities are bought at a price: the external description of a programming system is ten to twenty times as large as the external description of the computer system itself. The user finds it far easier to specify any particular function, but there are far more to choose from, and far more options and formats to remember. Ease of use is enhanced only if the time gained in functional specification exceeds the time lost in learning, remembering, and searching manuals. With modern programming systems this gain does exceed the cost, but in recent years the ratio of fain to cost seems to have fallen as more and more complex( ) have been added. Because ease of use is the purpose, this radio of function to conceptual complexity is the ultimate test of system design. Neither function alone nor simplicity alone( ) a good design. This point is widely misunderstood. Function, and not simplicity, has always been the measure of excellence for its designers. As soon as ease of use is held up as the criterion, each of these is seen to be( ) , reaching for only half of the true goal. For a given level of function, however, that system is best in which one can specify things with the most simplicity and straightforwardness. ( ) is not enough. Mooer’s TRAC language and Algol 68 achieve simplicity as measured by the number of distinct elementary concepts. They are not, however, straightforward. The expression of the things one wants to do often requires involuted (复杂的)and unexpected combinations of the basic facilities. It is not enough to learn the elements and rules of combination; one must also learn the idiomatic usage, a whole lore of how the elements are combined in practice. Simplicity and straightforwardness proceed from conceptual( ) . Every part must reflect the same philosophies and the same balancing of desiderata. Every part must use the same techniques in syntax and the analogous notions in semantics. Ease of use, then, dictates unity of design, conceptual integrity.