[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::languages

Title:Languages
Notice:Speaking In Tongues
Moderator:TLE::TOKLAS::FELDMAN
Created:Sat Jan 25 1986
Last Modified:Wed May 21 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:394
Total number of notes:2683

238.0. "demise of Algol 60" by COMICS::DEMORGAN (Richard De Morgan, UK CSC/CS) Wed Jun 21 1989 11:22

    It is with some regret that I announce that BSI IST/5 (the British
    Standards Institution Computer Languages Committee) have voted (for
    an ISO ballot) to discontinue the Algol 60 standard. All three
    co-authors of the standard - David Hill, Brian Wichmann and myself
    put forward this recommendation as we see no likely future
    implementation of the language. [It's a pity that I couldn't get
    dynamic own arrays in it - all three implementations: Burroughs,
    Novosibirsk and DEC do it the same way - it's the only way to do
    Ackermann's function efficiently in a high-level language].
T.RTitleUserPersonal
Name
DateLines
238.1rest in peaceSAUTER::SAUTERJohn SauterThu Jun 22 1989 09:085
    Algol 60 is the ancestor of most modern computer programming languages,
    but I agree that the original has no future.  A language can't compete
    if it doesn't have "modern" I/O facilities.  (INSYMBOL just doesn't
    cut it in commercial shops.)
        John Sauter
238.2TLE::BRETTThu Jun 22 1989 10:065
    Sigh, but all great things must come to an end.
    
    I'm glad I learnt Algol before being brain-damaged by FORTRAN.
    
    /Bevin
238.3TLE::MAILMANSteve MailmanThu Jun 22 1989 13:013
     What are "dynamic own arrays"?
    
    /steve
238.4Farewell, old friendELDRAD::jmartinjOSEPH A. martin, ULTRIX virtual memoryThu Jun 22 1989 13:067
The only reaction I ever got to listing Algol 60 on my resume (here
in the USA):  "That's foreign, isn't it?"

Also, knowing it or knowing of it seems to be another way of showing
my age now.

\Joe
238.5ULTRA::PROBINSONJust causing trouble...Thu Jun 22 1989 18:294
Sigh...  DEC-10 ALGOL had some of the whizziest output format control
features I've ever had the pleasure to use.  (Yeah, I know they
weren't part of the standard...)  It's kind of sad to see -10s and 
ALGOL biting the dust at about the same time.
238.6dynamic own arraysCOMICS::DEMORGANRichard De Morgan, UK CSC/CSFri Jun 23 1989 12:1132
    Dynamic own arrays:
    
    own arrays are different from ordinary arrays in Algol 60 in that
    they are not allocated on the stack, but stay around when the block
    containing their declaration is exited, so that they can be used
    again. The previous standard (Revised Report on the Algorithmic
    Language Algol 60) did not specify whether the bounds had to be
    static (easy to implement), or dynamic (in this case there are two
    basic interpretations - whether they are layed out at their first
    declaration and kept to that size, or whether they can change change
    size when the block is re-entered). We adopted the liberal
    interpretation, consistent with the Burroughs and Novosibirsk
    implementations. That is:
    
    1.  On the first declaration the array is layed out according to
        the bounds given.
    
    2.  On subsequent declarations, the array that lays them out checks
        the bounds to see if they are the same. If so, no action is
        taken.
    
    3.  If the bounds are different, a new array is constructed, the
        elements set to zero of FALSE (which is also zero), then the
        elements common to the old array are copied into it. The space
        used by the old array is recovered (a heap - or more correctly
        a pile was used).
    
    As was pointed out, Algol 60 had no input-output spec in the Revised
    Report - we defined it in the Modified Report.
    
    I have a couple of funny articles about Algol 60/68 - I'll post
    them as further replies.
238.7The Algol MenCOMICS::DEMORGANRichard De Morgan, UK CSC/CSFri Jun 23 1989 12:25133
			THE ALGOL MEN
			-------------

			by W. H. Burge

	Reprinted from Algol Bulletin No. 17, July 1964

They didn't know where they came from when they were born, they called it
"Outside". They did not know when a new person would appear, but noticed that
they only appeared when space was available. All people were born with the same
amount of experience and property which was called an "environment". When they
died, they disappeared, and so did their environment.

There was a ritual called "block enter" which they could perform in order to
use a new body. They stored what was left of the old body and its environment
secretly, so that no one could interfere with it, and lived their life in a
new body. The new body came with a certain amount of experience and property
called its "locals". This was added to the environment of the old body to
produce an environment for life in the new body.

When an incarnated body died, there was another ritual called "block exit" in
which the old body was disinterred, and life continued in this body where it
had left off. The incarnated body disappeared together with its locals.

The process of incarnation was difficult and required much concentration. There
were many people who were born and died without achieving it. These were called
"FORTRANS" and "COBOLS". Some of these were compensated for this by having
other abilities, for instance, the FORTRANS could run fast and the COBOLS could
describe data by a carefully guarded technique only known to them.

Some people who were lucky found that among their possessions in their
environment were bodies called "procedure bodies". They could live in these at
will by using the "block enter" ritual. It was possible to pass property on to
be used in their lives as procedure bodies. This property was called an
"argument".

It required considerable training to keep track of all the interred bodies,
and to chose the correct one to reincarnate by the block exit ritual. This was
made even more difficult by the existence of so-called "recursive" procedure
bodies or Doppelgangers. These routines found themselves in their own
environment. It was clear that when a body incarnated itself, it could not both
bury and use its body (the technique of copying bodies was known but its use
was deprecated because it wasted space) and so instead of burying the body,
they buried information which said where it was.

When a person got tired of his present life and hankered after one of his
previous incarnations, he could invoke a "GO TO" ritual which would take him
back to one of his previously stored bodies. This would disinter and reactivate
a body which was not necessarily the last one used. This process invariably
lost all the intervening bodies. This GO TO ritual occasionally surprised
people. They would enter a procedure body in order to gain something of value,
and find themselves projected by a GO TO into a previous incarnation instead.

The ALGOL men were not only able to change their immediate environment or
locals but could also change the environments of their interred bodies. Some
people thought that it was a sacrilege to interfere with the possessions of
their interred bodies (or non-locals), especially while living in procedure
bodies. Others thought this practice useful, and used it.

It seemed that the course of a person's life was mapped out for him in advance,
although they couldn't tell for sure. Some said that they must do the things
they did in a fixed order, others said that the order was not fixed.
Occasionally some of the latter found that changing the order made them do
things they didn't intend to. Others argued that they had free will because
they could make decisions. Although they tried hard, they could never
manufacture a new body. The bodies and environments which appeared seemed to
have been lying dormant in their genes, waiting to be activated.

The ALGOL men had a great book which contained guidance called the "(Revised)
Report on the Algorithmic Language ALGOL 60". This contained rules and
parables which stated how they should behave, and commandments which prohibited
certain actions. The interpretation of certain sections of this report was the
subject of much scholarly and theological argument. Part of the report was
written in a peculiar language called "Backus normal form". No one had ever
deciphered this part, but it seemed to be explaining how their bodies were
constructed. The report prescribed that if certain rules of behaviour were
disobeyed then the offender would be put into a state called "undefined"
or "hell". There were legends about certain adventurous people who, because
they possessed some defect of character, had tried these prescribed acts and as
a result had vanished together with all their interred bodies and possessions.

People who were deep in incarnations used a lot of space to hold their bodies
and possessions and as a consequence people were taxed on how deep they were.
Sometimes people would wish to incarnate but find that they could not because
there was no space left in the world. They had to go into a state of "suspended
animation" waiting for space to become available.

There were some people who lived the same parts of their life over and over
again. Some of these were harmless and were called "ghosts". There seemed to be
no way of finding out if they would ever break out of their loops or not.
Others were dangerous to the community and were called "space thieves". For
these each new life cycle produced new possessions and these possessions
threatened to overrun the world. A rule was introduced to detect space thieves
and throw them Outside. This was called a "debugging rule". There was a similar
rule against "body snatching". This rule said that if any person interfered
with the interred bodies or property of another then both would be thrown
Outside. A person was said to be "running wild" when he did this. This was
unfortunate for the victim, but his removal was a safety precaution. Since he
had been interfered with there was the chance that he too might run wild.
Later, special locks were provided for the graves called "lockouts". These
locks could only be opened by the owner. This prevented the whole population
from running wild.

A movement sprang up to hoard property gained in a body's life so that it
should be available if that life should be re-entered. This hoarded property
was called the OWN property of the body. There was some confusion about the
precise procedure to be followed when hoarding and there was little guidance
in the Report about how to do this. Some people, because they used incorrect
methods, produced hoards which they never used again.

There were tales that certain people, called "mystics", were able to obtain
information from Outside to guide their lives, and that there were people 
who could transmit information to the Outside by prayer. The Report, however 
does not mention this. Some people found themselves incarnated into another 
form when they used what is called "non-ALGOL code" procedure bodies. 
Although this is mentioned in the Report, no details are given, and people 
were constantly surprised by the forms they took.

It is a shame that this brief account cannot include descriptions of other
tribes similar to the ALGOL men such as the macro people who constructed bodies
(or Frankensteins) and activated them, the Ipulvees who listed their property
and had an oracle called the Interpreter, and the Lisps who constructed
magnificent constructions and took them to pieces, and had a strong garbage
collectors' union.

The tragedy of the ALGOL men was that they could not communicate with one
another nor could they store things which would be useful to future
generations. All men were born equal but did different things with their lives.
When a man died, he vanished, left nothing, and released the space he occupied.
It is clear that what these people needed was the ability to store things
produced by people in their lives in a library so that other people could make
use of them. It is said that the FORTRANS and COBOLS have a tradition ot this
sort.
238.8The AlgollersCOMICS::DEMORGANRichard De Morgan, UK CSC/CSFri Jun 23 1989 12:3370
A long, long time ago (about eighteen years, give or take a furlong), several
wise men sat down and designed a programming language. Being of a somewhat
adventurous nature, they produced a somewhat adventurous language; indeed, so
adventurous was this language that people debate to this day the properties of
this wondrous language and others that owe some of their origins to it. It was
called "Algol 60", but didn't seem to have any features of specific use to
astronomers. They revised it a bit in 1962, but unlike later languages, did not
update its number; indeed, most people were content to call it simply "Algol",
and some of them spelt it with capital letters.

Algol had a wealth of features. Some indeed were quite extraordinary and could
be used to perform wonderful feats of computation in mystical ways (the way it
could find prime numbers with a single statement seemed to smack of
witchcraft). Some of the features were left to the imagination and ingenuity of
the implementors, resulting in a wealth of dialects of the language. Machine
dependent features such as input-output were skilfully avoided so as to avoid
contamination of programs. Nevertheless, implementors seemed to think that this
was a desirable addition, and added input-output systems of every conceivable
shape and size.

While the outside world was marvelling at the wonders of Algol 60, the wise men
were busily at work designing its successor. They spoke of it as "Algol X", and
there was even talk of an "Algol Y", but when it saw the light of day, it was
called Algol 68. Here indeed was a magnificent language - it had a bigger,
better Report, parts of which were written in a curious form called a
W-grammar, and seemed to require many type fonts, not to mention italic full
stops. "Why didn't they use BNF?" was the cry. Fortunately, someone pointed out
that if you read the examples at the back of the report, it all became clear.

Meanwhile, halfway up a hill in darkest Worcestershire, at a Very Secret Place,
Scientific Civil Servants were labouring night and day to produce the very
first Algol 68 implementation. This was known as Algol 68R and became very
famous. Following this, many other implementations sprang up, but implementors
had great difficulties with some of the features, and various subsets were
born.

But the Algol 60 devotees had not been idle. Meeting at secret locations in the
English countryside, they set out to eliminate the dreaded "Remaining Trouble
Spots". They called their Algol 60 "Modified" (they did not like to call it
Algol 76 for fear that the Algol 68 authors would become angry with them for
having a higher number), and they even included a simple input-output system.
They produced a Report, as was the custom, and published it in a Learned
Journal.

Both the Algol 60 and Algol 68 devotees were members of a Secret Society which
was called the Algol Association. They would come from far and wide to listen
to the wisdom and lore imparted by famous Algol mystics. They also communicated
with each other by means of a Bulletin, speaking both in words and algorithms.
Although there was some amount of rivalry between the Algol 60 and Algol 68
factions, they were united in their scorn of other societies such as the
Cobollers and the Fortranners. These societies spoke strange tongues which were
most un-Algol-like.

There had grown up a movement called Structured Programming, and the Algol
devotees found that they could write structured programs without much
difficulty. Indeed, by using Algol 68 they found they could do away altogether
with the hateful labels that many said spoilt the beauty of their languages.
The Cobollers and Fortranners were very jealous of this, and tried to write
structured programs of their own. The Algollers saw that this was futile and
laughed them to scorn saying "How can they expect to write structured programs
with such foolish languages?" But the people of the world were much confused by
all this talk, and did not know which way to turn. Most of them were very
conservative by nature and said "Why should we use these new languages that
these mystics invent? Let us instead use the languages that our forefathers
have always used". And so they went their way, and performed their Sorts and
Merges, and entered Subroutines, and did other mundane things; for such was the
way of the world.

			R. M. De Morgan
			(Algol Bulletin No. 41, June 1977).
238.9Algol historySAUTER::SAUTERJohn SauterMon Jun 26 1989 10:0717
    Not only was Algol-60 the ancestor of most modern languages, but it
    established other worthwhile precedents.  The best known is BNF, but
    when I worked for John McCarthy (one of the "wise men" Richard referred
    to in 238.8) he told me that the Algol committee had also established
    the "straw vote" procedure.
    
    A "straw vote" can be taken at any time, and no debate on it is
    permitted.  The results of the vote are non-binding.  The purpose
    of the straw vote is to convince debaters that most people have
    made up their mind, so further debate is useless, and a real vote
    should be taken.
    
    By the way, Richard, did you ever fix the double-precision bug in
    Algol-10 that I send you an SPR about?  I've forgotten most of the
    details, but I recall we discussed it on the phone.  SPR procedures
    were less formal then.
        John Sauter
238.10? what problemCOMICS::DEMORGANRichard De Morgan, UK CSC/CSTue Jun 27 1989 06:424
    Re .9: John, that was a long time ago, and I have little recollection
    of particular bugs. I think I must have fixed it as I'm sure we
    fixed all known bugs. Was it the KA10 multiply/divide problem
    (cross-product underflow)? That was certainly fixed.
238.11that's itSAUTER::SAUTERJohn SauterTue Jun 27 1989 14:205
    re: .10
    
    I believe it was, since we were running a KA10.  I believe this was
    around 1970.
        John Sauter
238.12The ghost walks...CIVAGE::LYNNLynn Yarbrough @WNP DTN 427-5663Thu Dec 13 1990 11:4513
Unfortunately, the language is not quite dead yet. Or if it is, it is still 
walking around out there, scaring the bejeebers out of innocent sales
support people. 

I have a conversion to do for a benchmark, from BURROUGHS ALGOL to VAX
FORTRAN or something. My problem is, I can't remember what the intrinsic
function ENTIER computes. I know it's one of the possible largest-integer-
part functions, but which one? To be more specific, what does ENTIER(-.5)
return: 0 or -1? Or -1.0?

Thanks,

Lynn Yarbrough 
238.13faint echos from a generation agoSAUTER::SAUTERJohn SauterThu Dec 13 1990 13:167
    I'm not sure, so I hope somebody else can give a more reliable answer.
    However, I did some work on that compiler once, and if I remember
    correctly Entier was implemented as Round(n-.5).  That would make
    Entier(-.5) return -1.
    
    I last saw the compiler in 1965, so I may have misremembered the sign.
        John Sauter
238.14KELSON::GULDENSCHUHSuccess lies in achieving the top of the food chain.Thu Dec 13 1990 21:059
From the Burroughs B550 Information Procession Systems Extended Algol
Reference Manual:

ENTIER.  The function ENTIER yields a value of type INTEGER.  This
function is understood to transfer an expression of type REAL to
an expression of type INTEGER, and produces the value which is the
largest integer not greater than the value of the arithmetic expression.

/s/ Chuck
238.15From the Revised Report on ALGOL 60UTRUST::DEHARTOGmoduladaplisprologopsimulalgolFri Dec 14 1990 03:529
3.2.5. Transfer functions
  It is understood that transfer functions between any pair of quantities
and expressions may be defined. Among the standard functions it is recommended
that there be one, namely,
				entier(E),
which "tranfers" an expression of real type to one of integer type, and assigns
to it the value which is the largest integer not greater than the value of E.

So, .14 (and therefore Burroughs) is right,			Hans.
238.16Not on DS5000!CIVAGE::LYNNLynn Yarbrough @WNP DTN 427-5663Fri Dec 14 1990 15:069
>                                                    ... if I remember
>    correctly Entier was implemented as Round(n-.5).  That would make
>    Entier(-.5) return -1.

Whatever the correct interpretation, this implementation almost surely 
won't work on IEEE Std floating point systems, where rounding of n+1/2 goes
up sometimes, down others. E.g. entier (3) = 2, entier (4) = 4 etc. 

Lynn