# Why are Climate models written in programming languages from 1950?

**URL:** <https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832>\
**Category:** Uncategorized\
**Created:** [March 14, 2021, 2:19pm UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832 "2021-03-14T14:19:26Z")\
**Posts on this page:** 7\
**Page:** 2

<div class="post-metadata">

**Author:** ![bwe](https://avatars.discourse-cdn.com/v4/letter/b/dc4da7/32.png) [@bwe](https://fortran-lang.discourse.group/u/bwe)\
**Post date:** [April 2, 2021, 1:27am UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/22 "2021-04-02T01:27:08Z")

</div>

The Global Forecasting System (GFS) is written at least partially in Fortran, and it looks like relatively clean modern Fortran.

Example Source: [https://www.nco.ncep.noaa.gov/pmb/codes/nwprod/gfs.v16.0.8/sorc/global\_chgres.fd/nstio\_module.f90](https://www.nco.ncep.noaa.gov/pmb/codes/nwprod/gfs.v16.0.8/sorc/global_chgres.fd/nstio_module.f90)

Of course, browsing through the source, there is also definitely some really old stuff in other files as well.

Overall Source: [Index of /pmb/codes/nwprod/gfs.v16.0.8](https://www.nco.ncep.noaa.gov/pmb/codes/nwprod/gfs.v16.0.8/)

Sadly, these links will be broken in the future, as they appear to delete old versions as new ones come out. Just realized my bookmarks to v16.0.7 were broken.

---

<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:** [April 2, 2021, 8:49pm UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/23 "2021-04-02T20:49:36Z")

</div>

[NOAA upgrades Global Forecast System to get more weather data](https://federalnewsnetwork.com/technology-main/2021/03/noaa-upgrades-global-forecast-system-to-get-more-weather-data/)  
By [Tom Temin](https://federalnewsnetwork.com/author/tom-temin/)  
Federal News Network  
March 31, 2021 10:20 am  
9 min read

> **Tom Temin:** Tell us the model that we’re talking about? Because I think NOAA has several weather models. Which one are we talking about here?
> 
> **Dr. Vijay Tallapragada:** Yeah, what we are talking about is the flagship American model. The colloquial name of the Global Forecast System. This is the mother of all models that weather service operates because it impacts almost every other modeling system that NOAA operates for various applications. So this is kind of a major upgrade that we do every two or three years. And the Global Forecast System, the GFS version 16, is the latest incarnation of that cycle of upgrades.
> 
> **Tom Temin:** And a model is a piece of software, correct? Tell us more about the size of it, what language it’s programmed in, and how it all exists.
> 
> **Dr. Vijay Tallapragada:** So these are the physical process in the atmospheric system coded into computer software, which is largely built upon Fortran 95. This is probably the only industry that still uses Fortran as a programming language. Although we added more object oriented programming into Fortran. And these cords are kind of 100,000-200,000 lines of codes. They run on powerful supercomputers, and they are integrated forward in time to predict what happens next. And in order to do that, you need to have initial conditions. That means what is at present happening in the world. And in order to do that, we collect all the data that we can, either from satellites, that remote sensing that send us billions of data points. We also have conventional data like the radio signs of balloons, the surface weather stations, the drop sounds from aircraft, and all aircraft data, and some commercial data. So they all are processed to create a model compatible initial conditions, or we call it analysis. Analysis is kind of a representation of the truth. And using that analysis as a starting point, the software that we wrote, the Global Forecast System software, forwards these data sets into time. And that is resulted in a forecast. And we call it loosely a forecast, but it is a guidance, the model provides guidance, it doesn’t give you a forecast. So the model provides products that can be interpreted to make a forecast. And the model is integrated out to 16 days, four times a day. So the model is updated every six hours predicting the weather across the globe 16 days out every time.

NOAA is on [GitHub](https://github.com/NOAA-EMC).

---

<div class="post-metadata">

**Author:** ![septc](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/septc/32/77_2.png) [@septc](https://fortran-lang.discourse.group/u/septc)\
**Post date:** [April 2, 2021, 9:37pm UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/24 "2021-04-02T21:37:45Z")

</div>

> Finally, Fortran is not the only standardized language: C language is also standardized, and Cobol, etc. I don’t know if it is only perennial languages which are standardized or if there is also young languages…

C# seems to be one (relatively young) language that has international standards.

> **[ISO/IEC 23270:2003](https://www.iso.org/standard/36768.html)**
>
> Information technology — C# Language Specification

But looking at this history table in the Wikipedia page,

> **[C Sharp (programming language) | Versions](https://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Versions)**
>
> The core syntax of the C# language is similar to that of other C-style languages such as C, C++ and Java, particularly:
> 1.Semicolons are used to denote the end of a statement. |
> 2.Curly brackets are used to group statements. Statements are commonly grouped into methods (functions), methods into classes, and classes into namespaces. |
> 3.Variables are assigned using an equals sign, but compared using two consecutive equals signs. |
> 4.Square brackets are used with arrays, both to declare them an...

it seems apparent that standardization takes a long time to catch up with the latest release available (e.g. C# 9.0).

---

<div class="post-metadata">

**Author:** ![septc](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/septc/32/77_2.png) [@septc](https://fortran-lang.discourse.group/u/septc)\
**Post date:** [April 2, 2021, 9:56pm UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/25 "2021-04-02T21:56:20Z")

</div>

> F’2008 introduced `DO CONCURRENT` as a _serial_ construct(!) and pointer-valued functions as variables (still buggy or unimplemented in most compilers).

I feel it not very good that a parallel(-like?) syntax like FORALL and DO CONCURRENT are not working in a parallel way, because (as far as I understand) various array features in Fortran are designed with parallel execution in mind (e.g. whole-array operation). Although OpenMP gives threading, Fortran itself does not provide threading capability (except for vendor-specific extensions). I think this is in contrast to other languages that have native threading supports.

RE pointer-valued functions, I tried this several times, but still not successful (if I remember correctly…)

> any design issues discovered by the first implementations won’t be correctable because the problems will have been already baked into the document.

I’m wondering if this is also the case for other languages with international standards (e.g. C++)? I remember having seen sentences like “the behavior of blah blah was changed from X to Y in xxx (because of ZZZ issues)”, e.g. in [cppreference.com](http://cppreference.com) (though I do not remember which page exactly…). I understand that backward compatibility is important, but it seems to have strong pros & cons.

---

<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:** [April 3, 2021, 7:52am UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/26 "2021-04-03T07:52:40Z")

</div>

> [@septc](#):
>
> it seems apparent that standardization takes a long time to catch up with the latest release available (e.g. C# 9.0).

Interesting, C# uses a mixed solution: classical versioning, plus standardization once in a while.

---

<div class="post-metadata">

**Author:** ![Ashok](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@Ashok](https://fortran-lang.discourse.group/u/Ashok)\
**Post date:** [April 10, 2021, 10:00am UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/27 "2021-04-10T10:00:37Z")

</div>

Some commercial companies highly regard Fortran  
[VORtech](https://www.vortech.nl/en/fortran-is-alive/)

---

<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:** [April 10, 2021, 12:17pm UTC](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832/28 "2021-04-10T12:17:57Z")

</div>

At the Fortran Wiki there is a section

[Fortran Advocacy and Language Comparisons (reverse chronological order)](http://fortranwiki.org/fortran/show/Articles)

- [Computer Language Benchmarks Game](http://fortranwiki.org/fortran/show/Computer+Language+Benchmarks+Game) - Which programming language is fastest?
- [This old programming language is suddenly getting more popular again](https://www.zdnet.com/article/this-old-programming-language-is-suddenly-getting-more-popular-again/)(2021) by Liam Tung, ZDNet
- [Resurrecting Fortran](https://ondrejcertik.com/blog/2021/03/resurrecting-fortran/)(2021) by Ondrej Certik
- [Network Dynamics Benchmarks](https://github.com/PIK-ICoN/NetworkDynamicsBenchmarks)(2021) by Michael Lindner et al.
- [Performance comparison R, Julia, Fortran for Bayesian binary probit](https://github.com/driesbenoit/benchmark_R_Julia_Fortran)(2021) by Dries Benoit
- [The Quest for Speed - An Indicative Survey in Improving Performance](https://discourse.equadratures.org/t/the-quest-for-speed-an-indicative-survey-in-improving-performance/144)(2021) by Bryn Noel Ubald
- [Basic Comparison of Various Computing Languages: Python, Julia, Matlab, IDL, R, Java, Scala, C, Fortran](https://github.com/JulesKouatchou/basic_language_comparison)(2020) by Jules Kouatchou and Alexander Medema
- [The Linear Algebra Mapping Problem](https://arxiv.org/pdf/1911.09421v1.pdf)(2019) by Christos Psarras, et al
- [Programming languages and particle physics](https://indico.cern.ch/event/769263/contributions/3420926/attachments/1841297/3020540/pivarski-colloquium-languages.pdf)(2019) by Jim Pivarski
- [Why I chose C for backtesting: Lessons from a journey to build an intraday backtesting engine](https://towardsdatascience.com/why-i-chose-c-for-backtesting-a44ab2815cb5)(2019) by M. Emmanuel
- [A Comparison of Programming Languages in Economics: An Update](https://www.sas.upenn.edu/~jesusfv/Update_March_23_2018.pdf)(2018) by S. Boragan Aruoba and Jesus Fernandez-Villaverde. [original paper](https://www.nber.org/system/files/working_papers/w20263/w20263.pdf) [code at GitHub](https://github.com/jesusfv/Comparison-Programming-Languages-Economics)
- [The Need for Speed Part 2: C++ vs. Fortran vs. C](https://www.r-bloggers.com/2018/12/the-need-for-speed-part-2-c-vs-fortran-vs-c/)(2018) by Avi. [Part 1](https://www.avrahamadler.com/2018/12/09/the-need-for-speed-part-1-building-an-r-package-with-fortran/)
- [Energy efficiency across programming languages: how do energy, time, and memory relate?](https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf)(2017) by Rui Pereira et al.
- [Comparison of performance: Python NumPy and Numba, MATLAB, and Fortran](https://jekel.me/2017/Python-with-Numba-faster-than-fortran/)(2017) by Charles Jekel
- [Why physicists still use Fortran](https://www.moreisdifferent.com/2015/07/16/why-physicsts-still-use-fortran/)(2015) by Daniel C. Elton
- [Formula translation in Blitz++, NumPy and modern Fortran: A case study of the language choice tradeoffs](https://downloads.hindawi.com/journals/sp/2014/870146.pdf)(2014) by Sylwester Arabas, Dorota Jarecka, Anna Jaruga, and Maciej Fijałkowski, Scientific Programming 22 (2014) 201–222
- [Scientific computing’s future: Can any coding language top a 1950s behemoth?](https://arstechnica.com/science/2014/05/scientific-computings-future-can-any-coding-language-top-a-1950s-behemoth/) (2014) by Lee Phillips
- [Debunking the Myths About Fortran](http://ed-thelen.org/FortranHistories/3%20Debunking%20Fortran%20Myths%20-%20Craig%20Dedo.pdf)(2011) by Craig T. Dedo
- [C vs Fortran for scientific computing](https://teunissen.net/wiki/doku.php?id=blog:c_vs_fortran) by Jannis Teunissen
- [Should Fortran be taught to Undergraduates?](https://walkingrandomly.com/?p=1397#comments) (2009) by Mike Croucher of NAG
- [Why Fortran?](http://ftp.demec.ufpr.br/CFD/bibliografia/Decyk_et_al_2007_Fortran.pdf) (2007) by Viktor K. Decyk, Charles D. Norton, and Henry J. Gardner, Computing in Science and Engineering
- [Scientific Programming in Fortran](https://www.hindawi.com/journals/sp/2007/930816/)(2007) by W. Van Snyder, Scientific Programming 15 pp3–8
- [Fortran: A Modern Standard Programming Language For Parallel Scalable High Performance Technical Computing](https://www.computer.org/csdl/pds/api/csdl/proceedings/download-article/12OmNzxyiIw/pdf)(2006) by David B. Loveman
- [On the Numerical Eciency of C++ in Scientic Computing](https://www.inutech.de/res/doc/Diffpack/Reports/On_the_Numerical_Efficiency.pdf)(1999) by Erlend Arge et al.
- [Fortran 90 subsets offer simplified environment for first-time users](https://aip.scitation.org/doi/pdf/10.1063/1.168632)(1998) by Donald L. Shirer, Computers in Physics 12, 166; doi: 10.1063/1.168632
- [Portability and Power with the F Programming Language](https://www.linuxjournal.com/article/2401)(1997) by Walt Brainerd, Linux Journal.
- [Fortran 90 for Science Students](http://www.lahey.com/PRENTICE.HTM)(1995) by John Prentice
- [Should C Replace FORTRAN as the Language of Scientific Programming?](https://fweber.sdsu.edu/p317/comparison.pdf)(1995) by Linda Wharton
- [Fortran is alive!](https://www.vortech.nl/en/fortran-is-alive/) from VORtech
- [Computing in Science: Fortran outlasts them all - While hardware technology proceeds apace, scientists still battle away with Fortran programming](https://www.newscientist.com/article/mg12316810-500/)(1989) by Don Monro, New Scientist.

[Previous page](https://fortran-lang.discourse.group/t/why-are-climate-models-written-in-programming-languages-from-1950/832.md?page=1)
