A proposal for input-output conventions in ALGOL 60
May 1964 - Vol. 7 No. 5
Features
The ALGOL 60 language as first defined made no explicit reference to input and output processes. Such processes appeared to be quite dependent on the computer used, and so it was difficult to obtain agreement on those matters. As time has passed, a great many ALGOL compilers have come into use, and each compiler has incorporated some input-output facilities. Experience has shown that such facilities can be introduced in a manner which is compatible and consistent with the ALGOL language, and which (more importantly) is almost completely machine-independent. However, the existing implementations have taken many different approaches to the subject, and this has hampered the interchange of programs between installations. The ACM ALGOL committee has carefully studied the various proposals in an attempt to define a set of conventions for doing input and output which would be suitable for use on most computers. The present report constitutes the recommendations of that committee.
On declaring arbitrarily coded alphabets
The inability of existing programming languages to handle character strings from more than one or two alphabets is mentioned and a scheme for declaring additional alphabets is proposed. The scheme provides for: many-to-one encodings, right or left justification, collating sequences different from numeric sequence, variations in character size (number of bits) from alphabet to alphabet, and arbitrary source-language character representation.
An experiment in a user-oriented computer system
A version of a software-hardware system for the purpose of facilitating the programming and analysis of well-formulated problems is described. A modified Flexowriter is used to generate computer-acceptable input when equations or computable requests are typed in much the same manner as they would appear in conventional mathematical texts. The typing and language rules are quite flexible and unrestrictive. While the compiler part is efficient, the system as a whole has much broader aspects as a tool for the study of problem solving and self-teaching systems.
A fast procedure for generating exponential random variables
A very fast method for generating exponential random variables in a digital computer is outlined.
An improved equivalence algorithm
An algorithm for assigning storage on the basis of EQUIVALENCE, DIMENSION and COMMON declarations is presented. The algorithm is based on a tree structure, and has reduced computation time by 40 percent over a previously published algorithm by identifying all equivalence classes with one scan of the EQUIVALENCE declarations. The method is applicable in any problem in which it is necessary to identify equivalence classes, given the element pairs defining the equivalence relation.
Computer-usage accounting for generalized time-sharing systems
The current development of general time-sharing systems requires a revision of accounting procedures for computer usage. Since time-sharing system users operate concurrently, it is necessary to be more precise as to the amount of computer time and storage space that a user actually utilizes. The various cost factors which should be considered for computer usage accounting in generalized time-sharing systems are discussed.
A method for comparing the internal operating speeds of computers
First, a table of frequencies of various types of operations is prepared based on experience in similar applications or, perhaps, on actual counts if these are available. Table 1 shows such a frequency table. Next, the total weighted execution time for a given operation type is obtained by multiplying the time required for the operation by the frequency count. Finally, an “average” operation time is calculated by summing overall operation types and dividing by the sum of the frequency counts. Table 2 shows the computation for the IBM 7090.
Table 3 shows a comparison of average and relative speeds for several current computers for the particular application using the IBM 7090 as a reference base.
Expand, a system for input card replication
In an effort to reduce the volume of card handling at our installation, our operating system [1] was modified to include an EXPAND feature. The function of EXPAND is to eliminate the necessity of reproducing a card or a group of cards of the input dock to any particular job. Once a group of cards appears in an input deck, they may be caused to reappear subsequently by the inclusion of a single control card which calls for the “insertion” of cards by sequence numbers or letters. The user is permitted to specify minor modifications to the cards as they are being inserted. Hence, the user may easily run parameter studies, insert similar EQUIVALENCE, COMMON and DIMENSION statements in a multisubroutined FORTRAN program, or specify similar regions on a large mesh such as is needed for a thermal or nuclear study. Note also that when it is necessary to change a deck and rerun, it is only necessary to repunch the original card—every reappearance caused by EXPAND automatically reflects the new card.
The FORTRAN II CHAIN feature on the 7090 can be used to save card-to-tape time, loading time, and to provide a convenient method for storing and transporting producting programs. The method is simply to load the desired program as a CHAIN and save the tape on which it is stored. A trivial program can then be used to recall the major program.
Picture generation with a standard line printer
A method is described for producing gray-toned pictures on a line printer by utilizing the different degrees of blackness of standard print characters. Gray scales with 17, 32 and 64 levels have been devised. Scanned images of blood cells are used to display the technique.