Researcher Resurrects the First Computer
aleph60 writes "A German researcher is about to resurrect the first fully electronic general-purpose stored-program computer, the Manchester Mark 1 (1948). The functional replica will run the source code of an original program from 1952 by Christopher Strachey, whose sole purpose was generating love letters; it is historically interesting as one of the first examples of a text-generating program. The installation will be shown at an art exhibition in Germany at the end of April." Here is researcher David Link's Manchester Mark I emulator home, which generates a new love poem on each page load. When the Mark I had been used to search for new Mersenne primes in 1949, a press account coined the phrase "electronic brain" to characterize it.
HONEY LOVE
YOU ARE MY DEAR PASSION: MY ADORABLE FERVOUR: MY ARDENT INFATUATION: MY ARDENT DEVOTION. MY PASSIONATE LUST BREATHLESSLY HOPES FOR YOUR LIKING.
YOURS BURNINGLY
M. U. C.
Now that's some vintage computer porn!
But seriously, I'm interested in how the Manchester Mark 1 implemented its random number instruction (to select the phrases for the love poems). Was it von Neumann's middle square method from 1946? Does anyone know?
I remember lengthy discussion in my undergrad days of how a completely logical computer could come up with a truly random number and talking about the theory that every software solution is pseudorandom. I'm just wondering what the first computer had implemented.
My work here is dung.
Roses are red,
Violets are blue.
Fondle my wee wee
And I'll massage your woo woo.
Let's see that old heap create something as romantic as that!
A article about resurrection on Good Friday, perfect timing. ;)
In his collection The Cyberiad , Stanislaw Lem has two engineers create a computer capable of creating poetry. The resulting poem is a love poem full of references to mathematics. I wonder if this old computer served as Lem's inspiration.
Computer: My processor races at
the way you nurture
my love kernel module
dearest, adored researcher
Researcher: Err, thanks... but I don't think of you that way. Let's just be friends.
Computer: heart dumped. Recover mode initiated. s/love/eternal hate/g.
Computer: Yes, fleshy one... Friends. Oh, yes. Friends.
Strachey was also the lead programmer behind the programming language CPL, the great-grandfather of C (via BCPL and B). CPL was too ambitious and was never completely implemented - it tried to do everything; a bit like Perl 6 really.
The overview paper:http://comjnl.oxfordjournals.org/cgi/content/abstract/6/2/134 is quite interesting; sadly it is now behind a pay-wall. There are some features of the language, such as type inference, which have not become common until recently. It also has some obvious poor decisions with hindsight - the same character starts and ends blocks; all lower case letters are single-character variable names; multiple-character variable names must be capitalised (this is done to allow implicit multiplication, ie, xyz=x*y*z). I suspect it could be implemented without huge difficulty with modern tools. Unfortunately, the full definition was never published, and only exists in a few copies of 'The CPL Working papers' archived in university libraries. Perhaps one day google will scan it.
And that's translated. Lem wrote in Polish. He may have been a genius, but Michael Kandel, who was his English translator, must have been one too...
(Also, damn Slashdot for not allowing HTML entities in posts. The formula in the last line is supposed to be represented mathematically.)
Lots of links about it here.
They even had a contest for the best modern program that could run on the "Baby" Mark 1. The computer had 32 words of 32 bits each and had only 6 instructions stored in 3 bits: STOre, SUBtract, LoaDNegative, JuMP, Jump Relative/JRP, CoMPare/conditional branch, and SToP.
The contest winner was nothing more than a countdown timer. I'd guess that it won for out-of-the-box thinking in the presentation: The instructions were: Load program into memory. Pour hot water into pot noodles. Press start button. Wait for end-of-program light to light up. Enjoy noodles. Ignore output.
Knowledge is how to play a game, intelligence is how to win, wisdom is knowing what game to play.
...with the ILOVEYOU virus.
But, I wanted socialized health insurance!
The title is misleading. The Baby and MMk1 are the first all-electronic (no mechanical elements) fully stored-program (the program was entirely stored in internal RAM, there was no external component to the program) stored-data (there was no external data source either, data was entirely held in RAM) computer. Since this is how people perceive computers in the modern era, for the most part, this is usually shortened to "first modern computer".
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
Scientists from the RAND Corporation have created this model to illustrate how a "home computer" could look like in the year 2004. However the needed technology will not be economically feasible for the average home. Also the scientists readily admit that the computer will require not yet invented technology to actually work, but 50 years from now scientific progress is expected to solve these problems. With teletype interface and the Fortran language, the computer will be easy to use.
Oh, it really does matter. Early computers had to be hard-wired to match the logic of the program. The next generation could only retain one instruction at a time, which meant that loops required tape to feed back and forwards - and, tape being what it is, that's too fragile for any form of non-deterministic loop. Recursion is completely impossible because there is no meaningful program state as the only thing you can store is data. Dynamic code and dynamic linking have no meaning. Neither does self-modifying code, although that tends to be rather rare these days. As code and data are physically distinguished, you couldn't even pass a pointer to a function, so such a machine could never support languages as advanced as C, and certainly couldn't handle object-oriented notions.
The moment you get to true all-electronic stored-program stored-data machines, you enter a world in which procedural and functional logic is possible, where programming techniques we take for granted can actually exist. Sure, you couldn't run Linux on the MMk1, at least as it was left, but it was the first machine to have sufficient underlying hardware that it was intrinsically capable of every task an OS like Linux needs to perform.
If someone were to take the MMk1 design and add the necessary opcodes and memory, you COULD run Linux (with kernel module support) on it. You would not need to re-architecture the machine. No matter how you extended ABC or ENIAC, you could never run an OS like that, simply because the architecture is too primitive. It lacks key capabilities.
True, running Linux on the MMk1 would be horribly slow. I definitely advise against running X, especially on the limited display available to it (8x32 pixels). However, like I said, the architecture would handle it. Turing and Kilburn were absolute geniuses in that they did not over-optimize their machine but built something totally generic and then only implemented as much as they needed.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)