The earliest report from the Fortran project is https://www.softwarepreservation.org/projects/FORTRAN/BackusEtAl-Preliminary%20Report-1954.pdf; it says "The IBM Mathematical Formula Translating System or briefly, FORTRAN, will comprise a large set of programs to enable the IBM 704 to accept a concise formulation of a problem in terms of mathematical notation and to produce automatically a high speed 704 program for the solution of the problem." I worked with John in 1974-1975, and I remember him saying he'd consulted with Gene Amdahl (704 architect) on floating-point and index registers, and realized that with those features in the hardware, it was time for higher-level programmer assistance. And In fact the first Fortran compiler introduced a variety of optimization techniques (reduction in strength, etc.) -- see the softwarepreservation.org site for references.
Re BCPL: This is an excellent topic -- one of the first "system programming" languages (but also consider the various Algol 58 dialects -- see https://www.softwarepreservation.org/projects/ALGOL/algol58impl/), easily and widely ported, inspiration for Thompson and Ritchie, etc.
Re: TX-2: Definitely mention its influence on the Xerox Alto. (This was one of the few times Bob Taylor felt it appropriate to inform Chuck Thacker of prior art.) The subsequent D machines also multitasked their microprocessor for I/O, but were much more complex. I think there are references for the details (see http://www.bitsavers.org/pdf/xerox/, but it's likely not something you want to pursue).
Re COMIT: Again, I never studied it, but it inspired Danny Bobrow to do a LISP version called Meteor. And that may have inspired Warren Teitelman to include a lot of pattern matching features into BBN LISP/INTERLISP>
I don't know much about the Algol 58 variants. I played with MAD a little back in the late 1960s and always loved the Alfred E. Neumann lineprinter-art I'd get when my program didn't compile; sometimes I'd add syntax errors just to get another copy.
JOVIAL was used by the Air Force and NELIAC by the Navy. Harry Huskey was involved with the design of NELIAC; his graduate student Niklaus Wirth used NELIAC for his PhD project, which evolved into EULER.
Thanks very much, Paul! When I read the Stretch book (Planning a Computer System, https://web.archive.org/web/20170403014651/http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf), which I'd found on a random shelf at The MIT Coop, it was so cool to see all these great features like bit addressing (!), and I was still too naïve to realize how that would hurt performance and complexity (just as IBM had been, a decade earlier). Back then I didn't understand cryptanalysis at all and I found the description of Harvest impenetrable. Since then I've got to see the Colossus replica at Bletchley Park breaking codes using a high-speed paper tape reader and a little glue and plenty of gravity to read through a batch of ciphertext messages over and over and over, which gave me a better understanding of how you can get a lot done with almost no technology. Time to read up on Harvest! (It's so often so much easier to read a lot than to write a little.)
"Interestingly, the first FORTRAN compiler was for the IBM 701 and so depended on software floating-point, but FORTRAN was not announced until the later IBM 704, which had hardware floating-point support." Actually, it was always for the IBM 704. Backus had worked on Speedcode for the 701, with software floating point and index registers. He realized he need to do more for the IBM 704, with its hardware floating point and three index registers, thus the Fortran proposal in late 1953.
See:
John Backus. 1978. The history of Fortran I, II, and III.
Thanks very much, Paul. That's pretty much what I remembered too, BUT I recently came across one old writeup claiming Backus and his group had produced *something* called FORTRAN on the IBM 701 that was simply not fast enough or otherwise powerful enough, and so Backus got floating-point hardware put in the IBM 704 first. I'll go back and check references and fix my text.
(I came across various incorrect facts in these old papers. Here's another: On the IBM 701, performing a MPY or DIV instruction might either slow down or speed up the execution of the next several instructions. I couldn't find any documentation about WHY and HOW this happened, EXCEPT one claiming this was for memory refresh in the Williams tubes. Since this makes no sense, I didn't include it in this post. The problem with FORTRAN might have been similar sloppy writing, but I'll try to keep it from infecting my own.)
Up next is a short post on BCPL, leading up to a long one on the Lincoln Labs TX-2. (I programmed the TX-2 in BCPL in a summer job in 1973.) I'm trying very hard *not* to write about CPL too—I've found contradictory write-ups concerning even the decision-making on the name "CPL"—but I do think I'll need to mention the TX-2's influence on multitasked I/O on the Xerox Alto. (BTW, did the Dorado or the Dolphin or the Star have similar I/O architectures or were they more modern?) Then I need to handle the rest of the IBM 700–7000 scientific computers, probably including the IBM 7030 Stretch too. (I've never understood its special cryptanalysis hardware, so I'll have to learn that first.) Later, under Obscure Languages, I think I'll do a short one on Victor Yngve's COMIT language, whose documentation is SO unreadable....)
Thanks! That was one of my sources, and I need to include a list of references. (The Principles of Operation is at the top, of course.)
I find the various after-the-fact summaries on the web a little dissatisfying; for example, this one doesn’t mention that the IBM 704 has index registers, which pretty much eliminated the need for self-modifying code. I’ve also found mistakes in various people’s summaries….
The earliest report from the Fortran project is https://www.softwarepreservation.org/projects/FORTRAN/BackusEtAl-Preliminary%20Report-1954.pdf; it says "The IBM Mathematical Formula Translating System or briefly, FORTRAN, will comprise a large set of programs to enable the IBM 704 to accept a concise formulation of a problem in terms of mathematical notation and to produce automatically a high speed 704 program for the solution of the problem." I worked with John in 1974-1975, and I remember him saying he'd consulted with Gene Amdahl (704 architect) on floating-point and index registers, and realized that with those features in the hardware, it was time for higher-level programmer assistance. And In fact the first Fortran compiler introduced a variety of optimization techniques (reduction in strength, etc.) -- see the softwarepreservation.org site for references.
Re BCPL: This is an excellent topic -- one of the first "system programming" languages (but also consider the various Algol 58 dialects -- see https://www.softwarepreservation.org/projects/ALGOL/algol58impl/), easily and widely ported, inspiration for Thompson and Ritchie, etc.
Re CPL: see http://www.ancientgeek.org.uk/CPL/ .
Re: TX-2: Definitely mention its influence on the Xerox Alto. (This was one of the few times Bob Taylor felt it appropriate to inform Chuck Thacker of prior art.) The subsequent D machines also multitasked their microprocessor for I/O, but were much more complex. I think there are references for the details (see http://www.bitsavers.org/pdf/xerox/, but it's likely not something you want to pursue).
Re Stretch/HARVEST : I don't know anything about it, but Fran Allen worked on it -- see https://www.computerhistory.org/collections/catalog/102621818 .
Re COMIT: Again, I never studied it, but it inspired Danny Bobrow to do a LISP version called Meteor. And that may have inspired Warren Teitelman to include a lot of pattern matching features into BBN LISP/INTERLISP>
I don't know much about the Algol 58 variants. I played with MAD a little back in the late 1960s and always loved the Alfred E. Neumann lineprinter-art I'd get when my program didn't compile; sometimes I'd add syntax errors just to get another copy.
JOVIAL was used by the Air Force and NELIAC by the Navy. Harry Huskey was involved with the design of NELIAC; his graduate student Niklaus Wirth used NELIAC for his PhD project, which evolved into EULER.
Re Stretch/Harvest, there are links to manuals (in bitsavers.org) in this article: https://en.wikipedia.org/wiki/IBM_7950_Harvest .
Thanks very much, Paul! When I read the Stretch book (Planning a Computer System, https://web.archive.org/web/20170403014651/http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf), which I'd found on a random shelf at The MIT Coop, it was so cool to see all these great features like bit addressing (!), and I was still too naïve to realize how that would hurt performance and complexity (just as IBM had been, a decade earlier). Back then I didn't understand cryptanalysis at all and I found the description of Harvest impenetrable. Since then I've got to see the Colossus replica at Bletchley Park breaking codes using a high-speed paper tape reader and a little glue and plenty of gravity to read through a batch of ciphertext messages over and over and over, which gave me a better understanding of how you can get a lot done with almost no technology. Time to read up on Harvest! (It's so often so much easier to read a lot than to write a little.)
Oops -- I meant that to be a reply to your reply, but it came out at the top level. Maybe you can move it?
"Interestingly, the first FORTRAN compiler was for the IBM 701 and so depended on software floating-point, but FORTRAN was not announced until the later IBM 704, which had hardware floating-point support." Actually, it was always for the IBM 704. Backus had worked on Speedcode for the 701, with software floating point and index registers. He realized he need to do more for the IBM 704, with its hardware floating point and three index registers, thus the Fortran proposal in late 1953.
See:
John Backus. 1978. The history of Fortran I, II, and III.
History of programming languages.
Association for Computing Machinery, New York, NY, USA, 25–74. https://doi.org/10.1145/800025.1198345;
see also https://www.softwarepreservation.org/projects/FORTRAN/ .
Thanks very much, Paul. That's pretty much what I remembered too, BUT I recently came across one old writeup claiming Backus and his group had produced *something* called FORTRAN on the IBM 701 that was simply not fast enough or otherwise powerful enough, and so Backus got floating-point hardware put in the IBM 704 first. I'll go back and check references and fix my text.
(I came across various incorrect facts in these old papers. Here's another: On the IBM 701, performing a MPY or DIV instruction might either slow down or speed up the execution of the next several instructions. I couldn't find any documentation about WHY and HOW this happened, EXCEPT one claiming this was for memory refresh in the Williams tubes. Since this makes no sense, I didn't include it in this post. The problem with FORTRAN might have been similar sloppy writing, but I'll try to keep it from infecting my own.)
Up next is a short post on BCPL, leading up to a long one on the Lincoln Labs TX-2. (I programmed the TX-2 in BCPL in a summer job in 1973.) I'm trying very hard *not* to write about CPL too—I've found contradictory write-ups concerning even the decision-making on the name "CPL"—but I do think I'll need to mention the TX-2's influence on multitasked I/O on the Xerox Alto. (BTW, did the Dorado or the Dolphin or the Star have similar I/O architectures or were they more modern?) Then I need to handle the rest of the IBM 700–7000 scientific computers, probably including the IBM 7030 Stretch too. (I've never understood its special cryptanalysis hardware, so I'll have to learn that first.) Later, under Obscure Languages, I think I'll do a short one on Victor Yngve's COMIT language, whose documentation is SO unreadable....)
See also
http://www.columbia.edu/cu/computinghistory/701.html
I used this reference too, and I’ll include it in the List of References. Thanks again!
See also
https://www.ibm.com/ibm/history/ibm100/us/en/icons/ibm700series/
Thanks! That was one of my sources, and I need to include a list of references. (The Principles of Operation is at the top, of course.)
I find the various after-the-fact summaries on the web a little dissatisfying; for example, this one doesn’t mention that the IBM 704 has index registers, which pretty much eliminated the need for self-modifying code. I’ve also found mistakes in various people’s summaries….