6 ms·
Alan Turing’s 1950 manual for the Mark I electronic computer [pdf]
- pncnmnp 2y agoIt looks like this is part of the Knuth Digital Archive Project: https://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/KnuthDigitalArchive-Index.html https://archive.computerhistory.org/resources/text/Knuth_Don.... There's some fascinating stuff in there, like this "What a Programmer Does" (https://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-9-pdf/k-9-u2769-1-Baker-What-Programmer-Does.pdf https://archive.computerhistory.org/resources/text/Knuth_Don...).
- Someone 2y agoAlso: source code of the THE operating system, an operating system written by a team led by Dijkstra (https://en.m.wikipedia.org/wiki/THE_multiprogramming_system https://en.m.wikipedia.org/wiki/THE_multiprogramming_system , https://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-1-pdf/k-1-C1063.6-source-THE-os.pdf https://archive.computerhistory.org/resources/text/Knuth_Don...) It’s not very readable as it doesn’t use a language familiar to me (and, likely, most readers of HN)
- VogonPoetry 2y agoThat PDF doesn't look like the source for an operating system, but rather a 2 pass compiler. There are references to data types (including Complex) on p.6 and various hand written comments, such as "procedure" on p.2 and "return to pass 2" on p.19. The following page looks like a lexer table and might be the reserved words. Then on line 1658 (lost track of page #) "const expression, like (2^40-1) are evaluated at compile time". Based on how the later comments are written, I think they were added by someone trying to understand the compiler.
- deleted 2y ago[deleted]
- vessenes 2y agoBoy I love this. Both for the pleasure of reading what Turing thought his ‘experienced’ operators needed to know, and also for the glimpse back at all the engineering, physical constraints, and solutions pulled together. Within a few pages we’re talking about where on a physical circle “tubes” physical bits reside, just, you know, as a starting intro. Really amazing.
- adrian_b 2y agoThis Ferranti Mark I computer is notable because, despite being one of the earliest electronic computers, its instruction set included 4 instructions that are now included in most modern ISAs, but which have been missing for many decades from the instruction sets of most later computers, with the exception of the supercomputers made by CDC and Cray. Those 4 instructions, with their mnemonics in the Intel/AMD x86 CPUs are: LZCNT (leading zero bits count), which was named "The position of the most significant digit" in this manual. POPCNT (population count), which was named "Sideways adder" in Mark I (it is listed in a table at the end of this manual). RDRAND (read random number), which was named "The random numbers generator" in this manual. RDTSC (read time stamp counter), "The clock" in this manual. It is said that some or even all of these less usual instructions had been suggested by Alan Turing himself to the designers of Ferranti Mark I. Another notable instruction of Ferranti Mark I was used to produce an audible beep, like the internal loudspeaker of the older IBM PC compatibles, "The hooter" in this manual.
- dboreham 2y agoMen in black always want popcount (it's been added to various architectures over the years at their request) so this makes sense given his background.
- kichimi 2y ago>Men in black always want popcount (it's been added to various architectures over the years at their request) I've heard this a few times, do you have anything that explains this?
- adrian_b 2y agoIt is said that NSA has requested the addition of POPCNT to the Control Data Corporation CDC 6600 (1964), as a condition for procurement. The condition has remained in force later, so all its successors, like CDC 7600 (1969) or Cray-1 (1976), have included POPCNT. POPCNT has been added to the x86 ISA by AMD, in "Barcelona", in 2007, presumably because some customer for AMD Opteron has requested it. This happened during the period when the AMD server CPUs were much better than the Intel Xeons, so any wise customer was buying Opterons, not Xeons. Intel has followed AMD and it has added POPCNT to Nehalem, in 2008/2009 (for server CPUs, Nehalem has been the first that was better for any purpose than the AMD server CPUs, unlike for consumer CPUs, where Intel had surpassed AMD already since the middle of 2007, with Core 2).
- mikewarot 2y agoMy how things have changed.... he says "Desk Machine"... and of course I think Keyboard, Computer, Monitor, Mouse.. ;-) Instead of one of the Friden Calculators. Like this one, seen in a storage rack somewhere deep inside a TARDIS. https://en.wikipedia.org/wiki/Friden,_Inc.#/media/File:Friden_calculator.jpg https://en.wikipedia.org/wiki/Friden,_Inc.#/media/File:Fride...
- hinkley 2y agoSome of the control codes we use in ttys today came from teletype machines that were already around for five to ten years in 1950. Also when the 132 character wide terminal standard was born. Thats’s another valid interpretation of desktop.
- adrian_b 2y agoThe width of 132 characters was the width of the line printers, which were the main output device of the first commercial electronic computers. The line printers had been designed from the beginning as computer peripherals, because previously there was no need for such high printing speeds. They were called line printers because all 132 characters of a line were printed simultaneously, by impact. The first computers were not multitasking, so they could not be used for anything else while printing. Because of this, a very high printing speed was necessary, which required the development of the line printers. Later, when printing no longer blocked the execution of other tasks, the very expensive line printers could be replaced in many cases by cheaper printers, like dot-matrix printers or daisy-wheel printers. Many more recent operating systems, like Unix or MS-DOS, have kept the abbreviation LPT for printers, even if by that time the line printers were already obsolete and they were very seldom encountered. All early experimental computers used teletype machines for interactive communication with the computer. In the later commercial computers, teletypes continued to be used for the operator console, while the batch jobs of the non-privileged computer users would have had only the line printer or the card puncher as output peripherals. If there have ever been any teletypes with an output width greater than 80 columns, they must have been very seldom used. At the standard typewriter pitch of 10 cpi, 132 characters require paper with the width of 14 inches (including the perforated margins). That would have required a huge teletype. I do not believe that such a big teletype has existed.
- joshdavham 2y agoIt’s interesting to see how he had to write math in this paper. Instead of being able to type it, he had to leave spaces and fill it with his own handwriting. Maybe LaTeX isn’t so bad after all.
- analog31 2y agoMy parents wrote their graduate theses this way too, in the 1950s, except that the spaces were for chemical formulas.
- typon 2y agoAm I tripping or is the linked manual for the Mark II, not the Mark I?
- larsga 2y agoIt says very clearly on the title page it's for the Mark II, and in the text he says the advice is based on experience with the Mark I, so it's definitely for the Mark II.
- adrian_b 2y agoThe manual is for the experimental Manchester Mark II, which is very similar to the commercial product derived from it, Ferranti Mark I. So both the handwritten title about Ferranti Mark I and the typed title about Manchester Mark II are right. Only the name of the PDF file is wrong. Manchester Mark I had been an earlier and simpler experimental computer, while Ferranti Mark I was a commercial product. It actually was the first commercial electronic computer, with its first delivery a little before UNIVAC I.
- eschulz 2y agoGood catch. It's for the Mark II and seems to be written based primarily on his experiences with the Mark I. I do not know if you are tripping.
- adrian_b 2y agoIt is for Manchester Mark II, which is very similar to Ferranti Mark I, so both titles are correct.
- larsga 2y agoThat was interesting. I just casually clicked on the link and before I knew it I had read 20 pages.
- krunck 2y ago"It is not difficult to see that information expressed with one set of symbols can be translated into information expressed with another sot by some suitable conventions, e.g. to convert sequences of decimal digits into sequences of O's and 1's we could replace 0 by 0000, 1 by 1000, 2 by 0100, 3 by 1100, 4 by 0010, 5 by 1010, 6 by 0110, 7 by 1110, 8 by 0001, and 9 by 1001." I've never seen someone use this form of binary notation(little-endian?) when writing binary numbers. Edit: I suppose he's writing the numbers in the order they'd be input into the machine.
- abecedarius 2y agoI've read that since Arabic goes right-to-left, decimal numbers are little-endian there.
- flohofwoe 2y agoI think it's the other way around, our numbers use an unusual right-to-left notation because we got them from the Saracens. The "natural" notation fitting our left-to-right-writing would look like Turings binary.
- dragonwriter 2y agoThe natural notation fitting our spoken language combined with the left-to-right writing system used for it is big-endian. Which is what we use.
- flohofwoe 2y agoLook at some Arabic text, they use the same "number endianess" as we do, and the Arabs is where we got our numbers from. I bet it was a historical accident that we didn't reverse the written numbers when adopting the decimal system into our left-to-right writing system. In some Germanic languages the spoken numbers (for the last two digits at least) are even still reversed from the writing, eg "twenty-five" is "five-and-twenty" in German - same in "old English" btw). PS: interesting tidbit, apparently "old" Arabic was reading numbers strictly from right-to-left (eg one-and-ten-and-hundred), but later switched to a more "western convention" of starting with the major digits. Would be interesting how it worked in the original Hindu system (where the Arabs learned of the decimal system).
- deleted 2y ago[deleted]
- ahoka 2y agoA little bit easier on the eyes: https://rauterberg.employee.id.tue.nl/lecturenotes/DDM110%20CAS/Turing/Turing-1951%20Programmers%20handbook%20for%20manchester%20electronic%20computer.pdf https://rauterberg.employee.id.tue.nl/lecturenotes/DDM110%20...
- luke-stanley 2y agoThanks.
- lisper 2y agoPersonally, I think the modern typesetting discards a lot of the essential value of the original. My interest in this manual stems not from any desire to program a Mark I, but because I want to connect with the past and understand what programmers of that era had to deal with. A big part of that was documentation that was not pristine, that was full of hand-written notes and symbols that they had to somehow make sense of nonetheless. It's like the difference between a real vintage airplane and a modern replica. The replica looks superficially the same, but when you look at the details it feels, well, modern. There's something radically different about flying a plane with period [1] vs modern [2] avionics. [1] https://media.defense.gov/2015/Aug/03/2001266310/780/780/0/150803-F-IO108-001.JPG https://media.defense.gov/2015/Aug/03/2001266310/780/780/0/1... [2] https://www.scalewings.com/sw-51-mustang/ https://www.scalewings.com/sw-51-mustang/
- Animats 2y agoThis is dated 1950, when the Manchester "Baby" was working, but the Mark I wasn't working yet. This was five years after Von Neumann's original draft of the EDVAC design. The EDVAC itself was delivered in 1949. Actual EDVAC report [2] (reset in Tex for readability) [3]. The EDVAC report is something everyone in computer science should read, if they haven't already. The big problem in the early days was memory. Early memory systems were not only small, but were usually delay lines, where you have to wait for the slot you want to come around, like a disk. Not random access. Both the EDVAC and the MARK I had some true CRT-type random access memory, but not much of it. The Mark I had an index register, which was missing from the EDVAC. That was the last essential piece of CPU architecture needed to make programming reasonably sane. Otherwise you had to store into your program code to index. [1] https://en.wikipedia.org/wiki/First_Draft_of_a_Report_on_the_EDVAC https://en.wikipedia.org/wiki/First_Draft_of_a_Report_on_the... [2] https://archive.org/details/firstdraftofrepo00vonn https://archive.org/details/firstdraftofrepo00vonn [3] https://archive.org/details/vnedvac https://archive.org/details/vnedvac
- rahen 2y agoThe Manchester Mark 1 was working but the Ferranti Mark 1 (its cleaned up, commercial design) wasn't finished yet. The SSEM/Baby had evolved into the Mark 1 by 1949.
- crawfishphase 2y agostill better than brainfuck