The first computer to which I had reasonable access was the IBM 1130 installed in the Cambridge University Engineering Laboratories near the end of 1966.
It was pretty exiting to me at the time to be able to play with this machine. Here are some reminiscences.
|Determinants||Making Red Ink and Breaking the Machine|
I probably wouldn't remember it at all but I was pleased about how neat and short it was (dunno how short, less than a page) and I had this little exchange with Roland Backhouse in which he was determined it couldn't be done for arbitrary n and insisting on pouring over the code before he would believe it. Backy was reading Maths and the mathematicians were lucky to get their hands on a mechanical calculator.
It was appallingly slow.
Somewhere along the track this came to be a secret ambition, making red ink.
I wrote a program (in Fortran of course) which accepted machine code programs in Hex and stored them in an array. Having done this the program could be requested to enter the program, which it did by exploiting the lack of bound checking in Fortran and the lack of protection in the hardware. It overwrote a jump in the executive, which Fortran programs passed through when they terminated, with a jump to the start of the program assembled in its array. At the end of the program the jump would be reinstated and the program would resume the normal exit route.
With the benefit of this program I learned about how the operating system drove the peripherals and eventually made the red ink.
Some time after this feat the operating system was corrupted. It lived on an 8Mb replaceble disc cartridge, but if you messed it up you had to reload the lot from paper tape, which was very time consuming. I don't think anyone knew what had happened to mess it up, but it took eons to put right and my little Fortran hex assembler was the only thing around that looked suspicious enough to blame.
So I was asked not to use it again, but we were pretty close to the exams by that time so the action was pretty much over anyway.
En route to the red ink I must have got a bit frustrated with waiting for access to the "flexowriters" which we used to punch our programs onto paper tape. There weren't enough of them so they were more of a bottle neck than the computer.
So I wrote a program to enable the computer console to be used for editing paper tapes so that when the computer was idle but the flexowriters were in demand I could edit my programs on the computer. (of course this all sounds pretty silly these days, but this was 30 years ago)
Due to a curiousity in Fortran the tapes coming out were longer than the ones going in. And every time you edited them they came out longer still, even if you were only deleting stuff. I think it was because spaces got changed into tabs on the way in and tabs were output as multiple spaces.
So I got to thinking about programs for eliminating the redundancy which this program injected, and this lead my into the first thoughts I can recall about Artificial Intelligence.
It ran like this.
A perfect program for removing redundancy from a certain class of inputs would translate a source which was not random into outputs which were. Consequently, its inverse would translate random inputs into scripts in the rundundant input class.
So if you had a program which could take a sample of the class and then optimally compress you could feed it with good english and it would subsequently be able to generate good English from random inputs. Taking it one step further, if one fed it English which was not just good, but true, then you should get an algorithm for generating true statements from random numbers.
Of course this doesn't get you very far, it just indicates that removing redundancy is an arbitrarily hard problem.
Maybe he wanted free format input and didn't know how to do it in Fortran. This didn't get off the ground because we were getting too close to the end-of-year exams and that was the end of my stay at Cambridge. Thirty years later we still talk about collaboration, but it hasn't happened yet.
My first job was at Nelson Research Labs working on compiler-compilers.