December 1968 Radio-Electronics
[Table of Contents]
Wax nostalgic about and learn from the history of early electronics.
See articles from Radio-Electronics,
published 1930-1988. All copyrights hereby acknowledged.
|
If you were around
during the Y2K
era, which was from about the middle of the 1990's through the last day of the
20th century, you had to have heard about the looming disaster being caused by
outdated computer software, hardware, and firmware that would not be capable of
properly handling the rollover of dating years from 19xx to 20xx. The
programming languages mentioned in this 1968 "Computer Lingo - Today's New Machine Languages"
Radio-Electronics magazine articles were all still present to some
degree at the end of the 1900's. One of the biggest problems was that limited
size data fields (often 8-bit words) led many - actually most - early mainframe
systems to assume the "19" part of a year, so after midnight of December 31st,
1999, the next day would be interpreted as January 1st, 1900 rather than 2000.
Any date-dependent function would fail utterly, and possibly cause a
catastrophic result. Electric grids, waterworks, industrial processing plants,
accounting departments, and other such entities would be in chaos. The problem
was not limited to large mainframe computers. Many embedded processors in
systems and individual products were destined to fail as well. Even personal
computers would suffer date-related failures. Three kind of people were involved
in the Y2K era - oblivions who never heard of Y2K or didn't care, end-timers who
made money off of scaring people into preparing for the end of the modern world,
and technologists who did the heavy lifting involved in mitigating the issue so
the other two types could continue living comfortable lives. You have to admit
that part of the reason very few major problems occurred at the millennial
midnight roll-over was due to the panic caused by the survivalist crowd which
motivated politicians and bureaucrats to throw resources at the problem.
Computer Lingo - Today's New Machine Languages
Communicating with the computer via a Video Data Terminal, a
Dodge claims supervisor in Philadelphia updates 50,000-mile warranty information
in Chrysler's Detroit computer. RCA
By Matthew Mandl, Contributing Editor
Digital computers are being use in ever-increasing numbers in business data processing,
in industrial control and in scientific laboratories. They are vital to the military
as well as for the guidance systems of space explorations. With this sharp upward
trend in computer use, the demand for computer programmers is at an all-time high.
Estimates state that over 500,000 people are already engaged in some form of computer
programing or operation, and another 250,000 will be needed within the next few
years. And this is only in the United States.
A programmer tells the computer of the particular problem or data to be processed,
indicates the methods to be used and debugs faulty programs. He communicates with
the computer by using the "language" the computer understands or a mathematically
oriented or business-type "language," which is translated into the computer's basic
language.
The Binary Code
Digital computer circuits operate in only two states: the diodes or transistors
are either on or off. This assures accuracy and reliability because changes in transistor
characteristics or other solid-state devices do not affect the two states unless
the component shorts or opens. The two states represent digits 1 and 0 - hence digital
computer.
The use of only 0 and 1 requires a binary-type math with a base 2 instead of
base 10, as in our ordinary numbering system. This binary code is the basic language
of all digital computers. The following table shows binary numbers ranging in value
up to 19.
Note the pattern of the binary sequence. In
the right-hand column (first place) the 0's and 1's alternate; in the second column
from the right the 0's and 1 's are paired, while in the third column from the right
the sequence down the column is four 0's, four 1 's, etc. Subsequent columns follow
the same pattern related to the sequence 1, 2, 4, 8, 16, 32, 64, etc. Thus the fifth
column from the right would have 16 0's, followed by 16 1 's, etc. Knowing this
principle enables you to expand the table easily,
The computer uses this binary code to identify storage locations, to identify
instructions from the programmer regarding how to process data and to make computations
directly. Programs consist of a sequence of instructions, each accompanied by a
storage address or explanatory number. Thus, the binary numbers 000100 and 000101
might mean, "add to the accumulator the number in storage location 5." The first
binary number, 000100, is the "add" instruction and the second number the address
of the number to be added. Another set, such as 101010 and 001000 may indicate a
shift command. Thus, the binary 101010 instructs the computer to shift a number
right, while the binary 001000 indicates an 8-place number shift.
Octal Code
Since the early days of digital computers, design engineers have strived to simplify
the programing processes. Binary code becomes cumbersome when large numbers are
involved, such as 101101 = 45, and 1000110 = 70. Thus, if 70 meant "subtract" we
would have to convert it to its binary form. While there are various methods (including
conversion tables) to find binary equivalents, much time is wasted. A simpler method
is to group the binary digits into sets of three to form what is known as the octal
code, as shown in the following examples:
101 101 = octal 55 (true value 45)
001 110 = octal 16 (true value 14)
101 001 011 = octal 513 (true value 331)
Thus, all instructions and storage addresses can be in octal coding to expedite
entries. Often the push buttons on the computer console are in groups of three to
facilitate punching in numbers. If the computer binary address value of 331 is needed,
you would be given octal 513 instead. By entering a binary 5, followed by a 1, and
a 3, we have 101 001 011. The computer senses this as 101001011, which has the true
value of 331.
Binary and octal codes permit us to enter programs at the computer console and
examine numerical binary displays for checking the status of a program or process.
It would be much more convenient, however, if we could do without the binary or
octal numbers for the programming instructions.
Fig. 1 - Step sequence for translating mnemonic and SPS programs
into binary language. initial program is punched on cards or tape, which are read
by compiler. The Computer then reads the object deck generated by the compiler.
Mnemonic or SPS Language
We could save programing time if we could use the actual words add, multiply
and divide, or abbreviations of them in our instructions to the computer. To do
this we must use some sort of translating system to tell the computer that add means
binary 100, and shift means binary 101010, etc. This is done by using capitalized
abbreviations such as MPY for multiply, DIY for divide, etc. We could also use just
A for add, S for subtract, M for multiply or D for divide. Such coding is also known
as mnemonic (aid-to-memory) or SPS (symbolic program system). Thus, a simple program
for adding of 5 + 3 would be:
LDA 50 (Put the 5 into accumulator)
ADD 51 (Add 3 to accumulator contents)
STP 00 (Stop computation)
In this example, the 5 would have had to be placed into storage location 50 and
the 3 into 51. Also, the entire program would have been stored within the computer's
memory earlier. Once the data and program are loaded, the program initiating button
is depressed and the program run. Thus, the addresses in which the program itself
is stored must also be indicated, as shown in the following example, where a print-out
instruction is also included:
The translating of mnemonic and SPS programs into machine (binary) language is
done by assembler programs, which also select storage locations automatically. The
program is punched on cards or paper tape and fed into the assembler. Another deck
of cards is automatically punched containing the binary-language equivalent, and
these cards are read by the computer. The initial stack of cards which contains
the mnemonic program is called the source deck, and the resultant cards from the
assembler program are called the object deck. These terms are also used for other
language procedures, as shown in Fig. 1.
FORTRAN Language
The word FORTRAN is an acronym formed by using the letters from the phrase: FORmula
TRANslator. It is a mathematically oriented computer language that permits us to
make math statements almost in the same form as the original equation. A special
translator (called a compiler) selects appropriate storage locations and converts
the FORTRAN into machine language to be processed by the computer.
Though programing math with FORTRAN is easier than with the mnemonic coding method
(particularly for complex math equations), a number of rules must be observed. Among
them are that all capital letters must be used, and that multiplication is expressed
by an asterisk (*). Divide is shown by using the slash (/) and exponents are identified
by a double asterisk (**). Thus, if we wanted to indicate the equation (a - b)c2
it would appear as:
(A -B) * C ** 2
Similarly; the FORTRAN expression for the equation y = (a + b)/c would be written
as:
Y = (A+B)/C
Such statements are not, however, the complete program - but only the mathematical
portion. The computer must be told what values (a, b, etc.) to read, in what manner,
and what is to be printed out. The complete program would have the following:
READ 1, A, B, C
Y = (A+B)/C
PRINT 2, Y
STOP
1 FORMAT (3F10.4)
2 FORMAT (F12.4)
END
The READ statement tells the computer to read three variables (from cards or
tape) designed as A, Band C, in the manner designed by a later FORMAT statement
identified by the 1 preceding it. Thus, if we check with the FORMAT statement identified
by the "1" we find that three variables are involved (the "3" in 3F104) and that
the field width (F) is 10 characters, with four characters pointed off. The PRINT
statement indicates the answer (Y) is to be printed out as identified by FORMAT
2. The latter states that 12 total characters are to be allocated, with four decimal
places.
A compiler is used to translate, and the program (on the source deck) is translated
into machine language on the object deck. As with the assembler, the object deck
is fed into a card or tape reader and then into the computer for processing. In
the FORTRAN program, STOP tells the computer when to stop computation, and END tells
the compiler the program is finished.
Other statements are used in FORTRAN to permit the computer to undertake "decision"
type operations, modify the program as required and perform other manipulations.
Program errors are sensed by the compiler and clues printed out so that the programmer
can locate the errors or note the use of incorrect statements.
COBOL Language
As with FORTRAN, the word COBOL is an acronym made up of the initial letters
of the phrase: Common Business Oriented Language. Like FORTRAN. COBOL can be used
with any computer if the proper compiler is used for translating it into machine
language.
Programs are constantly being developed to solve new problems.
IBM
COBOL uses the English language directly and is made up of selected words to
express the series of operations which the computer is to execute in business data
processing. Hence, COBOL uses letters, numbers and punctuation marks to form descriptive
or instructional sentences. However, COBOL must be written by following certain
rules, just as our English language uses rules of grammar. Curiously, when a written
COBOL program is examined by a nonprogrammer he can understand most of the commands
and data descriptions, but could not write such a program without knowing the rules.
Verbs are used for instructional commands, and nouns for denoting the nature
of the data to be processed. Capital letters are used, such as READ, WRITE, OPEN,
CLOSE, DISPLAY, etc. for verbs. Nouns would include FILE, PAYROLL, INVENTORY, etc.
The verbs ADD, SUBTRACT, MULTIPLY and DIVIDE can also be used, or as in FORTRAN,
signs such as "+", "-", "*", and "/" are valid.
COBOL programing consists of an identification division which describes the nature
of the program - a configuration section, describing computer equipment to be used;
a data division which identifies data sources, and a procedure division which spells
out to the computer what processes are to be performed. A typical program section
for the latter would appear as:
PROCEDURE DIVISION.
START. OPEN OUTPUT PAYROLL-FILE.
READ·IN. READ PAYROLL-FILE RECORD.
COMPUTE WITHHOLDING-TAX.
Hyphens and periods must be used according to COBOL rules and can't be changed
arbitrarily.
Program Language
The newer PLII language was introduced early in 1966 by IBM and is intended to
be a universal-type computer language. It retains some of the basic features of
both FORTRAN and COBOL and can handle either mathematical or data-processing programs.
A compiler, suitable for PL/I must, of course, be used for translating this language
into machine language.
In PL/I statements are written on a single line as in FORTRAN, and parenthesis
are used (not brackets). Thus, Y = a+b/a-b becomes:
Y = (A + B)/(A - B);
Note that a semicolon is used to indicate statement end instead of the period.
As with COBOL, verbs and nouns are used to indicate instructions or descriptions.
For example:
DECLARE (COST, PRICE, DISCOUNT);
COST = PRICE - DISCOUNT;
These two statements tell the computer that we are "declaring" that the program
concerns cost, price and discount rates. Then we tell the computer that it determines
cost by subtracting the discount from the price. Actually you could declare any
name you wish and the computer will reserve a storage area for it and act accordingly
when the same word is used again later in the program. Thus, you could even declare
PHILODENDRON or OSHKOSH and the computer will accept them on your say-so and process
them as you wish!
Also, in PL/I the programmer may insert any comments he wishes into a program
and can specify that such comments are not to be acted on by the computer, but are
just for the programmers information. He does this by using the symbols "/*'' before
the comment and ending it with "*/". Thus, anything stated within these "/*" and
"*/" signs are ignored by the computer.
Other Languages
The most widely used computer programing languages today are FORTRAN and COBOL.
PL/I is making some inroads, but is still too new to be universally accepted or
used. In certain specialized areas, however, other programing languages are used.
ALGOL (algebraic-oriented language) has been popular in Europe and also used to
some extent in America. FORTRAN IV, however, incorporates some aspects of ALGOL
and is, of course, also a mathematically oriented computer language. Others are
MAD (Michigan Algorithm Decoder) and JOVIAL (Jule's Own Version of International
Algebraic Language). All have specific rules and the written program must follow
them to be valid.
A mathematical programmer does not have to solve an equation (the computer does
this) but he should know how to set it up in the algorithm (format) most suitable
to computer processing. Similarly, a data-processing programmer doesn't have to
know accounting, but a fundamental knowledge of business operations and basic bookkeeping
is certainly helpful.
Where can you learn programing? At trade schools (advertised in this magazine);
at technical schools, community colleges, business colleges, and many other institutions
of learning. Leading computer companies also offer courses and often give aptitude
tests in logic to determine your ability and leanings toward this interesting and
lucrative profession.
Numerous textbooks are available from various publishers on all aspects of programing.
Many such books are of the "programed" type, which are intended for self-instruction.
(Actual exposure to the operating principles of a computer is, of course, extremely
helpful.) If you like checkers or chess as well as other games of logic, you might
be a natural!
See page 89 for a list of schools offering courses in computer technology and
programing.
p.89
Here is a partial listing of specialized schools that offer courses in computer
technology and programming.
American School
Drexel Ave. at 58th St.
Chicago, Ill. 60637
Automation Training, Inc.
5701 Waterman Ave.
St. Louis, Mo. 63112
Britannica Institute for Executive Development
425 North Michigan Ave.
Chicago, Ill. 60611
Business Electronics
209 W. Jackson Blvd.
Chicago, III. 60606
Canadian Institute of Science & Technology
263 Adelaide St. W.
Toronto, Ont., Canada
Capitol Radio Engineering Institute
3224 16 St., N.W.
Washington, D.C. 20010
Central Technical Institute
1644 Wyandotte St.
Kansas City, Mo. 64108
Cleveland Institute of Electronics
1776 E. 17th St.
Cleveland, Ohio 44114
Commercial Trades Institute
1400 W. Greenleaf Ave.
Chicago, Ill. 60626
Cook's Institute of Electronics Engineering
P.O. Box 10634
Jackson, Miss. 39209
DeVry Institute of Technology
4141 Belmont Ave.
Chicago, Ill. 60641
Elkins Institute
2603 Inwood Rd.
Dallas, Texas 75235
Grantham School of Electronics
1505 N. Western Ave.
Hollywood, Calif. 90027
Hill's Business University
920 N. Robinson Ave.
Oklahoma City, Okla. 73102
International Correspondence Schools
Scranton, Pa. 18515
LaSalle Extension University
417 S. Dearborn St.
Chicago, Ill. 60605
Massey Technical Institute, Inc.
148 East 7th St.
Jacksonville, Fla. 32206
Midwest Automation Training - Kansas City, Inc.
2022 Main St.
Kansas City, Mo. 64108
National Radio Institute
3939 Wisconsin Ave., N.W.
Washington, D.C. 20016
National Technical Schools
4000 S. Figueroa St.
Los Angeles, Calif. 90037
Northrop Institute of Technology
1199 W. Arbor Vitae
Inglewood, Calif.
Philco Technical Institute
219 N. Broad St.
Philadelphia, Pa. 19107
RCA Institutes, Inc.
320 West 31st St.
New York, N.Y. 10001
Sams Technical Institute, Inc.
1720 E. 38th St.
Indianapolis, Ind.. 46218
Technical Training International, Inc.
10447 So. Torrence Ave.
Chicago, Ill. 60617
Posted December 13, 2022
|