# Tsoding on Fortran

**URL:** <https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102>\
**Category:** Uncategorized\
**Created:** [July 6, 2023, 3:01pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102 "2023-07-06T15:01:37Z")\
**Posts on this page:** 20\
**Page:** 4

<div class="post-metadata">

**Author:** ![certik](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/certik/32/4_2.png) [@certik](https://fortran-lang.discourse.group/u/certik)\
**Post date:** [August 8, 2023, 2:49pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/65 "2023-08-08T14:49:25Z")

</div>

> [@PierU](#):
>
> I think that a (short) document named “frequent traps” (or similar) would be useful.

I created this: [Gotchas — Fortran90 1.0 documentation](https://www.fortran90.org/src/gotchas.html) we should probably port it to [fortran-lang.org](http://fortran-lang.org).

---

<div class="post-metadata">

**Author:** ![R\_cubed](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/r_cubed/32/263_2.png) [@R\_cubed](https://fortran-lang.discourse.group/u/R_cubed)\
**Post date:** [August 8, 2023, 5:15pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/66 "2023-08-08T17:15:41Z")

</div>

I had totally forgotten about this document. Has anyone presented it to Tsoding and asked him if it would have helped him in his Fortran project?

I went through a few Fortran tutorials, and was OK when I could stay in Fortran, but my ignorance of the details of C libraries and the of POSIX lead me to focus on C much more closely.

I’d like for Fortran to be a viable introductory language, so the limitations of Fortran will need to be covered by interfacing to C libraries, but I think that should be discussed in a separate thread.

🆕 Here is a nice list of differences between C and Fortran from the LLVM docs:  
[The Flang Compiler: Fortran For C Programmers](https://flang.llvm.org/docs/FortranForCProgrammers.html)

---

<div class="post-metadata">

**Author:** ![RonShepard](https://avatars.discourse-cdn.com/v4/letter/r/a3d4f5/32.png) [@RonShepard](https://fortran-lang.discourse.group/u/RonShepard)\
**Post date:** [August 8, 2023, 8:33pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/67 "2023-08-08T20:33:46Z")

</div>

I noticed this sentence:

```auto
And so it is safe to assign integers to floating point numbers without losing any accuracy[...]

```

That should probably read like “[…] assign small integer values to […]”. If you assign an integer value larger than 1/epsilon(x) to a floating point value, then you can indeed lose precision.

---

<div class="post-metadata">

**Author:** ![PierU](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/pieru/32/1848_2.png) [@PierU](https://fortran-lang.discourse.group/u/PierU)\
**Post date:** [August 9, 2023, 3:20pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/68 "2023-08-09T15:20:46Z")

</div>

> [@certik](#):
>
> I created this: [Gotchas — Fortran90 1.0 documentation](https://www.fortran90.org/src/gotchas.html) we should probably port it to [fortran-lang.org](http://fortran-lang.org).

Another (draft) attempt: [https://github.com/PierUgit/misc/blob/011ebd2801a8f43b320e67e03ccffa32bb2e3461/misc/gotchas.md](https://github.com/PierUgit/misc/blob/011ebd2801a8f43b320e67e03ccffa32bb2e3461/misc/gotchas.md)

---

<div class="post-metadata">

**Author:** ![certik](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/certik/32/4_2.png) [@certik](https://fortran-lang.discourse.group/u/certik)\
**Post date:** [August 9, 2023, 10:31pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/69 "2023-08-09T22:31:44Z")

</div>

@PierU, very nice. Why don’t you submit it to [fortran-lang.org](http://fortran-lang.org)?

---

<div class="post-metadata">

**Author:** ![PierU](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/pieru/32/1848_2.png) [@PierU](https://fortran-lang.discourse.group/u/PierU)\
**Post date:** [August 10, 2023, 6:02am UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/70 "2023-08-10T06:02:21Z")

</div>

@certik I will

---

<div class="post-metadata">

**Author:** ![PierU](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/pieru/32/1848_2.png) [@PierU](https://fortran-lang.discourse.group/u/PierU)\
**Post date:** [August 11, 2023, 2:56pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/71 "2023-08-11T14:56:17Z")

</div>

> [@Carltoffel](#):
>
> Good idea. Or short documents called “_Fortran for C programmers_”, “_Fortran for Python programmers_” etc.
> 
> But this will not solve the main problem with learning material/documentation: Searching for `Fortran <feature xy>` on DuckDuckGo or Google will many times list websites for FORTRAN 77 first.
> 
> Try this:  
> [fortran parameter - Google Search](https://www.google.com/search?hl=en&q=fortran%20parameter) or [fortran parameter at DuckDuckGo](https://duckduckgo.com/?q=fortran+parameter&t=ffab&ia=web)
> 
> In addition, searching for different features of Fortran leads to many websites (oracle, intel, gnu, tutorialspoint, etc.) and therefore to very inconsistent information.

That’s unfortunately very true. But what can done, apart feeding fortran-lang with more content?

---

<div class="post-metadata">

**Author:** ![tyranids](https://avatars.discourse-cdn.com/v4/letter/t/3e96dc/32.png) [@tyranids](https://fortran-lang.discourse.group/u/tyranids)\
**Post date:** [August 11, 2023, 3:04pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/72 "2023-08-11T15:04:42Z")

</div>

Unfortunately the IBM pages for Fortran XL are still very highly ranked, and when clicked just show an internal error that the page no longer exists.

I know almost nothing about how to affect google search rankings, but it’s a definite issue when discoverability is so low. For most intrinsics you can google “gfortran NAME” and get the documentation page. Some things like open read and write I haven’t found a consistent way to get anything useful from gfortran. For those I google “intel fortran open” for good results.

The major issue with both of these is that one has to know ahead of time how to finesse google on the topic to get current day results and not some FORTRAN 77 reference.

---

<div class="post-metadata">

**Author:** ![PierU](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/pieru/32/1848_2.png) [@PierU](https://fortran-lang.discourse.group/u/PierU)\
**Post date:** [August 11, 2023, 3:23pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/73 "2023-08-11T15:23:55Z")

</div>

> [@tyranids](#):
>
> Unfortunately the IBM pages for Fortran XL are still very highly ranked, and when clicked just show an internal error that the page no longer exists.

I assume this a temporary situation: at some point such pages will be automatically dereferenced by Google.

> [@tyranids](#):
>
> I know almost nothing about how to affect google search rankings,

It takes time. Step by step, more content attract more people, who hopefully link to the content from other sites, which pleases Google so the ranking raises, which attracts more people, etc…

Or it takes money to buy ad keywords or to pay people who are “experts” to raise ranking faster.

Presence on social media also helps.

Once again, the key issue for all of this are the available resources…

---

<div class="post-metadata">

**Author:** ![R\_cubed](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/r_cubed/32/263_2.png) [@R\_cubed](https://fortran-lang.discourse.group/u/R_cubed)\
**Post date:** [August 11, 2023, 11:26pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/74 "2023-08-11T23:26:53Z")

</div>

On a more optimistic note, based on this thread and the videos, I installed FPM and stdlib on my Linux VM the other day, for the second time. My initial experience (on Windows) was posted in this thread:

> [@Building FPM from source on Windows 10](https://fortran-lang.discourse.group/t/building-fpm-from-source-on-windows-10/1512):
>
> I’m reading the instructions for the FPM package manager and was wondering what the procedure was to build from source directly from git? I have the most recent sources locally, but it isn’t clear from the shell script what I need to do to get this to compile on Windows using gfortran. Any advice?

Maybe because it was my second time going through the process, things seemed to be much easier. Especially impressive was testing a large number of scientific libraries in a few seconds. I also greatly appreciated the ability to compile the bootstrap FPM version from a simple \*.F90 source file. I hope this remains a convention, especially in security conscious environments. (See [https://bootstrappable.org/](https://bootstrappable.org/) for further reasons)

My only suggestion: many developers do not have root access on their machine. I think the default should assume all libraries are going to be in a user controlled directory, as is done in the Perl community via a tool like [Perlbrew: An Admin-Free Installation Tool](https://perlbrew.pl/).

The use case for Perlbrew is slightly different in that it had been a serious problem with the default system Perl on Linux very often being several versions out of date from the most recent version that Perl applications run on. A separate Perl install in a user account circumvented that problem.

If I wrote a simple shell script / tutorial to facilitate the process for newcomers, could that be posted somewhere on Fortran-Lang? The materials to ease the learning curve exist, but they simply aren’t accessible to anyone other than the highly motivated.

---

<div class="post-metadata">

**Author:** ![everythingfunctional](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/everythingfunctional/32/176_2.png) [@everythingfunctional](https://fortran-lang.discourse.group/u/everythingfunctional)\
**Post date:** [August 12, 2023, 2:13am UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/75 "2023-08-12T02:13:34Z")

</div>

> [@R\_cubed](#):
>
> If I wrote a simple shell script / tutorial to facilitate the process for newcomers, could that be posted somewhere on Fortran-Lang?

Contributions to the docs are always welcomed and highly encouraged.

---

<div class="post-metadata">

**Author:** ![interkosmos](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/interkosmos/32/296_2.png) [@interkosmos](https://fortran-lang.discourse.group/u/interkosmos)\
**Post date:** [August 12, 2023, 4:25pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/76 "2023-08-12T16:25:39Z")

</div>

Not 100% finished yet, but already usable: my [Fortran 2018 bindings to raylib 4.5](https://github.com/interkosmos/fortran-raylib).

 ![raylib](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/c/c30c063ba35a30c8b178bc3d9008832ef0e68a66.png)

---

<div class="post-metadata">

**Author:** ![interkosmos](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/interkosmos/32/296_2.png) [@interkosmos](https://fortran-lang.discourse.group/u/interkosmos)\
**Post date:** [August 12, 2023, 10:03pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/77 "2023-08-12T22:03:07Z")

</div>

It’s really astonishing how raylib makes it possible to create a 3D scene with just [a few lines of code](https://github.com/interkosmos/fortran-raylib/blob/master/examples/camera3d.f90):

 ![raylib_3d](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/e/e116d3bb3f24bbf60f8172486314ee8d0b251f75.png)

---

<div class="post-metadata">

**Author:** ![tyranids](https://avatars.discourse-cdn.com/v4/letter/t/3e96dc/32.png) [@tyranids](https://fortran-lang.discourse.group/u/tyranids)\
**Post date:** [August 12, 2023, 10:24pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/78 "2023-08-12T22:24:41Z")

</div>

Excellent work! Auto generated interfaces are the way to go.

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [August 12, 2023, 11:39pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/79 "2023-08-12T23:39:00Z")

</div>

Amazing. I can see this project pollinating some interesting project ideas for GSoC '24.

---

<div class="post-metadata">

**Author:** ![vmagnin](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/vmagnin/32/28_2.png) [@vmagnin](https://fortran-lang.discourse.group/u/vmagnin)\
**Post date:** [August 13, 2023, 10:39am UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/80 "2023-08-13T10:39:38Z")

</div>

> [@Carltoffel](#):
>
> I’m used to GitLab and GitHub, because I more or less know what I’m doing there. GFortran and GCC have a very confusing and ugly website. I appreciate the simplicity, but it makes it hard for me to understand how and where to start. By the time I get to the point where I’m asked to join mailing lists, I’m completely lost. Maybe it’s because I’m “too young”, but mailing lists just scare me.

You can read the information I resumed here:  
[https://fortranwiki.org/fortran/show/GFortran#contributing](https://fortranwiki.org/fortran/show/GFortran#contributing)

and this very recent message:

> [@GFortran releases](https://fortran-lang.discourse.group/t/gfortran-releases/2704/112):
>
> Well, the [Oregon State University Open Source Lab](https://osuosl.org/) is now hosting the GFortran Mattermost instance: [https://gfortran-mm.osuosl.org/](https://gfortran-mm.osuosl.org/) Those people made a great job, importing the whole content of the previous instance. One thousand thanks! pray As stated above by @JerryD : If anyone here would be interested in joining the gfortran developers team, send an email to [gfortran@gcc.gnu.org](mailto:gfortran@gcc.gnu.org) or myself at [jvdelisle@gcc.gnu.org](mailto:jvdelisle@gcc.gnu.org).

The best way to get introduced in the GFortran development is to contact @JerryD : he is conscious that younger people (Fortran next generation!) may prefer more modern tools, and that is why he created a Mattermost instance for developers. Well, there are of course other ways to contribute, like maintaining or improving the documentation / communication, that is as important as you have shown. All is made by volunteers with good will… I assure you will be kindly welcome and helped to start. (Note that _I am not myself a GFortran developer_ but I am in close contact with Jerry for a long time and I try to help as I can).

Update: [Mattermost](https://en.wikipedia.org/wiki/Mattermost) is an Open Source alternative to Slack, very very similar! In fact, we used Slack for several years before they removed some free functionalities and we decided to move to Mattermost, first in their Cloud and now hosted in the Oregon university (Mattermost decided recently that free hosting would be ended).

---

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [August 13, 2023, 11:57pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/81 "2023-08-13T23:57:25Z")

</div>

Just noticed this funny tweet below attributing the rise in TIOBE index to Tsoding. The TIOBE index was discussed previously in,

- [Fortran returns to top 20 TIOBE index](https://fortran-lang.discourse.group/t/fortran-returns-to-top-20-tiobe-index/1069)
- [Top 10 has never been so close](https://fortran-lang.discourse.group/t/top-10-has-never-been-so-close/6165)

As much as I’d like to believe Fortran-Lang and related efforts are responsible for the rise in position, [correlation does not imply causation](https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation).

> <https://twitter.com/realPhilSwitch/status/1686259647911518208>

---

<div class="post-metadata">

**Author:** ![interkosmos](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/interkosmos/32/296_2.png) [@interkosmos](https://fortran-lang.discourse.group/u/interkosmos)\
**Post date:** [August 14, 2023, 7:00pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/82 "2023-08-14T19:00:28Z")

</div>

I’ve added more examples to the project, some ported from C.

> **Screen Shots**
>
> ![castle](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/f/f103edbc406037ab012fa44f0333b6f779e14b3a.png)
> 
> ![cubes](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/8/8524cbb16b230364a720340c9937ecd6598c16c3.png)
> 
> ![fonts](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/9/97c7d8449e134f5eb1e2aeb0237a757b92ca2bb9.png)
> 
> ![map](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/6/685f575a0cce7dc5afeae90fedb053e4caddf8f6.png)
> 
> ![truck](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/f/ffc49400d2a25690b0d5ef927399ce4131a5d6d7.png)
> 
> ![plane](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/2X/5/5fffe493789b6a2b3c8c8b2facdbd7fb0b98427d.png)

---

<div class="post-metadata">

**Author:** ![Carltoffel](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/carltoffel/32/1680_2.png) [@Carltoffel](https://fortran-lang.discourse.group/u/Carltoffel)\
**Post date:** [September 22, 2023, 11:58am UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/83 "2023-09-22T11:58:40Z")

</div>

# Analysis of Tsoding’s Fortran streams

Over the last few weeks I’ve been watching and skipping through all of Tsoding’s Fortran streams, making notes on what he likes about Fortran, what he doesn’t like, and where he has encountered difficulties.

He is a very experienced programmer in many languages and domains. This report represents his experience, but it may also be an indication of how other Fortran beginners do during their first hours with Fortran, which may help us to improve tutorials, documentation and perhaps even the language.

While the main points have been discussed above, I hope this analysis will be more complete. It should be seen as a starting point for further discussion of these issues (if it hasn’t already happened).

## The good

Let’s start with the good news. Tsoding really liked some of the Fortran features, and he even said he could see himself working with Fortran for money (but not in his spare time 😅).  
He recognises Fortran’s potential for **scientific programming** , especially when it comes to **array operations** or **printing variables**. He also likes **implied-do** and the **`target`** attribute. He even understands why **implicit typing** was (and still can be) a great thing for quickly using some “predefined variables” (he fully understands why it’s dangerous and hasn’t used it after playing around with it).  
Overall, he thinks Fortran is a **passable language** and his first experience was **educational and informative**.

## The bad

Given the many concepts in Fortran that are quite different from other programming languages, he naturally had many problems.

At the very beginning, he lacked the basics of Fortran, starting with the **filename extension**. The first extension listed on Wikipedia was `.f`, which led to another problem: confusion about **fixed-source-form**. He then saw that he should use `.f90`, but didn’t realise that this is the de facto default extension for _every_ Fortran standard since Fortran 90.

Next, he wondered why the **asterisk is needed in `print` and `read`** statements, `(*,*)` confused him even more, as did **space in column one** , especially since it’s missing from the Quickstart tutorial. He was also unfamiliar with **subroutines** and the **strict order of the specification part**.

Furthermore, Tsoding had trouble finding good **references for statements** (e.g. he couldn’t find `read`&`print` in a list of all intrinsic functions). He was also challenged by _hard to google_ questions, such as **where to define a function** and **where to define a type for an interface**.Finally, there are some features he just does not like.When writing the interface to raylib, he found it very annoying to **repeat `use iso_c_binding` in every procedure**.As soon as he needed derived data types, it got even worse, because he first had to **import the type into the interface** , then had to repeat `import` in every interface. The **lack of an unsigned integer type** in Fortran made it even more difficult to use these interfaces, since using `transfer` or other tricks (which could lead to overflow compiler errors) is impractical.

In addition, Tsoding found it impractical that **lines get truncated if they are too long** , trailing **commas in array constructors** are not allowed (like this `[1,2,]`), and **name collisions with the program name as well as type names** (what’s the point of wrapping them in `type(my_type)` if the type name collides anyway).When using pure functions, he wished they would be **evaluated at compile time** when called with constant arguments.

## The Ugly

There are still some problems that cannot be solved directly because they are out of our control. But I think there are still ways to improve it.

In many cases, when he wanted to search for a feature on the web (e.g. `parameter`), **the first thing that came up were websites for old FORTRAN standards** , which led him in the wrong direction.He was also very **impatient**.Most of the time, he would just skip through the sites looking for a block of code to copy, missing important clues. While this was the most frustrating thing to see (for me), I think the most frustrating thing for him was compiling with his outdated GFortran compiler, which gave very **misleading compiler errors** (wrong lines, unrelated hints, etc). Even though it wasn’t directly GFortran or Fortran’s fault, he automatically blamed Fortran. The compiler is the language!

## Conclusion

From Tsoding’s experience with Fortran streams, it is clear that while Fortran offers many powerful features, especially for scientific programming, it also poses some challenges to those venturing into it from other languages.

His appreciation of Fortran’s capabilities in array operations and implied-do is a testament to the language’s unique strengths and its applicability in certain computational domains. However, the steep initial learning curve and unfamiliar concepts make the onboarding process a daunting task for many, preventing beginners from coding the Fortran way (using arrays and array operations).

The difficulties he encountered highlight several areas for improvement:

1. Documentation & tutorials: Emphasise modern Fortran practices and steer beginners away from outdated material. Perhaps even a central repository or forum for reliable Fortran resources would be beneficial.
2. Compiler feedback: It is vital that compilers provide accurate and helpful feedback. Encouraging the use of updated compilers and providing clear guidelines on compiler choice can reduce a lot of frustration.
3. Language features: While some of the difficulties faced by Tsoding were due to unfamiliarity, others, such as the lack of an unsigned integer type and the repetitive nature of certain constructs, are inherent to the language. Such pain points could be areas of focus for future language improvements or standards.

In addition, while Tsoding’s approach may have been impatient at times, it is indicative of the fast-paced nature of modern software development, where developers often seek quick solutions. This underlines the importance of readily available, concise and modern resources for the language.

Ultimately, the Fortran community can use this feedback to streamline the learning experience for newcomers and strengthen the language’s position in the scientific programming landscape.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [September 22, 2023, 2:42pm UTC](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102/84 "2023-09-22T14:42:22Z")

</div>

Thanks for taking the time to watch Tsoding’s videos and summarize his experience. A few comments:

> When writing the interface to raylib, he found it very annoying to **repeat `use iso_c_binding` in every procedure**.

I think he is talking about the `interface` in [raylib.f03](https://github.com/tsoding/tic-tac-toe-fortran-raylib/blob/master/src/raylib.f03). (Unrelated – it’s better to use the .f90 suffix.)

> Tsoding found it impractical that **lines get truncated if they are too long**

The line length limit is [raised to 10000 characters in Fortran 2023](https://fortran.bcs.org/2022/AGM22_Reid.pdf), and compilers already have an option to allow arbitrarily long lines.

> 1. Documentation & tutorials: Emphasise modern Fortran practices and steer beginners away from outdated material. Perhaps even a central repository or forum for reliable Fortran resources would be beneficial.

Beside the fortran-lang site there is also [list of tutorials at the Fortran Wiki](https://fortranwiki.org/fortran/show/Tutorials), some of which I added. It’s not by accident that the Fortran 77 category is at the bottom of that page.

[Previous page](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102.md?page=3)

[Next page](https://fortran-lang.discourse.group/t/tsoding-on-fortran/6102.md?page=5)
