Remember that Fortran has an arithmetic if statement. You can write
IF (expression) s1, s2, s3where s1, s2 and s3 are labels. If the expression is negative, it jumps to s1. If it’s 0, to s2 and if it’s positive, to s3.
It also has goto variable. You can do
INTEGER a ASSIGN 20 TO a ASSIGN 17 TO a GO TO a 20 PRINT *, "foo" 17 PRINT *, "bar"and it’ll print “bar”. In this snippet of code, everything seems quite logical, but imagine debugging spaghetti code written using these patterns.
Oh, it also has
GO TO (s1, s2, ... , sn), NFirst, N is converted to an integer. If N is 1, it goes to label s1. If N is 2, it goes to s2. If N is less than 1 or greater than n, it does nothing.
Code that has lasted, with some maintenance, for 50+ years vs code that doesn’t work from day 1? What advances we have made!
deleted by creator
The science of failure!
Don’t forget that a lot of that code has lasted for 50 years cause corporations were too cheap to update/upgrade. Profits > tech debt.
Fortran because I’ll make bank.
Fortran can be vibed too, there goes the job security :/
1969 code all day erryday. Fuck yeah punch cards
Fortran. Not even close to being a question.
Seriously, especially if it already compiles.
Implicit None gang rise up!
Never used Fortran before. So easy choice: Fortran code from 1969
I would genuinely love to find a job coding FORTRAN, mainly because it means I’d almost certainly be doing some kind of scientific computing. Way better than most tech jobs that involve boring CRUD work you don’t care about at best, or actively making the world worse implementing the whims of some billionaire sociopath at worst.
Also, the code base will likely be pretty small. If something’s made to be delivered on punch cards and run on devices that measure their memory in KB or maybe MB, it’s not going to be a ton of code. Even if it’s pure assembly, it’s going to be easier than a huge automatically generated codebase.
Rollercoaster Tycoon has joined the chat.
Compared with any modern codebase that’s still tiny.
From what I can see Rollercoaster Tycoon was hand-written by a single person, so it by definition cannot be huge.
I wish that the code was open source, because it’d be super interesting to be able to look under the hood of a game like Rollercoaster Tycoon
It kinda is. Assembly is a 1:1 machine-code equivalent, so you just have to run the game through a disassembler and you get the “source”. You just dont get the documentation.
This. I love scientific computing and would honestly love working in the field.
I like Fortran very much, but don’t get me wrong: maintaining Fortran code from 69 must be a huge pain in the ass. It is certainly code written by researchers who have no idea about programming practices. It is sure full of exceptions everywhere, all variables are 2 characters long. The codebase grew over the years and is now several millions lines of code, most of which is the same functionality copied everywhere with slight changes. You have no idea what each subroutine is supposed to do, and it doesn’t help that most algorithms used in there were never published or documented.
I think I’ll go with the vibe coding for this one.
Fortran IV (and anything before Fortran 77) is a pain in the ass.
But I’d take it any day before code allucinated by a shitty token predictor.
It’s weird that “legacy code” is a pejorative.
If your code has lasted long enough to be considered “old”, but is still so useful that it can’t just be deleted without a dedicated replacement effort… it’s doing something right.
it’s doing something right
That’s where the problem lies, we know it’s doing something right but we don’t understand what or how it works, we’re too reliant on it to change it, and the workarounds we have to make to accommodate it are a pain in the arse.
Instead of “legacy code” they should call it “veteran code”, because it has seen some shit.
Brb updating my personal lexicon
That is a much better name for it, especially because some of the ways in which veteran code gets creaky does feel analogous to age
I work with a different kind of legacy system. It was retrofitted to work with SOAP, OOP, and some other modern stuff, but none of the old farts bothered to learn it. When I inherited a SOAP service that system used, I had to learn a lot about it to get what I needed.
And honestly? It’s been a lot of fun. It’s a unique kind of challenge, I’ve practically gained celebrity status at work, and even if it’s nothing I’ll be doing long-term it shows how I can pick up weird systems and work with others to make some miracles happen.
Fortran. always Fortran.
because there’s always more documentation than with vibecode.
Well obviously with vibe coded stuff, you just put the code back in the AI and ask for documentation.
Problem solved. /s
Your comment felt like it made my blood pressure spike, because I have heard people saying this 100% without irony
Funny thing is, I would do that if there are no requirements, and the vibecode is unreadable. I would let the token-predictor create the requirements, after proof-reading and correcting it, I would create cooked-down list and run through a manager for approval, then rewrite it from scratch. My limited time and precious brain cells are too valuable to waste on reading and deciphering the half ton of sh!t an LLM produced.
If there are requirements (which are hardly applicable unfortunately) I would just rewrite the thing.
Isn’t it more COBOL than FORTRAN in terms of getting paid?
I thought FORTRAN was pretty much exclusively used via SciPy in research & academia these days.
COBOL is still powering the world economy on mainframes
Coming from research: no, Fortran is very much alive as is. Plenty software is still actively developed in Fortran, I do believe in recent years there’s been a push towards C++, but I’m unsure how much that progressed.
Modern Fortran is a pretty decent language.
Oh that’s cool to hear, I was under the impression in research that whilst a lot of the processing actually happens in FORTRAN-written code, it was nearly always reusing already-written functions and primitives in a higher level language (such as python, via the aforementioned SciPy). And then those libraries being maintained by a handful of wizards on the internet somewhere.
Can you elaborate on the kind of research where people are still actively writing directly in FORTRAN? Did people typically arrive with the skills already or was there training for learning how to write it well?
Someone else using fortran in research checking in. In particle physics, were basically writing huge, physics heavy Markov chain monte Carlos in it. Just one example.
Don’t get me wrong: python probably is the main language used in research. However there’s software that needs to be fast at crunching numbers, I work in computational chemistry and pretty much any reliable software is either Fortran or C++. Indeed you have python libraries, but most are just wrappers.
You have Gaussian: https://en.wikipedia.org/wiki/Gaussian_(software) GAMESS: https://en.wikipedia.org/wiki/GAMESS_(US) CP2K: https://en.wikipedia.org/wiki/CP2K Mopac: https://en.wikipedia.org/wiki/MOPAC
Now, most people do not work in Fortran, but it is something you learn a little bit when you start working in computational chemistry. It happens sometimes to have to debug a software not working or to have to write a module to test an hypothesis. People writing those softwares are also researchers, but mostly are full time dedicated to the software. Generally, there is a huge lack on investment on the software infrastructure, very few people are dedicated at maintaining software that is used by hundreds of thousands of people.
While hiring people, I am satisfied as long as they know a bit of python, but knowledge of Fortran really stands out and highlights a more thorough education. If I have time, I do give all the people an introduction to Fortran, as it is still something you often come across in our field. But yes, unless you’re working on the development of such software suites, Fortran is not that common now. You’d publish a proof of concept in python or Julia and then wait for someone else to implement it in one of those libraries.
an hypothesis
I think you mean an ’ ypothesis (only vowels use an; consonants use “a”; h is a special case as French and French influenced English drop the h from the start of words). It’s polite to show the letters you have dropped with an apostrophe so readers don’t take incorrect ideas from one’s writing
Do you have anything actually relevant to add to the conversation?
As far as I’ve seen checking right now, an hypothesis can be used, just as a hypothesis can be used. I have never seen anyone writing with an apostrophe and would be very confused if reading it.
Your daily weather forecast likely runs on FORTRAN. It’s quite terrible code in many places because the people writing it are not software engineers but meteorologists, mathematicians, or physicists with little to no formal training in software design writing a million-line behemoth.
And FORTRAN adds to the suck because it is superbly verbose, lacks generics, has a few really bad language design decisions carried over from the 60’s, and a thoroughly half-assed object model tacked on. As a cherry on top, the compilers are terrible because nobody uses the language anymore – especially the more recent features (2003 and later).
Around 2004 I had just recently graduated a shitty tech school as a DBA. Soon after I got a job via my father for one of his college buddies. My job was to convert old cobbled together FoxPro into something relatively modern. I was also hired simultaneously to the same company as a Java web developer and had to combine the two. I spent 2 hellish years there and haven’t touched code since, which sucks because I used to really love programming.
I had blanked this from my memory, but my very first programming job was to reimplement some FoxPro code in… Visual Basic. FoxPro is so strange to work in. It’s like programming in SQL, and the codebase I was in had global variables everywhere.
Uhh… after 20 years of dev work… Fortran by a mile
Fortran 66 isn’t too bad. You have to write everything yourself but if you’re just maintaining it is normally fine. Gotos get annoying, though!
Spaghetti code ftw!
Why not Fortran 90 or Fortran 2023?
Because the post specified code from 1969.
Ok
I’ll be the person to answer vibe code.
- I’d rather rewrite either from scratch,
- nobody will blame me for throwing it out, and
- it’s presumably in a language I can learn more easily, or already know.
I was thinking this. Choose vibe code, start from scratch. As cool as it seems to work with FORTRAN I’d probably hit a brick wall much sooner, and harder.
You make a compelling point






