Knowledge (XXG)

Autocode

Source 📝

169:
subroutine on # lower accumulator value # and put the result into z +tt →y →x # Calculate t^3 and put it into x +tx →y →x +z+cx CLOSE WRITE 1 # Put z + (c * x) into # lower accumulator # and return
168:
c@VA t@IC x@½C y@RC z@NC INTEGERS +5 →c # Put 5 into c →t # Load argument from lower accumulator # to variable t +t TESTA Z # Put |t| into lower accumulator -t ENTRY Z SUBROUTINE 6 →z # Run square root
96:
programming language. His main goal was increased comprehensibility in the programming of Mark 1 machines, which were known for their particularly abstruse machine code. Although the resulting language was much clearer than the machine code, it was still very machine dependent.
284:
in 1961. Known as EDSAC 2 Autocode, it was a straight development from Mercury Autocode adapted for local circumstances, and was noted for its object code optimisation and source-language diagnostics which were advanced for the time. A version was developed for the successor
188:
in 1955 and was called the "Mark 1 Autocode". The language was nearly machine-independent and had floating-point arithmetic, unlike the first one. On the other hand it allowed only one operation per line, offered few mnemonic names and had no way to define user subroutines.
175:
Impact of Glennie's Autocode on other Manchester users' programming habits was negligible. It wasn't even mentioned in Brooker's 1958 paper called "The Autocode Programs developed for the Manchester University Computers".
374:
Two high level programming languages which can be used here as examples to illustrate the structure and purpose of autocodes are COBOL (Common Business Oriented Language) and FORTRAN (Formular Translation).
163: 664: 674: 649: 49:. Autocode was a generic term; the autocodes for different machines were not necessarily closely related as are, for example, the different versions of the single language 281: 659: 198:
Brooker's Autocode removed two main difficulties of Mark 1's programmer: scaling and management of two-level storage. Unlike its predecessor it was heavily used.
165:. The example omits necessary scaling instruction needed to place integers into variables and assumes that results of multiplication fit into lower accumulator. 241:. In order to overcome the relatively small store size available on Mercury, large programs were written as distinct "chapters", each of which constituted an 654: 474:
Knuth, Donald E.; Pardo, Luis Trabb (1976). "Early development of programming languages". Stanford University, Computer Science Department.
621: 277: 669: 629: 367: 339: 65: 30: 245:. Some skill was required to minimise time-consuming transfers of control between chapters. This concept of overlays from 310: 254: 426:
Campbell-Kelly, Martin (1980). "Programming the Mark 1: Early Programming Activity at the University of Manchester".
195:
n1 = 1 1 vn1 = I reads input into v] n1 = n1 + 1 j1,11 ≥ n1 jumps to 1 if n ≤ 11
290: 235: 302: 298: 289:(the prototype Atlas 2 computer) as a temporary stop-gap while a more substantially advanced language known as 103: 38: 253:
became available in later machines. Slightly different dialects of Mercury Autocode were implemented for the
42: 192:
An example code which loads array of size 11 of floating-point numbers from the input would look like this
215: 172:
User's manual of Glennie's Autocode Compiler mentioned that "the loss of efficiency is no more than 10%".
92:
in 1952 for the Mark 1 computer at the University of Manchester and is considered by some to be the first
346:
The 'high' level programming languages are often called autocodes and the processor program, a compiler.
286: 242: 238: 46: 456: 443: 583: 548: 513: 57: 625: 573: 538: 503: 435: 363: 335: 207: 34: 609: 597: 266: 219: 484: 306: 258: 250: 643: 89: 447: 56:
Today the term is used to refer to the family of early languages descended from the
613: 185: 100:
Below is an example of Glennie's Autocode function which calculates the formula:
246: 227: 587: 578: 561: 552: 543: 526: 517: 508: 491: 458:
AUTOCODE un sistema simplificado de codificacion para la computadora MERCURY
439: 231: 20: 492:"The Autocode Programs developed for the Manchester University Computers" 262: 93: 69: 184:
The second autocode for the Mark 1 was planned in 1954 and developed by
60:
autocoder systems, which were generally similar. In the 1960s, the term
77: 50: 218:
a-z and a'-z' and, in some ways resembled early versions of the later
29:
is the name of a family of "simplified coding systems", later called
527:"Further Autocode Facilities for the Manchester (Mercury) Computer" 293:
was being developed. CPL was never completed but did give rise to
273: 223: 73: 294: 210:
in the 1950s in conjunction with the University of Manchester.
362:(1st ed.). London: Faber and Faber Limited. p. 186. 334:(1st ed.). London: Faber and Faber Limited. p. 184. 19:
For the assembly language used with the IBM 1400 series, see
612:(1968) . "1.5. Recursion in Functional Programming". In 620:. Macdonald Computer Monographs (1 ed.). London: 461:(in Spanish). Universidad de Buenos Aires. p. 70. 88:
The first autocode and its compiler were developed by
72:. Examples of languages referred to as autocodes are 305:. A contemporary but separate thread of development, 106: 157: 33:, devised in the 1950s and 1960s for a series of 297:(developed by M. Richards), which in turn led to 604:. Cambridge, University Mathematical Laboratory. 309:was developed for the University of Manchester 282:University of Cambridge Mathematical Laboratory 64:was used more generically as to refer to any 8: 665:Science and technology in Greater Manchester 675:University of Cambridge Computer Laboratory 206:Brooker also developed an autocode for the 650:History of computing in the United Kingdom 577: 542: 507: 158:{\displaystyle f(t)={\sqrt {|t|}}+5t^{3}} 149: 132: 124: 122: 105: 358:London, Keith (1968). "4, Programming". 330:London, Keith (1968). "4, Programming". 322: 249:under user control became common until 660:Programming languages created in 1952 622:Macdonald & Co. (Publishers) Ltd. 7: 16:Early computer programming languages 618:Recursive techniques in programming 485:The Autocodes: a User's Perspective 428:Annals of the History of Computing 14: 602:Titan Autocode programming manual 455:Garcia Camarero, Ernesto (1961). 655:Procedural programming languages 66:high-level programming language 133: 125: 116: 110: 1: 525:Brooker, R. A. (1958-03-01). 490:Brooker, R. A. (1958-01-01). 214:had a limited repertoire of 691: 18: 560:Clarke, B. (1959-04-01). 468:Introduction to Computers 360:Introduction to Computers 332:Introduction to Computers 257:(distinct from the later 670:University of Manchester 222:language. It pre-dated 83: 440:10.1109/MAHC.1980.10018 226:, having no concept of 37:at the Universities of 600:; et al. (1967). 579:10.1093/comjnl/1.4.192 562:"The Pegasus Autocode" 544:10.1093/comjnl/1.3.124 466:London, Keith (1968). 159: 610:Barron, David William 598:Barron, David William 509:10.1093/comjnl/1.1.15 236:dynamically-allocated 160: 31:programming languages 566:The Computer Journal 531:The Computer Journal 496:The Computer Journal 434:(2). IEEE: 130–167. 272:The version for the 104: 155: 84:Glennie's Autocode 137: 58:Manchester Mark 1 35:digital computers 682: 635: 605: 591: 581: 556: 546: 521: 511: 471: 462: 451: 413: 410: 404: 401: 395: 392: 386: 383: 377: 376: 355: 349: 348: 327: 212:Mercury Autocode 208:Ferranti Mercury 164: 162: 161: 156: 154: 153: 138: 136: 128: 123: 690: 689: 685: 684: 683: 681: 680: 679: 640: 639: 636:(viii+64 pages) 632: 608: 596: 559: 524: 489: 481: 479:Further reading 465: 454: 425: 422: 417: 416: 411: 407: 403:Knuth, p. 63-64 402: 398: 393: 389: 385:Knuth, p. 42-43 384: 380: 370: 357: 356: 352: 342: 329: 328: 324: 319: 301:and ultimately 276:was devised by 220:Dartmouth BASIC 204: 202:Later Autocodes 196: 182: 180:Mark 1 Autocode 170: 145: 102: 101: 86: 24: 17: 12: 11: 5: 688: 686: 678: 677: 672: 667: 662: 657: 652: 642: 641: 638: 637: 630: 606: 594: 593: 592: 572:(4): 192–195. 557: 537:(3): 124–127. 487: 480: 477: 476: 475: 472: 470:. p. 261. 463: 452: 421: 418: 415: 414: 405: 396: 387: 378: 368: 350: 340: 321: 320: 318: 315: 307:Atlas Autocode 259:Atlas Autocode 255:Ferranti Atlas 251:virtual memory 203: 200: 194: 181: 178: 167: 152: 148: 144: 141: 135: 131: 127: 121: 118: 115: 112: 109: 85: 82: 15: 13: 10: 9: 6: 4: 3: 2: 687: 676: 673: 671: 668: 666: 663: 661: 658: 656: 653: 651: 648: 647: 645: 633: 627: 623: 619: 615: 614:Gill, Stanley 611: 607: 603: 599: 595: 589: 585: 580: 575: 571: 567: 563: 558: 554: 550: 545: 540: 536: 532: 528: 523: 522: 519: 515: 510: 505: 501: 497: 493: 488: 486: 483: 482: 478: 473: 469: 464: 460: 459: 453: 449: 445: 441: 437: 433: 429: 424: 423: 419: 409: 406: 400: 397: 391: 388: 382: 379: 375: 371: 365: 361: 354: 351: 347: 343: 337: 333: 326: 323: 316: 314: 312: 308: 304: 300: 296: 292: 288: 283: 279: 278:David Hartley 275: 270: 268: 264: 260: 256: 252: 248: 244: 240: 237: 233: 230:and hence no 229: 225: 221: 217: 213: 209: 201: 199: 193: 190: 187: 186:R. A. Brooker 179: 177: 173: 166: 150: 146: 142: 139: 129: 119: 113: 107: 98: 95: 91: 90:Alick Glennie 81: 79: 75: 71: 67: 63: 59: 54: 52: 48: 44: 40: 36: 32: 28: 22: 617: 601: 569: 565: 534: 530: 502:(1): 15–21. 499: 495: 467: 457: 431: 427: 412:Knuth, p. 65 408: 399: 394:Knuth, p. 48 390: 381: 373: 359: 353: 345: 331: 325: 271: 211: 205: 197: 191: 183: 174: 171: 99: 87: 61: 55: 26: 25: 631:356-02201-3 624:p. 8. 644:Categories 317:References 261:) and the 62:autocoders 39:Manchester 588:0010-4620 553:0010-4620 518:0010-4620 369:571085938 341:571085938 313:machine. 232:recursion 216:variables 43:Cambridge 21:Autocoder 448:10845153 263:ICT 1300 94:compiled 70:compiler 68:using a 27:Autocode 616:(ed.). 420:Sources 311:Atlas 1 274:EDSAC 2 269:range. 243:overlay 78:Fortran 51:Fortran 628:  586:  551:  516:  446:  366:  338:  239:arrays 228:stacks 47:London 444:S2CID 287:Titan 224:ALGOL 74:COBOL 584:ISSN 549:ISSN 514:ISSN 295:BCPL 280:of 267:1900 265:and 247:drum 76:and 45:and 626:SBN 574:doi 539:doi 504:doi 436:doi 364:SBN 336:SBN 291:CPL 234:or 646:: 582:. 568:. 564:. 547:. 533:. 529:. 512:. 498:. 494:. 442:. 430:. 372:. 344:. 80:. 53:. 41:, 634:. 590:. 576:: 570:1 555:. 541:: 535:1 520:. 506:: 500:1 450:. 438:: 432:2 303:C 299:B 151:3 147:t 143:5 140:+ 134:| 130:t 126:| 120:= 117:) 114:t 111:( 108:f 23:.

Index

Autocoder
programming languages
digital computers
Manchester
Cambridge
London
Fortran
Manchester Mark 1
high-level programming language
compiler
COBOL
Fortran
Alick Glennie
compiled
R. A. Brooker
Ferranti Mercury
variables
Dartmouth BASIC
ALGOL
stacks
recursion
dynamically-allocated
arrays
overlay
drum
virtual memory
Ferranti Atlas
Atlas Autocode
ICT 1300
1900

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.