[HN Gopher] The State of Fortran
       ___________________________________________________________________
        
       The State of Fortran
        
       Author : MakisH
       Score  : 75 points
       Date   : 2022-04-06 18:20 UTC (4 hours ago)
        
 (HTM) web link (arxiv.org)
 (TXT) w3m dump (arxiv.org)
        
       | ogogmad wrote:
       | Are things like higher order functions and closures relevant
       | features for Fortran programmers? This is an open-ended question.
       | 
       | [edit] Just to be clear, I don't think Fortran has these.
        
       | jordemort wrote:
       | The fact that "The State of Fortran" is a paper on arXiv instead
       | of a blog post actually says a lot about the state of Fortran.
        
         | milancurcic wrote:
         | The paper is published and available in early access in IEEE
         | CiSE: https://ieeexplore.ieee.org/document/9736688
        
         | pjmlp wrote:
         | Indeed, it isn't something that is only cool for a month or to
         | be embraced by magpie developers.
        
         | buescher wrote:
         | I read that as "with all the good and bad that implies". That
         | others didn't... well that's Fortran for you. Or maybe just
         | hackernews.
        
         | kergonath wrote:
         | What do you mean? It's a paper written by several people on the
         | standard committee of who contributed to the draft standard, on
         | which blog would they put it?
         | 
         | Traditionally, these things were published in ACM SIGPLAN
         | Fortran Forum (or on NAG's servers for historical reasons).
         | Arxiv is really natural, given the direction scientific and
         | technical publishing is taking. This is a heavy duty language
         | used by scientists and people like mechanical and nuclear
         | engineers. Not the latest JavaScript framework or full stack
         | doodad from Google.
        
         | shadowofneptune wrote:
         | Oh yeah, a blog. Really keeping up with the times there
         | compared to a paper.
        
       | ogogmad wrote:
       | What kind of editor support does Fortran have? I think a language
       | is more than just a _language_ as such, and the surrounding
       | environment is at least as important if not more. I 've used
       | things like Mathematica, RStudio and Matlab, as well as Java
       | IDEs, and these make all the difference.
        
         | pjmlp wrote:
         | There have been Visual Studio plugins for commercial compilers
         | since ages.
        
         | zozbot234 wrote:
         | Last I checked, you had to write out your program on paper,
         | using the special Fortran coding forms. Then you just gave the
         | written out forms to someone who would type out your codes at a
         | keypunch and give you a deck of freshly punched cards, or you
         | could take care of it yourself.
        
           | Stratoscope wrote:
           | For anyone who wants to experience the first part of this
           | process, here is a FORTRAN Coding Form (in caps because
           | that's how it was spelled back then):
           | 
           | https://upload.wikimedia.org/wikipedia/commons/1/18/FortranC.
           | ..
           | 
           | Print that in color on 81/2x14" (legal size) paper and get to
           | work!
           | 
           | Of course there were a few other steps in the programming
           | process back then.
           | 
           | 1. A _Systems Analyst_ took business requirements and turned
           | them into an overview diagram of the system structure.
           | 
           | 2. A _Programmer_ took those diagrams and drew detailed
           | flowcharts. These included every  "if" statement, every loop,
           | every detail. They were in effect code, but in a diagram
           | form. Don't forget your IBM Flowcharting Template!
           | https://ids.si.edu/ids/deliveryService?id=NMAH-AHB2012q05389
           | 
           | 3. A _Coder_ read the programmer 's flowcharts and wrote out
           | the equivalent FORTRAN code on multiple pages of Coding
           | Forms.
           | 
           | 4. A _Keypunch Operator_ read the Coder 's forms and punched
           | them onto cards, one card for each line of a Coding Form.
           | 
           | 5. Finally we get to the High Priest of this operation. A
           | _Computer Operator_ - the only person allowed to touch the
           | Computer! - ran your deck of cards through the machine and
           | blessed you with a printout. Which was usually a core dump.
        
           | colechristensen wrote:
           | It is entirely possible this person is telling the truth that
           | this was the state of things the last time they checked. :)
           | 
           | Fortran was absolutely run on punch cards, which also informs
           | some of the strangeness of its formatting, especially pre-
           | fortran-90.
        
             | ratsmack wrote:
             | I programmed FORTRAN on punch cards and on paper tape using
             | a teletype, over an acoustically coupled modem, timesharing
             | to a Univac 1103. Those were the days.
        
         | eyegor wrote:
         | The Intel oneapi hpc toolkit (now free for commercial use too)
         | has plugins for Visual Studio that are updated regularly. Full
         | support in vs2019, about 90% works in vs2022. Of course you
         | miss out on some of the most modern features like predictions
         | that you get with copilot or the variant that Microsoft ships
         | for C#, but it still has autocomplete, type hints, etc and a
         | full featured debugger. There are also language server plugins
         | available for vscode.
        
         | semi-extrinsic wrote:
         | The tooling around Fortran is very similar to C. The debuggers
         | are the same, you can typically use ctags of some sort for
         | navigating between subroutines etc. across all files, and then
         | you can add in a compiler-editor integration that checks for
         | syntax errors at every save.
         | 
         | There are also a couple of Fortran REPLs out there, the most
         | promising is probably LFortran which is only in alpha stage of
         | development but has Jupyter integration and will be the next
         | cool thing I think.
        
         | kergonath wrote:
         | I tend to use TextMate on Mac or SublimeText on other
         | platforms. Fortran also is usually very close to C, and most
         | standard debuggers like ten or lldb (even when LLVM had no
         | Fortran front-end) can be used without problems. It's a bit
         | barebones compared to recent IDEs, sure. What I would like in
         | particular is better refactoring and static analysis tools
         | (though the lack of the latter is mitigated by the strong type
         | system and some very good compilers like NAG). There is no real
         | equivalent to RStudio or Matlab.
        
           | ratboy666 wrote:
           | But... Matlab was originally written in FORTRAN ("easy access
           | to... LINPACK and EISPACK..."). Written by Cleve Moler,
           | distributed by Jim Kweeder. May 25, 1982. 7852 lines of
           | FORTRAN 66 (for the version I have).
           | 
           | "With proper use of overlays, it is possible run the system
           | on a minicomputer with only 32K bytes of memory." -- Cleve
           | Moler
           | 
           | Fred Weigel
        
         | gh02t wrote:
         | CLion supports Fortran via a plugin. I've used it a bit and
         | it's fine.
         | 
         | https://www.jetbrains.com/help/clion/fortran-support.html
        
         | PrintStar wrote:
         | We maintain a commercial, Fortran-specific IDE, Simply Fortran,
         | that ships with the GNU Fortran compiler (at least on Windows
         | and macOS): https://simplyfortran.com
         | 
         | It has many of the usual IDE expectations built in like
         | autocomplete, project management, debugging, Git integration,
         | etc. Our Windows distribution adds a few niceties like a
         | Fortran-oriented (though basic) GUI library, a Windows-native
         | coarray implementation (that doesn't use MPI), Windows-native
         | OpenMP and threading, and a binary package manager for pre-
         | built libraries.
         | 
         | We're decidedly a small player in a niche market, but I like to
         | think Simply Fortran makes life easier for Fortran developers.
         | Sorry for the self-promotion!
        
         | wiremoons wrote:
         | Good timing for your question as there is a poll going on at
         | the moment about editors used with Fortran, on the Fortran Lang
         | community Discourse here: https://fortran-
         | lang.discourse.group/t/code-editors-ides-use...
         | 
         | But the quick answer is that people programming in Fortran use
         | the usual editors - Visual Studio Code, Emacs, Vim, CLion, etc.
        
       | hatmatrix wrote:
       | Modern Fortran is beautiful and I love coding in it.
       | 
       | However, my understanding is that its main focus is on array
       | computations. Now with hierarchical data structures and graphs
       | becoming ever pervasive, I wonder if Fortran will ever try to
       | compete in this space (when these higher-order concepts are
       | integrated into domains of Fortran's past dominance in numerical
       | simulation).
        
         | kergonath wrote:
         | Fortran is the ideal language for data-oriented programming.
         | Ultimately that's where performance is. I don't see it trying
         | to compete by creating a kind of graph-oriented language
         | (besides pointers and somewhat barebones generics). You
         | probably want a fancy higher-level language for this anyway.
         | 
         | It is evolving towards a great language for parallel HPC,
         | integrating neatly both shared-memory and distributed computing
         | in a very nice framework. Much better than the usual hodgepodge
         | of OpenMP and MPI (or whatever API _du jour_ NVIDIA or Intel
         | happen to be pushing).
        
         | ogogmad wrote:
         | Graphs can certainly be modelled as matrices over different
         | kinds of scalars. But I'm not sure how relevant this is to your
         | use case.
        
         | fpoling wrote:
         | Hierarchical data structures are bad for CPU caches, see, for
         | example, references in [1] how various data-oriented
         | programming techniques try to avoid them.
         | 
         | From that point of view Fortran may be even more relevant for
         | high-performance computing now than even 10 years ago.
         | 
         | [1] https://en.m.wikipedia.org/wiki/Data-oriented_design
        
       | mrtweetyhack wrote:
        
       | throwawaybutwhy wrote:
       | Please note there's been some uptick in the intensity of
       | discussion on generics lately [0].
       | 
       | Generics are necessary to bring performant data structures to
       | Fortran, and yet they are nowhere near Go's generics.
       | 
       | For the usual naysayers doubting Fortran's place in a modern
       | world: whenever you are reading or watching a weather forecast,
       | that's decades of Fortran staring at you. Whenever you drive past
       | a nuclear power plant, or an airbase with 'igloos', remember that
       | nuclear safety codes run on Fortran.
       | 
       | [0] https://github.com/j3-fortran/generics
        
         | zdragnar wrote:
         | That's not to say the code quality is any good, only that it
         | still runs and everyone has their reasons to avoid a rewrite.
         | 
         | True, the fact that it is still running says something, but not
         | overmuch about whether it would be pleasant to maintain, extend
         | or otherwise modify.
        
         | necheffa wrote:
         | For what it is worth - I write Fortran professionally (in some
         | of the use cases you describe) and I doubt its usefulness.
         | 
         | The way I see it, Fortran exists today because of inertia, not
         | because it still has technical superiority.
         | 
         | These mountains of Fortran code represent decades of investment
         | and undocumented "features" that you could never code around
         | during a rewrite.
         | 
         | And so today, new code is bolted on, with a prayer that nothing
         | breaks, may god have mercy on your soul.
        
           | StreamBright wrote:
           | When we cannot re-make the things we made before is a sign of
           | a slow decline.
        
             | colechristensen wrote:
             | It's really not. It is simply very expensive to build up
             | experimental validation of simulation code rewritten in a
             | new language, and much more expensive than the aesthetic
             | value given by programmers who want new things. There's
             | nothing magic about the old things, there's just an
             | existing ecosystem which works which would involve a whole
             | lot of effort to recreate and most people think they have
             | better things to do.
        
       | Silamoth wrote:
       | Very interesting paper! It's cool to see that Fortran is still
       | evolving. I've been considering learning it (when I have the
       | time) because of its use for numerical computations and parallel
       | processing. I feel like there's been a big push towards general-
       | purpose languages like C++. However, I'd love to get a better
       | feel for what it's like to program in a language specifically
       | designed for your use case. The closest I've experienced is
       | MatLab, but I feel like MatLab is designed more for scientists
       | and engineers who need to perform some calculations but don't
       | want to actually learn how to program, not for professional
       | programmers working on scientific computation.
        
         | zozbot234 wrote:
         | I don't think there's much in Fortran that's still unique or
         | "specifically designed" for numerics compute. General purpose
         | languages reached parity with Fortran a long time ago. And
         | "general purpose" typically wins anyway because it has the
         | larger and more diverse ecosystem.
        
           | leephillips wrote:
           | Most of them did not reach parity, at least not in
           | performance. The fast languages are C, C++, Fortran, and
           | Julia. Those are the only ones used for teraflop computing.
           | Fortran is a great tool for scientific computing, but for new
           | projects, where you are not extending an existing code base,
           | Julia will be much more fun in every way.
        
             | ivan-pi wrote:
             | Depends on your needs. Sometimes you just need a hammer.
             | Michael Wirth had a few comments about Julia recently:
             | https://craftofcoding.wordpress.com/2022/03/14/why-i-have-
             | gi...
        
       | zabzonk wrote:
       | I've always liked Fortran - one big project I wrote in Fortran 77
       | was an Intel 8080 simulator that was used for teaching at the
       | Polytechnic I worked for. The original code was on a Dec10, but I
       | ported it to a VAX and an IBM 4381 in a couple of days.
       | 
       | It's an easy language to get to grips with, but the users
       | somewhat less so. At one point doing consultancy, I came across
       | people declaring variables like I1,I2,I3,I4 to IN where N was a
       | large number.
       | 
       | I asked "why?" and they said "we might need them" - Fortran
       | programmers will see at least two reasons why this is daft.
        
       | freecodyx wrote:
       | Technically, all programming languages are constrained by what a
       | machine can do (the cpu architecture), to me all programming
       | languages are transpilers, just chose the language that fit best
       | your usecase, and that will allow you to write correct code
       | easly, but always keep in mind that regardless of the language
       | you're using, you're still constrained by same machine
       | architecture,
        
       | mcnrb wrote:
        
       ___________________________________________________________________
       (page generated 2022-04-06 23:00 UTC)