Category Archives: High Performance Computing

Which Programming Language Will Scientists Be Using in 20 Years?

Scientific Software development is still dominated by Fortran, and what’s more, most Fortran programs have still not made the transition to the Fortran 90/95 standard, let alone Fortran 2003. Predicting the demise of Fortran is a sport almost as well-subscribed as predicting the downfall of Apple, but both Fortran and Apple have proven much more resilient than most could have anticipated. There wouldn’t be too many willing to bet against Apple at the moment, but Fortran may be about to come under pressure from new languages. Will the Fortran nay-sayers finally draw blood?

I do a lot of programming in Fortran; it forms the basis of the ADF package, which I contribute to, and most of my research programs are written in Fortran 90. I must admit to having a strong aversion to Fortran 77, especially when it is used to write new code. It was no doubt once a very powerful language, but by today’s standards is quite primitive. Fortran 90 addressed many of the deficiencies, making it a very useable language, approximately on a par with C. Some features of Fortran 90, such as arrays, are actually far superior to anything in C.

Recently, I have been following the transition to Fortran 2003 with some interest, and even looking beyond it to future Fortran standards. Fortran 2003 exists as a standard, but not yet as a practical language, because there is no compiler that fully supports it. It will be several years before it is a serious option, but you can already read about it.

Unfortunately, from my point of view, Fortran 2003 suffers from the same fate as most aging languages: it is quite verbose and ungainly. It’s not necessarily the fault of the Standard authors; it’s just what happens when you try to make something do what it was never intended for, like installing a turbo in a T-model Ford. For example, Fortran 2003 finally brings Object-Oriented Programming (OOP) to Fortran, but it is not a pretty fit. Languages like Python, that were designed for OOP from day one, are much more compact and natural.

The real question is if it even matters whether these new features are clumsy or not. Fortran is in a monopoly position, and history has told us that that can be a formidable barrier for contenders to overcome, even when the monopolist is second rate. The shear volume of Fortran code already in existence, and the reluctance of Scientists to learn a new programming language, may be enough to guarantee Fortran’s future.

It may not be all smooth sailing though, because for the first time in my career, there are efforts afoot to design new languages specifically with scientific applications in mind. One such language is Fortress, which is being developed at Sun Microsystems. Sun has achieved a lot with Java, and you might think that if anyone could come up with a viable new language, they could. Their team is headed up by Guy Steele, who helped design Java and contributed to the High Performance Fortran specification.

It will probably be another 5 years before Fortress is any more than an academic exercise, if it makes it that far. Even if it doesn’t supplant Fortran completely, it would be good to have some competition amongst scientific languages — at the moment it’s a one horse race.

Leave a Comment

Filed under Fortran, High Performance Computing, Scientific Programming