preface ;;Quote: programmer's manual for the Ferranti Mark I based on the Manchester "baby" machine
|
preface+;;Quote: understand the programmer's manual through the machine itself
|
1 ;;Quote: computers carry out any definite rule of thumb process that a human could do in a disciplined but unintelligent manner
|
1+;;Quote: computers are like a human with a desk calculator and paper obeying explicit instructions
|
3 ;;Quote: use the 5-bit teleprinter code to represent binary numbers; 0=/, 1=E, 2=@, 3=A; need to memorize
|
3+;;Quote: Turing wrote binary numbers with the low-bit first, divided into blocks of five
|
4 ;;Quote: the magnetic store is divided into tracks; each half-track is loaded into a page of memory; each page, a cathode ray tube, contains 64 lines of 20 binary digits each
|
7 ;;Quote: the state of the machine at one prepulse is completely determined by its state at the previous one; consists of electronic store, accumulator, and instruction number
|
7+;;Quote: programming is not interested in the state of the machine at every moment; only at prepulses
|
7+;;Quote: the transition function is 'obeying an instruction'
|
11 ;;Quote: use check sheets to verify a routine experimentally; step through the routine, recording all details
|
11+;;Quote: a large character indicates the same character repeated eight times
|
24 ;;Quote: use dummy stops to stop machine in between major operations
|
24 ;;Quote: use hoot instructions to listen to a routine's progress; repeated pulses generates a steady note, rich in harmonies; a single pulse is audible
|
25 ;;Quote: use switches for experimenter input; e.g., finding zero of a function or playing chess
|
25 ;;Quote: the Ferranti Mark I included a hardware random number generator; e.g., random walk probability
|
26 ;;Quote: the Ferranti Mark I included a real-time clock accurate to five seconds
|
44 ;;Quote: stepping through a program and comparing the results to a check sheet is the quickest way to find errors
|
44+;;Quote: the monitor tubes show the current state of the machine
|
48 ;;Quote: need conventions to reduce uncertainty about a machine's state; computers have very great flexibility
|
49 ;;Quote: always keep the powers-of-two table and the routine changing sequence (PERM) in memory; the later simplifies call and return from a routine
|
59 ;;Quote: programs should only depend on the official account of a subroutine, not speed; allows alteration
|
59 ;;Quote: programming is controlling the activity of a digital computer by expressing one's will on punched tapes and other input medium
|
59 ;;Quote: programming is achieved by working up from simple requirements to more complex ones; e.g., Fourier analysis via cosine calculations
|
59+;;Quote: the subroutines of any routine may themselves have subroutines; like bigger and lesser fleas
|
60 ;;Quote: a routine calculates a function of the state of the machine and stores the result, independent of the majority of the content of the store
|
61 ;;Quote: advice on programming, make a plan; a baffling piece of advice that is independent of rules
|
61 ;;Quote: programming must balance machine time, storage space, programmer's time, and result accuracy; they all cost something
|
63 ;;Quote: to estimate timing for a routine, the plan should include the instructions in the inner loop
|
63 ;;Quote: if you can think of a method using pencil and paper, you can usually implement it by machine
|
63 ;;Quote: break a problem into subroutines; this simplifies the problem and creates useful routines for other problems
|
63 ;;Quote: program subroutines before the main program; subroutine definition may change and details are not known until later
|
64 ;;Quote: use block schematic diagrams for subroutine planning; blocks of English joined by arrows; replace blocks by instructions
|
64+;;Quote: in block schematic diagrams, annotate test arrows with the tested item or loop count
|
65 ;;Quote: keep pages about five-sixths full with extra space after each sequence of instructions; use for fixing mistakes or storing numbers
|
66 ;;Quote: program repetitive instructions as First Part, Entry Point, Second Part, Loop Test; place loop count at beginning or end
|
75 ;;Quote: describe a routine accurately; include preconditions, postconditions, validity conditions, accuracy, time taken, and method
|
79 ;;Quote: intermittent machine errors are exasperating; run tests, check identities, make duplicate runs
|
79+;;Quote: use burst computations to workaround intermittent machine errors; if both burst runs differ, rerun using saved state
|
80 ;;Quote: run programmed checks often to detect problems early, avoid disastrous results, and diagnosis problems
|
81 ;;Quote: check sheets will catch most errors if performed conscientiously; forget purpose and method of the machine to avoid anticipating a result
|
81 ;;Quote: check sheets miss errors due to preconceived ideas, insufficient test cases, not checking alterations, or alternating check sheet but not the program
|
82 ;;Quote: check sheets should test every instruction of the program and all points of difficulty
|
84 ;;Quote: check magnetic tracks by computing checksums of their contents and comparing with known good values
|
84 ;;Quote: summary of Ferranti Mark I on a cheat sheet; functions, instruction codes, character codes, input and PERM routine, conventions
|