0
$\begingroup$

What are the "job programming languages" for computational science? What are their use cases?

  • C obviously. But what standards, and what are some central use cases?

  • C++? But what standards, some particular subset?

  • Fortran. How relevant is this still? What about in the future?

  • Java. What are the use cases for a GC'ed language?

  • Python. What are the use cases for this slow interpreted language?

  • R. Is this really useful?

  • Other: Scala? Kotlin? C#? Julia? LuaJIT?

Also:

What kinds of changes could there be in the future?


I started viewing positively the newer languages like Scala and Julia, but so much existing code in C/C++ and Java makes it seem like these have only limited prospects, as nice as they may be.

$\endgroup$
2
  • $\begingroup$ @njuffa I think it can be answered, it just asks for the most significant languages and what could be such. $\endgroup$
    – mavavilj
    Commented Jul 14, 2022 at 20:21
  • 1
    $\begingroup$ In that case: If you are fluent in C++17, Fortran 2008, and Python, you are all set for the next ten years. $\endgroup$
    – njuffa
    Commented Jul 14, 2022 at 20:47

1 Answer 1

5
$\begingroup$

The majority of CS&E codes today are written in C++, and many are now based on C++11 or C++14. If you know C++11 well, you're probably on the safe side. C and C++ are the languages of choice for the many libraries on which other codes then build. This is true across the spectrum, for everything that involves linear algebra, optimization, finite elements and finite volumes, and support libraries such as for parallel and task-based programming. You have to be proficient in C++ today to be a productive computational scientist.

Fortran is used in a large number of legacy code bases. These codes are, for the most part, stand-alone rather than building on other libraries. Many of these code bases date back decades and have hundreds of thousands or millions of lines of code. They are very difficult to replace by newer codes, and consequently continue to be maintained. Many of them have over the years been converted to Fortran-90, and maybe Fortran-2008, but few use modern language features extensively. Most younger folks who end up using these codes learn Fortran as they go, rather than coming extensively prepared with long Fortran experience.

Many of us use Python for small-scale data processing and plotting. There are, however, a growing list of libraries that are either exclusively built on Python, or have Python bindings. That is true to a degree in the finite element community. Many of the linear algebra packages have sufficiently small interfaces that they are nearly completely wrapped with Python interfaces.

No other language plays a major role in Computational Science and Engineering, although there are of course proponents for this or that language and use case. That said, if you move into the data sciences, R is quite important.

$\endgroup$
7
  • $\begingroup$ Is there some particular subset of C++ that sees use, because I read that some library only used a limited subset, and their idea was that this subset is "ABI stable" so as to make it easier to bind to other languages? $\endgroup$
    – mavavilj
    Commented Jul 14, 2022 at 20:28
  • 2
    $\begingroup$ People use all of C++. There was a time when people (for misguided reasons) did not want to use templates or exceptions, but that time has passed as people have finally seen the light. $\endgroup$ Commented Jul 14, 2022 at 21:45
  • 1
    $\begingroup$ Java: No major computational science library is written in Java. (Plenty of libraries that do not fall into the "major computational science library" are written in Java, of course. They just aren't widely used in the community.) $\endgroup$ Commented Jul 14, 2022 at 21:46
  • 4
    $\begingroup$ Fortran is a contemporary programming language just like C++, Python and Julia. C++ is also 37 years old, and C has passed 50, but people don't appear to carry ageist attitude towards them. There are new Fortran codes published across many fields of science and engineering on a monthly basis. Just take a look at the list of packages: fortran-lang.org/packages/scientific. Also the sentence about "younger folks learn as they go, rather than coming prepared" is an oxymoron. Youth precludes having long-term experience. $\endgroup$
    – IPribec
    Commented Jul 15, 2022 at 8:48
  • 1
    $\begingroup$ C++ is a language that evolves much faster than C or Fortran. To say that modern C++ is 37 years old doesn't make sense. Modern C++ is very much based on lambda functions and higher order functions, which only entered the language with C++11, barely more than 10 years ago. C++ today looks very different than it did in the 1990s. $\endgroup$ Commented Jul 15, 2022 at 18:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.