Talk:Atlas Autocode

Stub?
Is this still a stub? Shinobu 11:36, 5 Apr 2005 (UTC)
 * Yes, it's got a bit of info but its lacking any inline citations. Jwoodger (talk) 00:09, 2 September 2009 (UTC)

Timeline
I need to check this, but the 1965 date for AA seems rather late. AA was designed by Tony as his response to the early Algol discussions (what I believe was informally referred to as "ALGOL 58") and was being designed and implemented in parallel with Algol60. Later note: See https://www.chilton-computing.org.uk/acl/technology/atlas50th/p002.htm - the language was designed by 1962, and was running in 1963. I'll update the main page to say 1963. — Preceding unsigned comment added by 70.124.38.160 (talk) 04:49, 14 March 2023 (UTC)

Use of Autocode
There seems to be some confusion nowadays as to the meaning of the word Autocode which is not helped by its use in AA. Original autocodes were barely above the level of an assembly language - they were invented as 'automatic programming' as opposed to manual programming where you had to program in binary and lay your code out by hand on the drum in the right place to be read on the next rotation! The Manchester team had written several of these autocodes, so when Tony Brooker came up with his language, he looked on it as the next development in automatic programming. However the terminology was changing at that time and Atlas Autocode was named during the last gasp of the autocodes just as actual programming languages were coming into existence. As was said at the time, if AA had been named Atlas Algol instead it could very likely have caught on better and possibly even diverted development from the ALGOL60 to ALGOL68 path. Anyway, by the current modern understanding of the word Autocode, AA is *not* an autocode. It's a high-level language in the Algol family descended from ALGOL58 (aka IAL) rather than ALGOL60. Which is part of the reason that I think the date of 1965 is later than it should be.

Broken links
Someone has broken (or entered wrongly) some of the links in the text - the Atlas Autocode Reference Manual (at least in PDF form) is at https://history.dcs.ed.ac.uk/archive/docs/Atlas_Autocode_1965.pdf but the link in the references section is to a less stringent Edinburgh publication, https://history.dcs.ed.ac.uk/archive/docs/CU-Rep-1-AA.pdf

Passing by name
Any language that allowed a goto does nothing to prevent a programmer from writing the most horrendous spaghetti code. However AA did have proper conditionals and loop control and gotos would be used very seldom in practice.
 * "Passing by Name" in Algol60. In the versions I used (Elliott Algol for the 803 and 903) I'm almost certain that "calling by name" which was the default condition if a formal parameter to a procedure or function was not declared as "value", meant that the address of the actual parameter was passed into the subroutine and the actual parameter manipulated. This meant that any changes would persist after the routine exited. I.e. it gave rise to side-effects. It was valuable if a large array or matrix was being manipulated, since in avoided copying the whole thing onto the stack which a "call by value" would involve. OTOH, a call by value ensured that the routine could not change the value of the actual parameter, a copy was made on the stack which was local to the routine and vanished on exit. I think therefore that the comment in the text here is mistaken, and should certainly be checked out. Mongvras (talk) 20:21, 12 April 2009 (UTC)
 * I have now read through much of the AA manual referenced in this article. AA allowed both calls by name and calls by value, in exactly the same way as Algol, the difference being that call by value was the default (sensible, like C++). The language is on the whole more primative that Algol60, although it has advanced features like block structure, variable scoping, and dynamic array bounds. These were not present in other contempory autocodes (afaik!), and indeed were absent from Fortran and many later languages. OTOH AA has very weak, assembler-like conditional instructions, and jump instructions (equivalent to 'goto's) feature prominently. It would probably be possible to write fully structured programs in AA, but the concept is not mentioned in the manual. There is nothing in the formal structure of AA to prevent a programmer from writing the most horrendous spaghetti code. Mongvras (talk) 22:30, 12 April 2009 (UTC)
 * In Atlas Autocode, passing by name meant passing the address of the variable, and using an expression such as x+1 as actual-parameter for a formal-parameter by name was faulted by the compiler :: I should know, I wrote and used plenty of Atlas Autocode programs. In Algol, passing by name meant passing by substitution: if an expression such as x+1 was used as actual-parameter for a formal-parameter by name, writing to the parameter from inside the procedure did not work. Anthony Appleyard (talk) 22:32, 12 April 2009 (UTC)

Programming in Atlas autocode
The last year in which Manchester University students were taught AA was around 1971/72. Students in Electrical Engineering had AA included as part of their syllabus 2.24.25.78 (talk) 12:34, 3 August 2022 (UTC)