ArticleslgStudy

science

GEORGE (programming language)

GEORGE (programming language) is a science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand GEORGE (programming language) rather than just read about it. In short: GEORGE (General Order Generator) is a programming language invented by Charles Leonard Hamblin in 1957. It was designed around a push-down pop-up stack for arithmetic operations, and employed reverse Polish notation.

Key takeaways

  • GEORGE (programming language) belongs to science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect GEORGE (programming language) to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of GEORGE (programming language) from memory before moving on to harder problems.

Reference excerpt

GEORGE (General Order Generator) is a programming language invented by Charles Leonard Hamblin in 1957. It was designed around a push-down pop-up stack for arithmetic operations, and employed reverse Polish notation. The language included loops, subroutines, conditionals, vectors, and matrices.

Description Algebraic expressions were written in reverse Polish notation; thus, a + b {\displaystyle a+b} was written a b +, and similarly for the other arithmetic operations of subtraction, multiplication, and division. The algebraic expression a x 2 + b x + c {\displaystyle ax^{2}+bx+c} was written a x dup × × b x × + c +, where 'dup' meant 'duplicate the value'. Following the reverse Polish form, an assignment statement to evaluate the formula y = a x 2 + b x + c {\displaystyle y=ax^{2}+bx+c} was written as a x dup × × b x × + c + (y). The computer evaluated the expression as follows: the values of a, then x, were pushed onto the top of the accumulator stack; 'dup' caused a copy of the top-most value (x) to be pushed onto the top of the accumulator stack; Multiply (×) caused the top two values, namely, x and x, to be removed (popped) and multiplied, returning the product to the top of the accumulator stack. The second multiply (×) then caused the top two values on the stack (namely, a and x**2) to be popped and multiplied, and the product (a×x**2) to be pushed onto the top of the accumulator stack. And so on the remaining components of the expression. The final operation, namely (y), returned the value of the expression to storage without changing the status of the accumulator stack. Assuming that the value on the top of the accumulator stack was not required immediately, it would be removed (cleared) by using the operator (;). The following program reads in eight values and forms their sum:

0, 1, 8 rep (j) R + ] (P)

The first line initialises the sum by pushing the value zero onto the top of the accumulator stack. The second line introduces a loop, is spoken as "for 1 to 8 repeat for j", and is terminated by the square bracket. In the third line, R causes one number to be read in and pushed onto the top of the accumulator stack, and the plus sign (+) causes that value to be added to the (partial) sum, leaving only the partial sum on the top of the accumulator stack. After the loop terminates, the (P) causes the final sum to be punched on a card. Manipulation of vectors and matrices requires subscript notation. In GEORGE, the subscript(s) preceded the vector or matrix name. Thus A(j) was written j | A. The following program reads in vector a of 10 values, then forms the squares of those values, and finally prints those values.

1, 10 R1 (a) 1, 10 rep (j) j | a dup * j | (a) ; ] 1, 10 P1 (a)

In the program, the first line is a vector read that reads in the ten values into a(1) through a(10). The second line introduces a loop to run through the ten values of j. The third line fetches a(j), duplicates it, multiplies those two values giving the square, and then stores it in a(j). Note the semicolon (;), which clears (or cancels) the top entry in the accumulator stack. Were this not done, the accumulator would gradually fill up with the squares of the values. The final line is a vector punch (i.e., print) to write out the ten squares.

The above GEORGE coding table assisted in transcribing a program onto punch cards. Conditional operations were written as jumps, as follows: if a > 0 go to 5 (which transfers to label 5 if a is greater than zero) would be written

0 a > 5 ↑ Label 5 was indicated by including *5 elsewhere in the program. Unconditional transfers were written 5↑ Subroutine calls were made with the down arrow, .g., to call subroutine labelled 17, write 17↓, where the label 17 was encoded using column 3 of the above table.

Historical note In the first version running by May 1957 on an English Electric DEUCE, all values were stored in binary fixed-point form in a 32-bit word, with 16 binary places. In the second version introduced by 1958, values were held in floating-point form, with one value per word: 22 bits for the mantissa and 10 bits for the exponent. Some form of coding table was needed because the printing equipment of the time provided only 26 letters of the alphabet, a decimal point, plus sign, minus sign, and slash.

References

Worked examples

Example 1 — a first encounter with GEORGE (programming language)

Start with the simplest possible case. Write down what GEORGE (programming language) claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to GEORGE (programming language) before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about GEORGE (programming language) ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of GEORGE (programming language)

In research
GEORGE (programming language) appears in science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses GEORGE (programming language) in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
GEORGE (programming language) is common in secondary-school and first-year university syllabi. It links to neighbouring topics Programming languages, Programming languages created in 1957, Stack-oriented programming languages, so understanding it makes those chapters shorter.
In everyday life
Look for GEORGE (programming language) outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.
Ask Teacher Smith questions about this articleOpens your AI tutor with a question about “GEORGE (programming language)” →

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study GEORGE (programming language) in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what GEORGE (programming language) means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain GEORGE (programming language) out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is GEORGE (programming language) in simple terms?

GEORGE (General Order Generator) is a programming language invented by Charles Leonard Hamblin in 1957. It was designed around a push-down pop-up stack for arithmetic operations, and employed reverse Polish notation.

Why does GEORGE (programming language) matter?

Because it connects several science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study GEORGE (programming language)?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on GEORGE (programming language).

Tags

  • Programming languages
  • Programming languages created in 1957
  • Stack-oriented programming languages

Keep exploring