Antiquity of Update Operators 
Author Message
 Antiquity of Update Operators

From time to time we get people saying that C has update operators
like &= in order to match the PDP-11.

Yesterday I was re-reading the paper
        The ``Plankalk\"ul'' of Konrad Zuse:
        A Forerunner of Today's Programming Languages
        by F. L. Bauer and H. W\"ossner
        in the July 1972 issue of CACM (V15.No.7, pp 678--685).

Figure 3, on p683, shows an algorithm for checking the syntax
of Boolean expressions, taking from a 1949 (nine{*filter*} forty-nine)
publication.  It contains the following parts (the circled numbers
appear in the paper, the C code is my annotation):
        (2) | Az(V) >= & R                       R0 &= Az(V0[0])
          V |    o       o
          K |    o      
          S |    s       o

        (6) | Sq(Z,Z) >= & R                     R0 &= Sq(Z0,Z1)
          V |    o 1       o
          K |
          S |    s s       o

        (9) | e > o >= & R                    R0 &= e >= 0
            |   =
          V |            o
          S |            o

       (11) | Sz(Z) >= & R                       R0 &= Sz(Z0)
          V |    o       o
          S |    o       o

       (12) | e = o >= & R                       R0 &= e == o
          V |            o
          S |            o

In Zuse's notation, "expr >= var" is an assignment of the value of
the expression on the left to the variable on the right.  The K line
gives subscripts.  The S line gives types; here "o" means a single
bit (C9x 'bool')  and "s" means an 8-bit string encoding a symbol.
Variables are named by a letter (V for input parameter, Z for working
variable, R for result parameter, C for constant) and a number, which
is givenin the V line.  "&" stands for "and".

This notation _may_ go back as far as 1943.

At least some of the people on the Algol committees were aware of
Zuse's work, and the people who designed C were very much aware of
the Algols, so it is now conclusively shown that this feature of C
goes back to "the very first attempt to design an algorithmic
language" (Rutishauser) and *long* predates the PDP-11 or indeed
almost every computer.

Perhaps this could be added to the FAQ somewhere, under the topic
of "isn't C an assembler for PDP-11s? NO!".

--
Suddenly I realised with a shock that others don't think of
the Egyptian New Kingdom as "modern".
Richard A. O'Keefe; http://www.*-*-*.com/ %7Eok; RMIT Comp.Sci.



Tue, 18 May 1999 03:00:00 GMT  
 Antiquity of Update Operators


-<snip>-

Quote:
> At least some of the people on the Algol committees were aware of
> Zuse's work, and the people who designed C were very much aware of
> the Algols, so it is now conclusively shown that this feature of C

                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Quote:
> goes back to "the very first attempt to design an algorithmic
> language" (Rutishauser) and *long* predates the PDP-11 or indeed
> almost every computer.

Nah, you showed that it is possible or maybe even likely. Perhaps the
designers of the PDP11 knew about Zuze and C was later modelled to fit the
architecture ?  :-)

Another interresting thing is, that if an idea is good or useful, it will
appear in more than one persons mind (given a large enough population
with a similar problemset.)

// Jens M Andreasen



Sat, 29 May 1999 03:00:00 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. update overloading [][] ..working but not with a template operator ..arrrrrrrrrgghghhh

2. comparision operator ignore type cast operators

3. Math operators is C. Exponent operator?

4. Which is faster relational operator or equality operator?

5. VC++ 5.0 ambiguity: conversion operator vs overloaded operator?

6. Comma operator in #define's (was Re: Usage of comma operator)

7. MFC CString operator= conflicts with stl operator template

8. == and != operator (operator overloading)

9. CRecordset->Update(), But no Update

10. SQL/VC++ Updates: Can't update recordset

11. CRecordset::Update() fails while updating long values

 

 
Powered by phpBB® Forum Software