[Beowulf] Fortran is Awesome
Lux, Jim (337K)
James.P.Lux at jpl.nasa.gov
Mon Dec 3 18:04:08 PST 2018
From: Beowulf [mailto:beowulf-bounces at beowulf.org] On Behalf Of Robert G. Brown
Sent: Friday, November 30, 2018 9:35 AM
To: Paul Edmon <pedmon at cfa.harvard.edu>
Cc: beowulf at beowulf.org
Subject: Re: [Beowulf] Fortran is Awesome
On Thu, 29 Nov 2018, Paul Edmon wrote:
> Not necessarily.? I learned Fortran as part of my Numerical Methods
> for Physicists in grad school.? We had the option of using C or
> Fortran.? Fortran has proved much more useful to learn than C and I've picked up C on the side.?
> In many cases programming is a matter of logical structured thinking,
> if you can get that the rest is learning syntax for different languages.
> For people doing numerical methods, Fortran is way superior in terms
> of usability than C.? That said I would never teach Fortran in a
> Computer Science class, but in a Numerical Methods for Scientists I would go with Fortran.
That's similar to my own experience, actually -- I learned PL/1 (gasp, I
know:-) in my first programming course, used it in my second course (writing an assembler emulator and compiler emulator in PL/1 was entertaining), and the only other course I took in programming of any sort was Numerical Methods, and Learned Fortran IV (and how to do e.g.
quadrature and lots more) in that course. For a long while all of my actual programming was in F-IV as that's what the IBM 360/370 would run and it let me use at least some of the stuff from our textbook as well as a couple of other big books filled with F-IV numerical code, but in the end I wrote a ton myself. I literally filled a box with cards writing a complicated angular momentum coupling code for nuclear scattering experiments -- two ways, one of them a short form derived by my employer, one of them brute force -- to verify that his derivation was correct within a single phase error.
BUT, F-IV's I/O sucked. Really. Hollerith? The branching sucked. The line requirements (designed for first cards, then TTY lines) sucked.
The character data handling in general sucked. Its conditionals were comparatively primitive. I continued using it across getting into grad school and writing my dissertation and programming my dissertation, but somewhere in the mid-late 80's I started really using PCs big time, as they got to where I could actually run SOME stuff on them instead of expensive, expensive mainframes or the department's expensive, expensive mini
... and that's sort of the thing.. I spent most of my early professional career writing software in Fortran that had no business being written in Fortran, but that's what was available. Late 70s, early 80s.
The US Navy's aircraft routing system (OPARS) - not a lot of numerical computation, but lots of graph handling and implementation of the A* minimum path algorithm. Why yes, you CAN implement linked lists and pointers in Fortran arrays. That and interpolation into gridded weather products of one sort or another. That ran on a big CDC-7600 used to run numerical weather models.
No C language there.
The Los Angeles Police Department's computer dispatch system (ECCCS) was written in Fortran - because that's what was available on the PDP 11/70 running RSX-11M in a 4 processor multiprocessor configuration (shared address space using PCL-11B, and dual ported peripherals)
Not a lot of arithmetic, almost all text management, device management, and databases - yes folks, we wrote a B-tree database system running on dual port disk drives with automatic shadowing and hot standby failover. We wrote what are essentially device drivers to format messages in BiSync to send and receive from the in-car terminals. Hard real time with millisecond kinds of response requirements to sendi coded messages via serial ports to remote radio receivers to switch channels and audio streams. (Incoming 911 call assigned by dispatcher to operator 37 and the audio needs to follow) And a whole room full of PDT-11s (which are basically a VT100 with a LSI-11 inside)
So while there was a C compiler for the PDP-11, it wasn't available for RSX-11M in 1979. I doubt they would have run a mission critical system on Unix back then.
I just found this:
! DECUSC.HLP Created by Martin Minow, 25-Jul-80, edited 11-Feb-82
1 C Decus C is a PDP-11 compiler for the C language. It is distributed
by Decus and is otherwise unsupported. It may be used under RSX11-M,
RSTS/E, RT11, and VAX/VMS (compatibility mode). The language
is generally as described in Kernighan and Ritchie's book, The
C Programming Language (with several restrictions).
Key phrases "unsupported" and "generally as described"
I wrote an assembler for a one-off bitslice processor based on the AM2901 in Fortran (running on PRIMOS from Prime computers) Fun fact, the operating system was written in Fortran IV, with just a bit of Assembler. Not only that, but the PRIME CPU design was tailored to Fortran and had a single instruction to do the 3 way Fortran branch. Take that Burroughs, with your Algol based CPU. (although I really liked the Burroughs big machine design - made specifically for high level languages, reentrancy without pain, multiple stacks, blindingly fast compilers)
I don’t recall seeing significant C in the "non-academic" world, especially in PCs until the mid-late 80s - compilers cost too much, etc. I think I actually wrote code in Ada on a IBM PC before I wrote code in C (thanks to a discount non-conforming Ada compiler called Janus)- and plenty of Fortran, Basic and Pascal. Of course, I was running Fortran on a Z80 machine in 1977, too.
A friend of mine was doing development in C on a 68000 based machine in the mid 80s.
TL;DR - You can do amazing things in Fortran, and for a good part of computing history, it was the Fortran compiler that was first compiler released and supported by the mfr, probably because of significant government funding for computational work that is Fortran's forte. Numerical simulations of shock waves, weather, particle transport, etc.
More information about the Beowulf