5 ms·
A Glimpse into the Apollo Guidance Computer
- danso 10y agoIncluded near the bottom of the article is a link to a Spanish outlet's interview with Margaret Hamilton (the lead flight software engineer) that I had only recently discovered: https://medium.com/@verne/margaret-hamilton-the-engineer-who-took-the-apollo-to-the-moon-7d550c73d3fa https://medium.com/@verne/margaret-hamilton-the-engineer-who... She gives some general insight to how the code works, but the biggest highlight for me was how she apparently coined the term "software engineering": > Software during the early days of this project was treated like a stepchild and not taken as seriously as other engineering disciplines, such as hardware engineering; and it was regarded as an art and as magic, not a science. I had always believed that both art and science were involved in its creation, but at that time most thought otherwise. Knowing this, I fought to bring the software legitimacy so that it (and those building it) would be given its due respect and thus I began to use the term “software engineering” to distinguish it from hardware and other kinds of engineering; yet, treat each type of engineering as part of the overall systems engineering process. When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline. Apparently, she's kept off of the social network grid, but would love if someone could convince her to do an AMA.
- zappo2938 10y agoDo you think in the male dominated world of engineering in the middle part of the 20th century that they considering programming to not be a serious discipline in engineering lead to women being hired in positions they would not have if programming carried higher prestige? If so what does this tell us about the contributions made by women like Margaret Hamilton, Grace Hopper, and the ENIAC programmers? The issue of men dominating software engineering today isn't about talent or potential, but likely grounded in sexism. If you consider hiring women you double your potential labor pool. (If you are going to down vote this comment, can you please take a moment to explain why?)
- fusiongyro 10y agoYes, it was considered to be something like secretarial work. It took a long time for there to be a real appreciation for what programming was going to be like. The contributions of Hamilton and Hopper during that era suggests to me that when things are new, they are undervalued, and that undervalued professions and undervalued people have a way of finding each other and doing great things.
- spectre256 10y agoAbsolutely they considered programming to be not as serious. There's a great book called Digital Apollo by David Mindell[1] that talks about the creation of the Apollo Guidance Computer. One of the stories is of a male manager who, after being put in charge of a team of software developers, asks his wife not to tell any of their friends he was managing a software team. [1] https://www.amazon.com/Digital-Apollo-Human-Machine-Spaceflight/dp/0262516101 https://www.amazon.com/Digital-Apollo-Human-Machine-Spacefli...
- jakub_h 10y agoActually, it was his wife who asked him (as a joke).
- hellomoto998 10y agoYou know it might be that being a good programmer is not necessarily moored to sex.
- paloaltokid 10y ago> (If you are going to down vote this comment, can you please take a moment to explain why?) Generally, any comment or story on HN that suggests the presence of sexism in the world of software gets downvoted/flagged. Your account is almost a year old so I'm surprised you didn't know this. :)
- deleted 10y ago[deleted]
- 10y ago
- jakub_h 10y agoThere was a whole conference dealing with the same topic at about the same time, organized by the military (http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports/ http://homepages.cs.ncl.ac.uk/brian.randell/NATO/NATOReports...) and attended by dozens of people from many institutions. Clearly, it had already been considered a problem by then. Also remember that the mid-1960s were when the OS/360 effort took place, inspiring Fred Brooks' famous book.
- nickpsecurity 10y agoHere's the company she ran afterward. Most of her time went into 001 Toolkit. http://htius.com http://htius.com
- EvanAnderson 10y agoIt's probably worth linking to the prior discussion re: the Github repo itself. https://news.ycombinator.com/item?id=12048945 https://news.ycombinator.com/item?id=12048945
- deleted 10y ago[deleted]
- bluetomcat 10y agoInteresting fact: the listings contain comments indicating page numbers in the form of "# Page [number]". To find the maximum page number, I ran the following one-liner: $ awk '/# Page / { print $3 }' Apollo-11/*.s | sort -gr | head -1 1516 It is often speculated that in the famous photo, Margaret Hamilton is standing next to the pile of the complete source code. However, 1516 pages are far from such a high pile. I wonder, aren't these books just containing different revisions of the code, or maybe not all of the code has been published?
- rca 10y agoApparently the AGC only had 36,864 words of rom. Looking at a random file from the github repo, each page seems to contain 50 lines. So if you put one instruction (one word) per line you could fit the whole rom inside 738 pages (assuming there's no optimization during assembly). Add some space for the comments and blank lines, and 1516 seems about right. In any case it's doubtful a single program spanning the whole pile could fit in the AGC rom.
- trynewideas 10y agoPer this interview between Hamilton and Jaime Rubio Hancock (https://medium.com/@verne/margaret-hamilton-the-engineer-who-took-the-apollo-to-the-moon-7d550c73d3fa https://medium.com/@verne/margaret-hamilton-the-engineer-who...): > Q: Was this picture taken during the Apollo project development? When was it taken and who took it? > A: Here is a description of the photo excerpted from an MIT Draper Lab document: > > “Taken by the Draper Lab photographer in 1969 (during Apollo 11). Here, Margaret is shown standing beside listings of the software developed by the team she was in charge of, the LM and CM on-board flight software team”. Hamilton again, in this Vox interview (http://www.vox.com/2015/5/30/8689481/margaret-hamilton-apollo-software http://www.vox.com/2015/5/30/8689481/margaret-hamilton-apoll...): > "In this picture, I am standing next to listings of the actual Apollo Guidance Computer (AGC) source code," Hamilton says in an email. "To clarify, there are no other kinds of printouts, like debugging printouts, or logs, or what have you, in the picture."
- trynewideas 10y ago
- dmix 10y agoApparently Science Channel did an episode on "MIT's work on the Apollo Guidance Computer" (episode 3): https://en.wikipedia.org/wiki/Moon_Machines#Part_3:_the_navigation_computer https://en.wikipedia.org/wiki/Moon_Machines#Part_3:_the_navi... They are available on public torrent sites.
- utopcell 10y agoon a related note, this has passed by HN in the past and it is still fascinating to watch: http://www.firstmenonthemoon.com/ http://www.firstmenonthemoon.com/
- bodzo 10y agoThe Margaret Hamilton picture actually just shows her next to computer manuals, not code she wrote. This was cleared up in another thread a long time ago.
- jakub_h 10y agoIt's not code that she wrote (up to ~350 people worked on the code at one time) but it's not "computer manuals" either.
- js2 10y agoTo address the limited instruction set, the AGC team wrote a software virtual machine (or p-code machine) for the AGC to interpret an entirely new instruction set called the “interpretive language”. Interestingly, Steve Wozniak would come up with a similar solution for the Apple II about a decade later: https://en.m.wikipedia.org/wiki/SWEET16 https://en.m.wikipedia.org/wiki/SWEET16 SWEET16 is an interpreted byte-code language invented by Steve Wozniak and implemented as part of the Integer BASIC ROM in the Apple II series of computers. It was created because Wozniak needed to manipulate 16-bit pointer data in his implementation of BASIC, and the Apple II was an 8-bit computer.
- kragen 10y agoShort Code was an interpreted bytecode proposed by Mauchly in 1949 and implemented by Schmitt on the UNIVAC I in 1950: https://en.wikipedia.org/wiki/Short_Code_%28computer_language%29 https://en.wikipedia.org/wiki/Short_Code_%28computer_languag... Going back further, Turing's 1936 Universal Machine is "universal" because it can interpret a description of another machine, which could be a different Universal Machine (i.e. an interpreter), an application-specific machine, or even the same universal machine (i.e. self-emulation). Gates and Allen developed Altair BASIC on a PDP-10 at Harvard in 1976, handling invalid-instruction traps by emulating the 8080 instructions they were using, thus turning the PDP-10's operating system into an interpreter for a different instruction set. The Alto being used at the same time at Xerox PARC was optimized for such emulations: it ran "microcode" loaded from RAM, so that you could program it to interpret whatever instruction set was most appropriate for your application. Throughout the 1960s and 1970s, a large fraction of IBM computer time was spent running emulators of earlier IBM models like the 650, 704, 709, and 7090, in order to run the software developed for those older machines. And of course today much of our computer time is spent running software represented as JVM bytecodes, SpiderMonkey bytecodes https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecodes https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Sp..., CPython bytecodes, or Lua "bytecodes"; and Vulkan, the new replacement for OpenGL, defines a vendor-independent bytecode format for representing GPU programs. A level below this, the currently popular out-of-order CPUs recompile the i386 or amd64 instructions emitted by our compilers into sets of "micro-ops", which are then independently scheduled; sometimes these micro-op representations are cached so that the recompilation process doesn't have to be repeated every time through a loop. You could argue that this, even more than the usual microcode approach that was supposed to go out the window with the advent of RISC, has turned our entire software infrastructure into bytecode for a more convenient virtual machine. Your comment seems to be predicated on the misconception that programming a computer to interpret a more convenient instruction set is some kind of bizarre or unusual thing to do. In fact, it is not only commonplace, but absolutely central to our modern concept of "computer".