FORTRAN 2003 Accepted as Standard
GraWil writes "Despite the nay sayers citing its death in 1965, the FORTRAN standards committee has now released the final FORTRAN 2003 specification. In an announcement to the comp.lang.fortran group, Michael Metcalf annouced that 'Fortran 2003 has passed its ballot with flying colours: 20 yeses, 0 noes, 8 abstains.' Strictly speaking, the 2003 and past standards are not freely available but drafts can be found online. FORTRAN 2003 is an upwardly-compatible extension of the current standard, FORTRAN 95, adding and extending support for exception handling, object-oriented programming, and improved interoperability with the C language. In other FORTRAN news, the GNU FORTRAN 95 compiler has made amazing progress over the past year. Gfortran will be part of gcc-4.0 when released (probably in 2005)."
if(flag.and.function(var)) then...
is undefined if flag is false and function() has side effects.
real(kind=8) x
Does that mean an 8 byte real? Or a 8 bit real? It depends on the compiler... (and yes, I know the portable solution is
real (kind=kind(0.0d0)) x
and the such like, but *thats* really ugly, compared to
double precision x.
Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
Disclaimer: I have an M.Sci in physics with a slant towards computational physics. I'm most familiar with F90 but its advantages should apply to the later revisions as well.
Fortran is a slightly higher-level language than C. It has lots of math capabilities built-in; particularly matrix types and operations meaning good potential for parallel processing. Decent compilers can produce multiprocessor and MMX/SSE code from Fortran, and probably the equivalent on non-x86 platforms. I'm not sure if you can do this in C portably.
Fortran has a fairly simple overall syntax where newlines matter. I found it very easy to learn, having some experience with Python and C. In some ways the syntax is rather arcane but at least it's quite clear (compared to C or Perl at least IMHO).
Fortran does have pointers, but they are unnecessary because of other memory handling methods (namespaces or 'modules'). Dynamic memory allocation is a bit quirky IMHO, but way simpler than in C.
The language feels well suited for physicists. It's not necessarily good for general programming, but I'd happily use it for many speed-critical sections instead of C.
One important reason for the persistence of Fortran is the number of libraries for computational sciences, for example LAPACK. They can be included in modern Fortran programs despite being written in F77. There have been a number of attempts to make a scripting front-end for these libraries; Matlab is one of them, even though its F77 roots are not very visible.
The common complaints about Fortran are mostly true for F77 and older revisions. F77 is a truly horrible language, and it has none of the nice features that make F90+ good for scientific computing.
Escher was the first MC and Giger invented the HR department.
The nuclear engineering communitiy is (still) standardized on F77. The reasons: 1) many great neutronics codes were written in the 60's (often for weapons research) using F77 and are still valuable today and 2) the NRC has some strange requirements concerning foward and backward compatability - almost anything from a DEC PDP-3 to a new G5 iMac can compile F77 code. Maybe someday they'll let us use F95...
#include "humorous_pop_culture_reference.h"