Software Development at the Eckert-Mauchly Computer Company Between 1947 and 1955



Yüklə 1,23 Mb.
Pdf görüntüsü
səhifə6/10
tarix08.08.2018
ölçüsü1,23 Mb.
#61268
1   2   3   4   5   6   7   8   9   10

Iterations – Norberg – Software Development at EMCC 

 11 


Over the next few years, coding or programming became a burgeoning 

area of activity in university computer projects and in the few companies 

focused on machine developments. As Knuth and Pardo summarized in 

1977, the first important programming tools were developed, focused 

initially on “general-purpose subroutines for such commonly needed 

processes as input-output conversions, floating-point arithmetic, and 

transcendental functions.”

30

 In their brief summary of the history of 



compilers, Knuth and Pardo drew attention to two developments of the 

early 1950s: assembly routines and interpretive routines.

31

 The publication 



of the Maurice Wilkes, David Wheeler, and Stanley Gill volume on 

programming in 1951 became a classic in the training of programmers 

over the next decade at least.

32

 An early version of the book reached 



programmers around the world in September 1950. Over the next few 

years, a range of interpretive routines appeared, perhaps the most notable 

for its influence being John Backus’ IBM 701 Speedcoding System, 

published in 1954.  

 

The EMCC group investigated the development of assembly routines for 



use with BINAC and UNIVAC in the late 1940s. Indeed, Knuth and Pardo 

credited Mauchly with development of the first “high-level” programming 

language that he implemented in a program called Short Code,

33

 a 



program that could accept algebraic equations as written and the program 

would perform the indicated operations. William F. Schmitt coded this 

type of problem for BINAC. In 1950, he and Albert B. Tonik recoded the 

program for UNIVAC I, and in 1951 Robert Logan took the task a step 

further.

34

 In this program, the twelve-digit word was broken into six two-



digit packets. This can be illustrated with a simple example.  

 

 



 

Evaluate x = a + b 

 

 

In Short Code: 



 

00 S0 03 S1 07 S2

 

 

S0, S1, and S2 represent the memory locations of the quantities x, a, and 



b, and 03 stands for the operation of equality and 07 for addition. Read 

from right to left S2 is added to S1, which is placed in S0. Thirty 

operations were provided, including bracket indicators for evaluation of 

expressions, floating point arithmetic operations, finding integral roots, the 

basic mathematical functions, use of routines from a library, such as 

trigonometric and logarithm calculations, and input/output operations.

35

 

This program was an effort to introduce more flexibility into problem 



solving. And as long as the problems were small scale in which computer 

time was efficiently used, the code worked well. As the scale of problems 

grew, a point of diminishing returns arose where it was more efficient to 

code in the regular way.  

 

From 1947 on, coders at EMCC developed a number of subroutines for 



both mathematical and business use. By 1951, this number had increased 

to the point where they needed to put some order into them to increase 




Iterations – Norberg – Software Development at EMCC 

 12 


efficiency of use. Hopper took on this task in October 1951, and between 

then and May 1952 she and her associates wrote the first Remington Rand 

compiler A-0.

36

 As Jean Sammet pointed out, “a compiler must perform at 



least the following functions: Analysis of the source code, retrieval of 

appropriate routines from a library, storage allocation, and creation of 

actual machine code.”

37

 From Sammet’s perspective, A-0, developed for 



UNIVAC I does exactly this, and she claimed that A-0 was the first 

compiler. Hopper, however, speaking in 1978, commented on A-0 in the 

following way. 

 

It wasn’t what you’d call [a compiler] today, and it wasn’t what you’d call a 



‘language’ today. It was a series of specifications. For each subroutine you 

wrote some specs. The reason it got called a compiler was that each subroutine 

was given a ‘call word,’ because the subroutines were in a library, and when you 

pull stuff out of a library you compile things. It’s as simple as that.

38

 

 



While the other members of the Applications Department continued their 

work on programs and routines, including diagnostic routines, for 

UNIVAC I, Hopper assumed an interest in what she called “automatic 

programming.” She attempted to meld the operations of the computer 

system and its programs with the use of subroutines. This idea of 

subroutines was exploited at EMCC before she arrived, as we saw above 

in the work of Betty Snyder. Hopper’s contribution was to make it 

possible not just to call up a routine from memory, but, if necessary, 

actually construct a subroutine program from basic mathematical 

information supplied to the system by a mathematician or programmer, 

insert it into a program, and carry out the computation of the needed 

values of the function. After the needed information was inserted into 

memory, it could be delivered at any later time directly by UNIVAC. 

UNIVAC delivered the information necessary to program the computation 

of a function and its derivatives or values. Just as in the case of the 

differentiator, the actual derivation of the function was done by the 

computer system, not by the programmer as before. The process of 

translating a subroutine into a program received the name “compiler.”  

 

When coding the compiling routine A-0 (and A-1), the coder needed to 



keep in mind three sets of memory locations.

39

  



 

(1)  those locations used by the compiler, concerned with compilation, input of 

information and subroutines, and output of running tape and record. 

(2)  those locations used by the running tape, concerned with numerical 

computation, input of numerical data, and output of results.  

(3) 


those locations of the individual subroutines.

  

 



Thus, at any given instant during compilation, a particular word usually 

had at least three addresses associated with it. For a given problem, it was 

assumed there would be four tapes (UNISERVOs) available. Tape number 

1 contained the instructions for compilation and data handling; number 2 




Yüklə 1,23 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə