[COFF] Happy birthday, John Backus!
Clem Cole
clemc at ccc.com
Thu Dec 5 00:54:08 AEST 2019
Intel ifort <https://software.intel.com/en-us/fortran-compilers> which as
one of my friends like to say "has the DEC Fortran compiler DNA ground up
and reinserted" ;-)
On Wed, Dec 4, 2019 at 12:41 AM Wesley Parish <wobblygong at gmail.com> wrote:
> I've just run that little program through gfortran without switches
> (naming it pyramid.for) and it comes up with:
>
> pyramid.for:25:6:
>
> ;ENDDO;IMPLICIT(IF)=IF;IMPLICIT(EXTERNAL)=IF;DOFORRETURN=IF,GOTO-EX
> 1
> Error: Bad continuation line at (1)
> pyramid.for:12:9:
>
> R;DOFORIF=INTEGER,INTEGER;ENDDO;INTEGER=IF+IF;GOTO=INTEGER*INTEGER*
> 1
> Warning: Deleted feature: Loop variable at (1) must be integer
> pyramid.for:23:56:
>
> IF,INTEGER,EXTERNAL,RETURN;DOFOREXTERNAL=IF,GOTO;DOFORRETURN=INTEGE
> 1
> Warning: Deleted feature: Loop variable at (1) must be integer
> pyramid.for:25:52:
>
> ;ENDDO;IMPLICIT(IF)=IF;IMPLICIT(EXTERNAL)=IF;DOFORRETURN=IF,GOTO-EX
> 1
> Warning: Deleted feature: Loop variable at (1) must be integer
> pyramid.for:26:43:
>
> XTERNAL;WRITE(IF,'(''$ '')');ENDDO;DOFORRETURN=IF,EXTERNAL;WRITE(I
> 1
> Warning: Deleted feature: Loop variable at (1) must be integer
> pyramid.for:27:62:
>
> IF,'(''$''I4)')IMPLICIT(RETURN);ENDDO;WRITE(IF,'( /)');DOFORRETURN=
> 1
> Warning: Deleted feature: Loop variable at (1) must be integer
> pyramid.for:23:34:
>
> IF,INTEGER,EXTERNAL,RETURN;DOFOREXTERNAL=IF,GOTO;DOFORRETURN=INTEGE
> 1
> Warning: Deleted feature: Loop variable at (1) must be integer
> pyramid.for:15:17:
>
> LSUBROUTINE(IMPLICIT,LOGICAL,GOTO,IF,INTEGER)
> 1
> Warning: Rank mismatch in argument ‘implicit’ at (1) (rank-1 and
> scalar) [-Wargument-mismatch]
>
> I think gfortran must have '--strict' on by default. I might try it
> with the OpenWatcom Fortran compiler next - if it'll install on my
> current Linux box.
>
> Just out of interest, what is your current Fortran 2018 compiler?
>
> Wesley Parish
>
> On 12/4/19, Clem Cole <clemc at ccc.com> wrote:
> > On Tue, Dec 3, 2019 at 2:56 AM Dave Horsfall <dave at horsfall.org> wrote:
> >
> >> As every computer programmer should know, John Backus was emitted in
> >> 1924;
> >> he
> >> gave us the BNF syntax, but the sod also gave us that FORTRAN
> >> obscenity...
> >>
> > Be careful, Fortran still pays a lot of bills (I like to say that it has
> > paid my salary for nearly 45 years and I don't program in it - I'm an OS
> > guy). But Fortran >>is<< the #1 language for anything scientific and I
> > don't think that is going away in the future or really change its
> position
> > in popularity for a number of reasons (my analog is the QWERTY keyboard -
> > that ship has sailed and it's not economically interesting). There are a
> > number of places to check this out, but try looking at Archer AC Code
> > Status
> > <http://www.archer.ac.uk/status/codes/>, which is an interesting HPC
> usage
> > site in the UK. Note that Fortran is by far the leading programming
> > language used for ‘production’ (there are other sites that offer similar
> > data, I'll leave it to the reader to find them).
> >
> > Trivia: there is no way that FORTRAN can be described in any syntax; it
> is
> >> completely ad-hoc.
> >
> > Again, be careful with such observations. First off, I'm fairly sure
> that
> > the Intel Compiler teams (ifort
> > <https://software.intel.com/en-us/fortran-compilers>) use a parser
> > generator for parts of the ifort front-end. (Paul W might know more
> details
> > as he once worked in that technology). As I understand it, the front-end
> > does have a number of special cases in it, so your observation is
> partially
> > true, but the language definition is not 'completely ad-hoc'.
> >
> > The facts are that the language my father learned in the early 1960s
> > (FORTRAN-II) and the language I learned in the late 60's/early 1970s
> > (FORTRAN-IV) are not the same language as today's Fortran-2018, i.e. the
> > language definition has hardly been static. Said in another way, about a
> > year ago, a new standard for Fortran 2018 standard was released – see
> > Fortran
> > 2018 (Formerly Fortran 2015) <https://wg5-fortran.org/f2018.html> and
> > it actually
> > offers support for ‘modern’ ideas such as object-oriented programming:
> > Object-oriented
> > programming in Fortran Wiki
> > <http://fortranwiki.org/fortran/show/Object-oriented+programming>
> > .
> >
> > FWIW: I tried to explain some of these ideas pictorially in my Quora
> > answer: Clem Cole's answer to Is Fortran obsolete?
> > <https://www.quora.com/Is-Fortran-obsolete/answer/Clem-Cole> This is
> not to
> > denigrate other languages like Julia, Tensorflow etc. But the fact is
> that
> > the hammer has been improved and the *ways the nails are delivered has
> > changed*, but the *fundamental action provided* (fastening for nails and
> > scientific computation in the case of Fortran) has been unchanged because
> > it has proven to be the one of the best, if not the best to do the job it
> > is designed to do.
> >
> > That said, I offer the following code snippet, which my Intel 2018
> > compatible compiler accepts without any switches. Which is really a
> > remarkable comment about the women and men in the front-end team:
> >
> > C This FORTRAN program may be compiled and run on a Norsk Data
> > C computer running SINTRAN and the FTN compiler. It uses only
> > C FORTRAN reserved words, and contains just one numerical
> > C constant, in a character string (a format specifier). When
> > C you run it, it prints a well known mathematical construct...
> > C
> > C Even FORTRAN is a block structured programming language:
> > C
> > PROGRAM
> > ;PROGRAM;INTEGERIF,INTEGER,GOTO,IMPLICIT;REALREAL,DIMENSION,EXTERNA
> > AL,FORMAT,END;INTEGERLOGICAL;REALCOMPLEX,DATA,CALL,ASSIGN,CHARACTER
> > R;DOFORIF=INTEGER,INTEGER;ENDDO;INTEGER=IF+IF;GOTO=INTEGER*INTEGER*
> > *INTEGER*INTEGER-INTEGER-IF;CALLFUNCTION(IMPLICIT,REAL,DIMENSION,EX
> > XTERNAL,FORMAT,END,LOGICAL,COMPLEX,DATA,CALL,ASSIGN,CHARACTER);CALL
> > LSUBROUTINE(IMPLICIT,LOGICAL,GOTO,IF,INTEGER)
> > END
> > SUBROUTINEFUNCTIO
> > ON(IMPLICIT,REAL,DIMENSION,EXTERNAL,FORMAT,END,LOGICAL,COMPLEX,DATA
> > A,CALL,ASSIGN,CHARACTER);RETURN
> > END
> > SUBROUTINESUBROUTINE(IMPLICIT,L
> > LOGICAL,GOTO,IF,INTEGER);INTEGERGOTO,IMPLICIT(GOTO),LOGICAL(GOTO),I
> > IF,INTEGER,EXTERNAL,RETURN;DOFOREXTERNAL=IF,GOTO;DOFORRETURN=INTEGE
> > ER,EXTERNAL-IF;IMPLICIT(RETURN)=LOGICAL(RETURN)+LOGICAL(RETURN-IF);
> > ;ENDDO;IMPLICIT(IF)=IF;IMPLICIT(EXTERNAL)=IF;DOFORRETURN=IF,GOTO-EX
> > XTERNAL;WRITE(IF,'(''$ '')');ENDDO;DOFORRETURN=IF,EXTERNAL;WRITE(I
> > IF,'(''$''I4)')IMPLICIT(RETURN);ENDDO;WRITE(IF,'( /)');DOFORRETURN=
> > =IF,GOTO;LOGICAL(RETURN)=IMPLICIT(RETURN);ENDDO;ENDDO
> > END
> > Running the program should yield:
> > 1
> > 1 1
> > 1 2 1
> > 1 3 3 1
> > 1 4 6 4 1
> > 1 5 10 10 5 1
> > 1 6 15 20 15 6 1
> > 1 7 21 35 35 21 7 1
> > 1 8 28 56 70 56 28 8 1
> > 1 9 36 84 126 126 84 36 9 1
> > 1 10 45 120 210 252 210 120 45 10 1
> > 1 11 55 165 330 462 462 330 165 55 11 1
> > 1 12 66 220 495 792 924 792 495 220 66 12 1
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/coff/attachments/20191204/998e59a2/attachment-0001.html>
More information about the COFF
mailing list