Toward Modern Fortran Tooling and a Thriving Developer Community

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • fpm

    Fortran Package Manager (fpm) (by fortran-lang)

  • Author here, so I'm biased toward Fortran, though I've been enjoying learning Rust as well. I think there are a few reasons.

    First, Rust's multidimensional arrays are either limited and/or difficult to use. Fast, flexible, and ergonomic multidimensional arrays and arithmetic are essential for HPC. They are possible with Rust, but my two favorite Rust books not mentioning them suggests to me that they're not the focus of the language. This may or may not change in the future.

    Second, Rust may be too complex to learn for scientists who aren't paid to write software but to do research. Fortran is opposite--multidimensional whole-array arithmetic looks like you would write it as math on a whiteboard. While scientists can sure learn to program Rust effectively, I think most scientists don't think like Rust, but they do think like Fortran. For somebody not familiar with Fortran but familiar with Python, I'd say Fortran very much feels like NumPy.

    Third, such ecosystem would be built in Rust from scratch. In Fortran, most of the value is already there, but needs to be made more accessible with better and more modern tooling. For example, Fortran's fpm (https://github.com/fortran-lang/fpm) is largely modeled after Rust's Cargo because we recognize the importance of good user experience when it comes to building and packaging software. With the recent Fortran-lang efforts, we study many programming language ecosystems and communities (e.g. Python, Julia, Rust, etc.) to find what could work best for modern Fortran tooling.

  • NASTRAN-95

  • I think there's a common misconception that numerical codes should be accessible without documentation, and without a background in the subject.

    Take NASTRAN-95 [1] or SPICE2 [2], for example. Both have good documentation in the form of manuals, books, and papers. If you have the mechanical or electrical background, you should be able to understand the docs explaining the implementation, and then you should be able to understand the code. It doesn't matter that there are no comments anywhere, or that GOTO is used. Aside from some cosmetic differences, it looks pretty much like what you'd write today with MATLAB or Python.

    I picked these examples because they're publicly available, but I would guess that most Fortran still in use has no public visibility. In my experience with commercial numerical engineering software, Fortran lives on in under-the-hood components written by subject matter experts for performing specific tasks. It doesn't matter that programmers are unfamiliar with the language, because only subject matter experts are allowed to modify the code anyway.

    To be clear, I'm not defending the many examples of unstructured, undocumented academic code that grows until it's essential to an organization despite being buggy and virtually unmaintainable. But those would have been terrible to read no matter which language was used.

    I've never seen the language itself be a significant barrier to understanding in a business context. And it's not like we have a problem where there are all these active open-source projects that could be so much better if only they were written in a different language.

    [1] https://github.com/nasa/NASTRAN-95

    [2] https://ptolemy.berkeley.edu/projects/embedded/pubs/download...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts