Advertisement

A imaginary number system

For centuries the decimal number system reigned supreme, except, perhaps, among the Mayan Indians, until the advent of digital computers brought the binary and octal systems into the limelight. This paper introduces another number system which may prove useful for manipulating complex numbers on machines.

Syntactic and semantic augments to ALGOL

The purpose of this paper is to propose a set of syntactic and semantic augments to ALGOL. The proposed extension are designed to facilitate the description of “string” manipulation in that language; they do not constitute a comprehensive language for symbol manipulation. Several such languages (LISP, IPL, …) already exist—many more will be designed and advantageously used in the future. It is felt that such languages belong in the repertoire of some language-system which contains a hierarchy of languages as well as nested “continua” of languages. In such systems, new languages may be embedded, appended, extracted at will. The fact that ALGOL is, implicitly, such a language-system seems to be only dimly recognized, even by designers. In any event, what is proposed in the sequel is not a language for symbol manipulation—qua language; but rather, a set of obvious extensions to the “algebraic-language” portion of ALGOL. To be sure, these extensions are complete in the sense that they are sufficient to describe symbol manipulations, but after all, the same statement holds for machine-language. Moreover, the extensions do not constitute a minimal set of primitives for string or symbol manipulations—in the sense that complementation, shifting, … are primitives for machine arithmetic. Such primitives are essential only to machine designers (including designers of “augmented machine”, the basic machine augmented by subroutines for arithmetics not included in the hardware); to append only such primitives to ALGOL is to visit the omissive sins of the machine designers upon the users of ALGOL.

Decoding combinations of the first n integers taken k at a time

The following problem arose in connection with some studies involving game programming: the representation of any position in the game tree was formed by a sequence of k different integers selected from the first n integers. It was desired to decode any of these representations to a unique memory address such that all such addresses formed a compact group in the memory. Mathematically, the problem was to find a transformation of the representation such that any of the n!/(n - k)! sequences transformed uniquely to one of the set of integers from 0 to [n!/(n - k)! - 1]. A procedure for this is described here.

Macro instruction extensions of compiler languages

Macroinstruction compilers constructed from a small set of functions can be made extremely powerful. In particular, conditional assembly, nested definitions, and parenthetical notation serve to make a compiler capable of accepting very general extensions to its ground language.

A control system for logical block diagnosis with data loading

This paper describes a section of an integrated diagnostic monitor system which facilitates the checking of sections of instructions or subroutines anywhere in the object program. A new method of specifying all diagnostic operations in a format similar to a computer program makes the system convenient to use and relatively simple to understand. The paper also describes a number of other novel diagnostic features which can be included in the system.

A note on the use of the Abacus in number conversion

Conversion of integers in both directions between the base ten and any desired base can be accomplished with remarkable simplicity by use of the abacus. In fact, the conversion procedures are far more cumbersome on the electric desk calculator, for reasons which will be apparent.

An algorithm defining ALGOL assignment statements

It is not possible, by testing symbol pairs only [2], to determine whether a given symbol string is consistent with the formation rules of ALGOL [1]. For example, the formula l1: l2: x[i := 5j + 3.14.159; violates four distinct formation rules of ALGOL, yet each pair of adjacent characters may appear in permissible formulae. The algorithm described here will determine, with minor restrictions, whether a particular symbol string is a permissible ALGOL assignment statement. I believe that the same technique may be extended to determine whether a given symbol string is a permissible ALGOL program or not, where a program is defined as a sequence of permissible statements separated by semicolons. The algorithm scans the formula from left to right, replacing certain character pairs by single characters. If under the allowable transformations the symbol string may be reduced to the single character &Sgr;, it is a well-formed formula in ALGOL; otherwise it violates the formation rules.

The basic side of tape labeling

Once an installation has determined that it would be advantageous to be able to internally identify the contents of each reel of tape on hand and to be able to check those identifications by programming, consideration is given to a Tape. Labeling Routine. The parameters of such a routine are limited only by the inventiveness of the programmers of the installation as they request (and frequently demand) that the label on the tape contain block counts, can numbers, pass tallies, messages, reminders, first names, last names, number of tape inches available, security classifications, unit the tape is to be mounted on, and hundreds of other “necessary” pieces of data which will serve to illustrate the complexity of data processing. The routine which is to translate these labels is oftentimes encumbered with brilliant formulas which enable it (if it can ever be completely debugged) to manipulate the information and make decisions of astounding magnitude. What little core memory space remains is then used to process the data in the file which the label identified.

Selfcipher: programming

Selfcipher is a programming system designed to provide a quasi-actual language for preparing programs automatically for large scale digital computers.

Marriage—with problems

In Newark, New Jersey, Federal Pacific Electric Company operates a complex of modern plants producing specialized electrical equipment for construction and industry. From its assembly lines pours an assortment of packaged products for the distribution and control of electric power—circuit breakers, load centers, switches, motor control, instruments—more than 2000 catalog items, ranging in price from one to several hundreds of dollars. Federal Pacific also operates an international network of other plants producing engineered electrical equipment approaching in bulk the size of a house, but these are not warehouse items and, as such, are not relevant to today's discussion.

Comments on a recent paper

Mr. Diran Sarafyan, in his paper “A New Method of Computation of Square Roots Without Using Divisions” (Communications, Nov. 1959) gave a way of computing square roots which converges faster than the standard Newton method. His technique can be generalized as follows.  

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More