Fortran track: add new exercises?

Looking at the Fortran track, it seems … thin. Only 35 exercises, and just 3 other tracks have fewer.

Admittedly, we’re not exactly besieged by throngs of students demanding more! Despite this, should I look into adding a few practice exercises? It would probably take a couple of days before I’m up to speed and ready to start submitting PRs, but the track seems pretty well documented.

It also seems to be unmaintained, so I guess this would rely on cross track maintainers to review PRs? Are you OK with this?

Fortran was the first programming language I learned, in 1974. It has changed since then!

It seems ironic that we all use the output from Fortran code every day, not least every time we look at a weather forecast. Meanwhile, writing the code has become a niche activity. Mostly, it’s restricted to people with access to squillion-dollar supercomputing clusters. And many of them are pretty secretive about what they do!

The meteorology and oceanography people are relatively open. Los Alamos types won’t talk in detail about their work on nuclear warheads, but they have some good collaborations with astrophysicists. Simulating Type II (core-collapse) supernovae is apparently quite similar to simulating H-bomb explosions, and much easier to talk about at conferences.

What happens at signals intelligence centers remains a mystery. I have friends with decades of inside knowledge, but we only remain friends because I avoid asking silly questions that they can’t/won’t answer. Though (in very general terms) they speak highly of Fortran.

Cross track maintainers are only responsible for providing the required PR reviews for maintained-solitary and unmaintained repos. So we’d be reviewing a new exercise PR just like any other PR for those repos. No special treatment necessary.

Because Fortran isn’t maintained, there’s nobody specifically setting the direction of that track. So I have some hesitation about adding exercises without a maintainer in place. Also adding new exercises does increase the maintenance needed for a track, even if it’s deferred to when a maintainer does take over. Are there exercises not implemented that would present something new for students not covered by the existing exercises? That might be worthwhile.

There are 103 exercises not implemented, so I’m pretty confident in saying yes. It needs more thought, but for starters we have bit-twiddling in eliuds-eggs and secret-handshake, matrices (with just a mild departure from the problem specs) for flower-field and game-of-life.

Let’s see if I can successfully create new exercises, then we can discuss it? I already maintain two tracks with 1-based array indexing (Julia, R), it’s not inconceivable this could be a third, at some point in the future. Not just yet.

1 Like

Building exercises for unmaintained tracks directly led to me becoming the maintainer of several tracks so I can’t really object to that approach. :slight_smile:

1 Like

Would you like to step up as the Fortran maintainer? I’d suggest without a maintainer to handle things, we shouldn’t be adding exercises. Maintainers own things like exercise addition, providing direction, guidance and (hopefully) some level of experience. Without a maintainer to review PRs, I don’t think we should be adding exercises to the track.

1 Like

Yes, if I’m allowed to start slowly. My Fortran experience spans more than half a century, but I’m a bit rusty! Plus, I need to get up to speed on cmake and the like.

PRs are probably quite infrequent on this track, is my guess. Other than dependabot stuff, and syncing problem-spec changes.

1 Like

Starting slowly is fine!

Dependabot stuff can be handled by cross-track maintainers when there’s no maintainers present. Problem sync changes and other exercise changes should involve a track maintainer. Track maintainers can also optionally disable unsolicited PRs which further limits community PRs!

+cc @ErikSchierboom to handle a maintainer change request

2 Likes

I bought the book. I suppose I’d better read it!

That book is old enough to vote (and drink in some places)! Hopefully it’s not too out of date.

The test runner uses the Fortran 2008 specification. There are 2018 and 2023 specs, but no urgent need to update to them.

This is Fortran, from 1957 (when I was 1 year old). Many serious users stick with F90 or F95, disliking anything more recent. Backwards compatibility is taken seriously, so FORTRAN 66 code would probably compile unmodified in the latest gfortran - even though that predates support for lowercase letters!

1 Like

Finding the compiler flags took some searching, so I’ll post this here as a reminder. This was on a Linux system with gfortran 13.3.0.

Fortran_FLAGS = -g -std=f2008 -W -Wall -Wextra -pedantic -fbacktrace

Consider it done.

2 Likes