# > # > > (e-mail address removed) (Russ) wrote:
# > > # Here is a question for the programming language historians out there.
# > > # Can anyone tell me which "major" language first introduced the
# > > # convention of terminating each statement with a semicolon? Was it C by
# > > # any chance? Thanks.
# > >
# > > Change '{' to 'BEGIN', '}' to 'END', ';' to '$', and you've recreated
# > > Jovial syntax. As the original definition of structs where field names
# > > where unqualified by the struct name was also taken from Jovial TABLEs.
# The last statement is correct, but not everybody knows from which version
# of Algol, Jovial is a descendent. It comes from Algol 58 that only
It's more than that. In Algols and Pascal, ';' is a separator so you have
if p then x else begin y; z end; w
In PL/I, it's a terminator so you have something like (if I remember PL/I)
if p then x; else do; y; z; end; w;
In Jovial, '$' is a statement terminator except for blocks which have no
terminator. This is what was used in C
if (p) x; else {y; z;} w;
Note the relation of ';' to 'else' and 'end' (or '}').
It makes sense for keypunching, but it's not necessary for keyboarding.
(Inserting and removing a statement on a punch cards from a deck, or
adding/deleting begins and ends does not require repunching existing cards
in Jovial.)