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:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.