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. I got deSmet C for myself, taught myself C, and realized that fortran -- even F77 -- was miserable and clunky compared to Fortran-anything, if you wanted to write ANYTHING LIKE a decent UI. A second problem with Fortran was that the MS Fortran compiler for PC-ATs etc in the mid-80s didn't support the 8087, and if you wanted to do anything numerical, you had to use the 8087 and its co-processor descendants (until a few years later they put it all on one chip). C let you inline assembler and wrap them into subroutines for your own library to use the co-processor in code, and that's exactly what I did. Finally, although it took me some time, I learned to use pointers. OMG. Pointers are complete utter magic. Assembler-level programming with upper-level commands. I built perfect data structures without wasted space and could still use very general purpose library routines to do numerical stuff like matrices, angular momentum sums, ODE solutions, quadratures, AND it was remarkably easy to build a graphical front end inside C code and visualize the results of my computations (not so much for fortran, not at anything our grant could afford). At this point, while I do still have all of the fortran code I ever wrote (or very nearly) squirrelled away, I haven't written fortran in maybe 30 years -- somewhere in the late 80's I got my first Unix workstation and Unix and C are basically perfect matches -- and never looked back. ALL of my serious code since then has been in C, and yes, you can write very effective and efficient numerical code in C while suffering far less on I/O, character data processing, UIs, APIs, networking, integration with hardware, portability, and more. All with a language that is a thin veneer of upper level language sensibility on top of raw metal, where you can usually see the assembler shining through (which helps write reasonably optimal code, actually). Fortran arguably retains the advantage in linear algebra-based programming and vectorization, but my own code was not that LA intensive and parallelization was (obviously, or why am I here) more important than vectorization in getting my work done. I had access to vector supercomputers (at enormous cost) and even ran my stuff on them once or twice just to benchmark it, but I could run my stuff on literally 100+ Unix workstations all over campus in the background and get real-world GFLOPs 24x7 (for GLFOP-Years of total effort) "for free" (for the asking very nicely, actually) while I never beat maybe 35 or 40 MFLOPs on a Cray Y/MP, and would have had a tiny handful of hours as EVERYBODY wanted on the Cray Y/MP. I will not willingly code in Fortran ever again. Hell, at my age I may never write serious C applications ever again, but if I write ANYTHING that requires a compiler, its going to be in C. At this point I have literally GBytes of C code I've written, stolen, modified etc and that doesn't include actual libraries or all the stuff in subversion. Dieharder is written in C. I realize that if I learned Fortan all over again today, the current versions of Fortran have absorbed most of the goodness of C while remaining strongly typed, and perhaps if I were learning to code now I'd be more inclined to stick with Fortran if I learned it first. But for me, C is almost perfect freedom. I don't need no stinkin' compiler-time protections, and if I want an object, hey, that's why God invented unions and structs -- keep your creator and destructor and contents access overhead. rgb
-Paul Edmon- On 11/29/18 10:09 AM, Nathan Moore wrote: I've probably mentioned this before.? If a student only has one programming course, teaching fortran feels like malpractice, however, this book is awesome! Classical Fortran, Kupferschmid https://www.crcpress.com/Classical-Fortran-Programming-for-Engineering-and- Scientific-Applications/Kupferschmid/p/book/9781138116436 Nathan On Wed, Nov 28, 2018 at 12:15 PM Paul Edmon <ped...@cfa.harvard.edu> wrote: Very true. I would never use Fortran for an OS.? From what I understand compiler writers still prefer Fortran as its easier to vectorize.? Thus if you want best vector performance from your code Fortran is it, mainly due to the easy of writing a compiler that can do so. In the end use the tool that's best for the job.? That's the moral of the story. -Paul Edmon- On 11/28/2018 12:17 PM, Robert G. Brown wrote: > On Wed, 28 Nov 2018, Paul Edmon wrote: > >> Once C has native arrays and orders them properly, then we can talk :). > > Yeah, like this.? That's really the big difference, isn't it? Although > one can argue about just what "properly" really means... other than "in > the same order that Fortran orders them" ;-) > > ?? rgb > >> >> -Paul Edmon- >> >> On 11/28/18 11:36 AM, Peter St. John wrote: >> ????? Maybe I'm being too serious but in the old days, Fortran was the >> ????? most mature, maintained compiler and the libraries were great, >> ????? then later, C had better compilers but the libraries were still >> ????? great. Now, I think the only good thing about Fortran is that >> ????? it's pretty easy to learn? >> Peter >> >> On Wed, Nov 28, 2018 at 11:30 AM Stu Midgley <sdm...@gmail.com> wrote: >> ????? I agree 100% .?You can't beat bash and fortran. >> >> On Wed, Nov 28, 2018 at 9:02 AM Paul Edmon >> <ped...@cfa.harvard.edu> wrote: >> ????? Fortran is and remains an awesome language.? More >> ????? people should use it: >> >> https://wordsandbuttons.online/fortran_is_still_a_thing.html >> >> ????? -Paul Edmon- >> >> ????? _______________________________________________ >> ????? Beowulf mailing list, Beowulf@beowulf.org sponsored >> ????? by Penguin Computing >> ????? To change your subscription (digest mode or >> ????? unsubscribe) visit >> ????? http://www.beowulf.org/mailman/listinfo/beowulf >> >> >> >> -- >> Dr Stuart Midgley >> sdm...@gmail.com >> _______________________________________________ >> Beowulf mailing list, Beowulf@beowulf.org sponsored by Penguin >> Computing >> To change your subscription (digest mode or unsubscribe) visit >> http://www.beowulf.org/mailman/listinfo/beowulf >> >> >> > > Robert G. Brown http://www.phy.duke.edu/~rgb/ > Duke University Dept. of Physics, Box 90305 > Durham, N.C. 27708-0305 > Phone: 1-919-660-2567? Fax: 919-660-2525 email:r...@phy.duke.edu > > _______________________________________________ Beowulf mailing list, Beowulf@beowulf.org sponsored by Penguin Computing To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf -- - - - - - - -?? - - - - - - -?? - - - - - - - Nathan Moore Mississippi River and 44th Parallel - - - - - - -?? - - - - - - -?? - - - - - - - _______________________________________________ Beowulf mailing list, Beowulf@beowulf.org sponsored by Penguin Computing To change your subscription (digest mode or unsubscribe) visit http://www.be owulf.org/mailman/listinfo/beowulf
Robert G. Brown http://www.phy.duke.edu/~rgb/ Duke University Dept. of Physics, Box 90305 Durham, N.C. 27708-0305 Phone: 1-919-660-2567 Fax: 919-660-2525 email:r...@phy.duke.edu _______________________________________________ Beowulf mailing list, Beowulf@beowulf.org sponsored by Penguin Computing To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf