From: Rostyslaw J. Lewyckyj on 14 Oct 2006 03:06 sqrfolkdnc wrote: > Joe Morris wrote: > >>... >> >>And before someone asks, I've never seen the source for the original >>FORTRAN compiler based on the first version of the language specs. >>Does anyone know if it's available? > > Nobody has ever seen the source, not even the author. Denise Hopper > wrote it in machine language (octal?) before the first assembler was > written. > Really? before the first assembler? Wow! :)
From: Rostyslaw J. Lewyckyj on 14 Oct 2006 03:11 Andrew Swallow wrote: > AZ Nomad wrote: > >> On 12 Oct 2006 06:07:25 -0700, Ancient_Hacker <grg2(a)comcast.net> wrote: >> >> >>> Anybody have any idea why good old FORTRAN had these quirks: >> >> >> >>> (1) three-way arithmetic IF >> >> >>> (2) Column-6 as a continuation marker >> >> The first 4 (5?) colums were for a card sequence number so you could >> recover >> from dropping a card stack on the floor. THe first available column >> after >> the sequence number was for the continuation marker. > > > Columns 73 to 80 were for card sorting. BASIC is the language with > the label on every line. Putting a label on every line in Fortran > uses up the symbol table and switches the optimiser off. > > Andrew Swallow Really?
From: Brooks Moses on 14 Oct 2006 04:02 Rostyslaw J. Lewyckyj wrote: > Andrew Swallow wrote: >>Columns 73 to 80 were for card sorting. BASIC is the language with >>the label on every line. Putting a label on every line in Fortran >>uses up the symbol table and switches the optimiser off. > > Really? Somewhere online is a scanned version of the October 15, 1956 IBM manual entitled "Fortran Automatic Coding System for the IBM 704", which was pretty much the original public document describing the language. On page 44 [1], there is a list of the various symbol tables that the Fortran compiler uses -- there are quite a lot, so "symbol table" is misleading -- and the first entry is "(TEIFNO Table). The number of Fortran statements which have statement numbers must not exceed 1500." As for switching off the optimiser, that presumably was a later version, as this one is before the compiler was fancy enough that one could switch it on. :) - Brooks [1] Which in the scan is unfortunately repeated in place of page 42. -- The "bmoses-nospam" address is valid; no unmunging needed.
From: glen herrmannsfeldt on 14 Oct 2006 04:49 On 12 Oct 2006 06:07:25 -0700, Ancient_Hacker <grg2(a)comcast.net> wrote: > Anybody have any idea why good old FORTRAN had these quirks: >>>> (1) three-way arithmetic IF As I understand it, a three way branch instruction on the 704. > (2) Column-6 as a continuation marker Statement numbers were up to 32767, so five columns. The 704 did 16 bit sign magnitude integers or 36 bit floating point, both in 36 bit words. (someone else wrote) >> Columns 73 to 80 were for card sorting. BASIC is the language with >> the label on every line. Putting a label on every line in Fortran >> uses up the symbol table and switches the optimiser off. The 704 read each card row into two 36 bit words, ignoring the last eight columns. (I would hate to write the code that converted that into columnwise data.) Stories are that the first Fortran compiler had a good optimizer. It was considered necessary to compete with assembler programmers in code speed. Optimizers I know of know which labels are used and which aren't, but it might be that not all do that. October 15th, 1956, 50 years minus one day. -- glen
From: max on 14 Oct 2006 09:36
"glen herrmannsfeldt" <gah(a)ugcs.caltech.edu> wrote in message news:z6ydncvxQJD7Oa3YnZ2dnUVZ_vednZ2d(a)comcast.com... > > On 12 Oct 2006 06:07:25 -0700, Ancient_Hacker <grg2(a)comcast.net> wrote: > > > Anybody have any idea why good old FORTRAN had these quirks: > > >>>> (1) three-way arithmetic IF > > As I understand it, a three way branch instruction on the 704. > > > (2) Column-6 as a continuation marker > > Statement numbers were up to 32767, so five columns. > The 704 did 16 bit sign magnitude integers or 36 bit floating > point, both in 36 bit words. > > (someone else wrote) > > >> Columns 73 to 80 were for card sorting. BASIC is the language with > >> the label on every line. Putting a label on every line in Fortran > >> uses up the symbol table and switches the optimiser off. > > The 704 read each card row into two 36 bit words, ignoring the last > eight columns. (I would hate to write the code that converted that > into columnwise data.) > > Stories are that the first Fortran compiler had a good optimizer. > It was considered necessary to compete with assembler programmers > in code speed. Optimizers I know of know which labels are used and > which aren't, but it might be that not all do that. > > October 15th, 1956, 50 years minus one day. > > -- glen > First exposure to Fortran was FORTRAN V on a CDC 7600, having previously used PET BASIC. The course notes weren't clear on statement labels, so for some (smallish) program I put a label on every line, like BASIC, and the compiler choked. CDC 7600 was early-mid 1970s technology, but I was using it early 1980s. |