Fortran 2000 Committee Draft
The formal position is that a CD (Committee Draft) Registration and Approval Ballot is in progress. The deadline for comments (from national bodies) is 27 December. Each national body will have its own deadline ahead of 27 December, so be sure to submit your personal comments to your national body well before then. For the USA, they should be sent to Deborah Donovan, email: ddonovan@itic.org. For the UK, they should be sent to David Muxworthy, email: d.muxworthy@ed.ac.uk.
John Reid, ISO/IEC JTC1/SC22/WG5 Convener
.................................................. ......................
ISO/IEC JTC1/SC22/WG5 N1494
Committee Draft revision of ISO/IEC 1539-1:1997 - Programming Language Fortran - Part 1: Base language
Abstract
Fortran is a computer language for scientific and technical programming that is tailored for efficient run-time execution on a wide variety of processors. It was first standardized in 1966 and the standard has since been revised three times (1978, 1991, 1997). The revision of 1991 was major and those of 1978 and 1997 were relatively minor. This proposed fourth revision is major and has been made following a meeting of ISO/IEC JTC1/SC22/WG5 in 1997 that considered all the requirements of users, as expressed through their national bodies.
The significant enhancements in the 1991 revision were dynamic storage, structures, derived types, pointers, type parameterization, modules, and array language. The main thrust of the 1997 revision was in connection with alignment with HPF (High Performance Fortran).
The major enhancements for this revision are
(1) Derived type enhancements: parameterized derived types, improved control of accessibility, improved structure constructors, and finalizers.
(2) Object oriented programming support: type extension and inheritance, polymorphism, dynamic type allocation, and type-bound procedures.
(3) Data manipulation enhancements: allocatable components, deferred type parameters, VOLATILE attribute, explicit type specification in array constructors, pointer enhancements, extended initialization expressions, and enhanced intrinsic procedures.
(4) Input/output enhancements: asynchronous transfer, stream access, user specified transfer operations for derived types, user specified control of rounding during format conversions, named constants for preconnected units, the flush statement, regularization of keywords, and access to error messages.
(5) Procedure pointers.
(6) Support for IEC 60559 (IEEE 754) exceptions.
(7) Interoperability with the C programming language.
(8) Support for international usage: access to ISO 10646 4-byte characters and choice of decimal or comma in numeric formatted input/output.
(9) Enhanced integration with the host operating system: access to command line arguments, environment variables, and processor error messages.
In addition, there are numerous minor enhancements.
Except in extremely minor ways, this revision is upwards compatible with the current standard, that is, a program that conforms to the present standard will conform to the revised standard.
The enhancements are in response to demands from users and will keep Fortran appropriate for the needs of present-day programmers without losing the vast investment in existing programs.
available in ps, pdf, text, or source (latex).
Now who says Fortran is not a sexy language ?? hum ?
When will I end this grieving ? When will my future begin ?
Just curious I guess.
healyourchurchwebsite.com - WWJB?
"I don't know what programming language we're going to be using in 2000, but it's going to be called Fortran."
Ok, so we're not all using Fortran any more, but it isn't completely dead -- or rather, the language which is *now* called "Fortran" isn't completely dead, even though it has little in common with the original "Fortran" beyond the name.
Tarsnap: Online backups for the truly paranoid
I had to learn F77 for a class my freshman year (1997, not THAT long ago) and we were working with F77. A part of that appeared to be because there were free compilers. Since most Fortran code is done in research groups that aren't computer groups, they may not all think to buy a real compiler.
A Free F2000 compiler - that researchers here about - would go a long way towards getting Fortran coders into Fortran 2000.
My understanding is that F95 and now F00 (or whatever) are "modern" langugages.
Amazing what you can do WITH backwards compatibility if you put energy into it.
Alex
Isn't Fortran completely irrelevant in the 21st century anyways?
Absolutely not!!! NASA uses it to slam probes into Mars.
I'll start by admitting that I have little experience with fortran and with the applications thereof.
::shudder:: doesn't support recursion, lexical scoping, etc., to my knowledge)
That being said, what experience I do have is that fortran is excessively difficult to write and lacking in some of the basic features I'd expect a programming language (I'm not familiar with fortran 95, but fortran 77
I can understand teaching fortran 77 to allow people do program for old interfaces and deal with the old code that would be expensive to rewrite, but why would you revise fortran to make it more usable? Why not just use C?
Perhaps I'm missing something, but I think fortran should not be taught in college (it is required for some majors here) except in the context of the historical significance of fortran.
For those of us under 50, here's some history of the granddaddy of all high-level programming languages.
IIRC, my former graduate advisor and professor was on the team that wrote a very early Fortran compilers at MIT in the late 50s, written entirely on punch cards. We've come a long way in ~50 years.
:wq
Damn! It takes a long time to compile Fortran... It's been two years already... And this is just a Draft!
This
This reminds me of a couple years ago when our AS/400 RPG programming group went to a users group meeting and found out about a "new" command which will finally allows them to manipulate dates as dates in RPG, not numbers!
The really shocking part was the function had been part of their language for over 5 years. Imagine if my Java skills were 5 years out of date. I would be making flaming applets on webpages thinking that was advanced.
In Fortran's favor, I do hear many people still use it today and it has plenty of good uses. I would like to know whether it really does, or whether the people who say that have their head in the sand. I am young enough to have missed most things Fortran, starting my programming with exposure with QBASIC then Pascal as my learning labguages.
-Pete
Soccer Goal Plans
So, someone's finally noticed that using a souped-up version of BASIC for writing mission-critical numerical code is a bad idea. :)
:-)).
:)
However, it's likely that most programmers who needed features such as inheritence, polymorphism, function pointers and so on have already bitten the bullet and moved to a C++ environment; trading off some gripes about the "standard implicit type conversions" (spit) for the increase in modularity, interoperability, etc. Introducing such features into the Fortran language now isn't going to re-write thirty years of pre-F2000 code. It feels like we're going to end up with "VB for scientists"at this rate!
But the real reason that so many people still stubbornly use Fortran is *performance*. Because the language is so much simpler (i.e. less expressive) than C or Java, it's hell of a lot easier to perform optimisations on it. Good Fortran compilers can re-arrange loop nests and do all sorts of clever stuff to improve parallelism, locality, and other aspects of performance. Add expressiveness (in the form of pointers, for example) and you add many extra complications which can render the optimisations invalid. If you can't optimise it as aggressively as you used to, you've just lost the penultimate excuse that anyone is still writing in Fortran. (The last excuse is that the 500,000 line codebase they're working on is also written in Fortran
Now I'm sure that lots of professional users and compiler writers have been involved in drafting the new standard, and that these concerns have been addressed. But I still reckon that Fortran needs euthanasia, not resurrection!
There, my 2p is now your 2p
These sigs are more interesting tha
Those who don't learn from the past are condemed to repeat it. So learn to appreciate it, or your next job is going to be coding in Fortran 2000.
10 if (you
I think it is you who needs to get his head out of his a...:
;-)
1. Fortran will not die until someone rewrites all those scientific computation code into C. And this will not happen anytime in the immediate future. On top of it (the last time I tried) the fortran source generated by some popular symbolic computation packages (like Mapple) was usable (after hacking) and the C was not. C++ - not even f... close.
2. Cobol - no comment.
3. Pascal. I have been watching C++ programmers take a month what used to take me a day or so with TP for Windows or early Delphy. I know - neither of them is suitable for big projects but they will still blow away C++ for RAD even now. And I do not care anymore typing away in perl anyway
So get a grip on reality and learn a bit about these "supposedly dead" programming languages before opening your a...e (err... mouth).
Baker's Law: Misery no longer loves company. Nowadays it insists on it
http://www.sigsegv.cx/
I hope this gets modded up as funny (because it is). However, I feel compelled to point out two things:
So Fortran may have taken us to the Moon, but it takes an expert system to slam probes into Mars.
How many /.-ers have ever written anything in Fortran? Sounds like a poll topic to me.....
You compare Fortran 2000 to supposedly "dead" spoken languages with Microsoft version numbers after them.
Fortran is not dead. It is still used for numerical computation because its default pointer aliasing rules allow. C only picked up similar aliasing rules in C99, which no common compiler fully supports yet.
Latin is not dead. It simply became Italian, with forks turning into Romanian, Spanish, and French, and then Portuguese, Sardinian, and several other languages forking in turn from those.
Greek is not dead. What the heck do you think they speak in Greece?
Will I retire or break 10K?
FortranXP.. part of the Fortran.NET initiative.
Fortran for .NET is real.
That was just the first result from this Google search.
Will I retire or break 10K?
They've had some problems with dates in teh past :). I seem to recall that after Fortran77 the next development version was called Fortran8X, because it was going to be finialized sometime in the 1980s. Well time bassed and it's now what we call Fortran90 becasue they didn't get it done until then.
I assume with will be Fortran200X, with X being whatever year they finally nail down the final spec.
I thought the 'C' went in column 6. It makes the draft standards really hard to read, especially if you get the punchcard format.
sPh
When your language is over 50 years old, a few years here or there doesn't make a difference. Nobody is choosing to use FORTRAN based on marketing literature.
"Zero" non numerum est!
Ahh - My eye!
The doctor said I'm not supposed to get Slashdot in it!
As someone who writes Fortran 95 that has to be portable between two Intel Linux boxes (one w/NAG fortran on with Intels), and an OSF1 with Digital FORTRAN, standardised exception/signal handling [not just IEEE_FPE] would make my life soooo easy right now (the DEC one is great [ie Just Like C], the rest are ugly/nonexistent [or, at least, I can't find'em]).
Actually, can I turn this into an AskSlashdot - Are there any really portable methods for doing exception handling in F95?
Athletic Scholarships to universities make as much sense as academic scholarships to sports teams.
I think in general it helps to teach more than one language. The current trend is to have a "core language" that schools teach in excruciating detail so that students will be able to go out and get a job right away, because they have a "skill".
But much of the time, they don't understand how or why what they've been taught actually works, which makes learning other programming languages vastly more difficult, since they're focusing on what's different in the syntax rather than on what's the same in the semantics.
Fortran has some notable advantages over C. Perhaps the most latent advantage is in the realm of multi-processing. For example there are several statments that give the compiler big hints that the loop can be spread out. For example there is loop command that is like a FOR loop but specifically says the order of the loop evaluation does not matter. Other looping commands tell the computer to apply a function over an entire array at all positions specified in a map. Function declarations tell the compiler if a variable/array in the arg list will be altered by the function call. There are delberate limits on pointer type variables that forbid pointer arithmatic and allow compiler efficiencies. As a result fortran is a marvelous multi-processing language because the compiler knows how to allocate instructions safely and how to allocate memory optimally.
Some drink at the fountain of knowledge. Others just gargle.
Fortran isn't entirely dead. At least to the scientific community. I am a Fortran programmer, working at in a research position and I'm not 50 years old, I'm not even 20. (Yeah for co-op)
.Net. Try it some time, its a rather amusing little language.
Truthfully, anything that Fortran can do, C can do better. But that wasn't always the case. Fortran used to be A1 for number crunching, and thus is used and still used by many research companies. Sometimes, if you don't have a CS degree its just easier to use the language you learned when you were in University or College than spend the time learning C or Java.
Some older satellites (8-15yrs) used Fortran code. And if those satellites are still in the sky, (which they are) then those persons working on keeping and updating them need to use good 'ol Fortran to keep them up in the sky.
Each 'new' version of Fortran tries to get a little bit more object-oriented than the last. At the moment I use both 77 and 90 (neither are object oriented). Fortran also has the lovely feature of GO TO!
Fortran will probably be used for awhile longer. Even with
</sarcasm>
T
---- It puts the lotion on its skin or else it gets the hose again. It does this whenever it's told.
I assume with will be Fortran200X, with X being whatever year they finally nail down the final spec.
:-)
Better make that 20XX then, just to be on the safe side
Try NetBSD... safe,straightforward,useful.
You do realize this word means "next-to-last", right?
So, what's the ultimate fortran program?
- A.P.
"Remember when the U.S. had a drug problem, and then we declared a War On Drugs, and now you can't buy drugs anymore?"
The real reason of course why we have a Fortran.NET is because it's being done (primarily) by Lahey, and without Fortran, Lahey is nothing. They're not about to let this ".NET Thing" pass them by.
Schnapple
I have written an informal description of the new features
Which this margin is unfortunately too small to contain.
Fascism starts when the efficiency of the government becomes more important than the rights of the people.
Back in my grad school days (5 yrs ago) everyone who had supercomputer time was writing in FORTRAN. Just ask yourself, do you want to write a new optimized routine to compute the Cholesky decomposition of a positive definite matrix for a sparse matrix and store the resulting sparse matrix in band compressed form so that you can increase your grid size from 5k to 20k elements -OR- do you grab the linpack routines from http://www.netlib.org/linpack and go have a beer.
At the University of Minnesota beer usually won.
Truth: If it's not one thing, it's another
A large amount of science is now done on commodity intel pentium chips with gcc (g77).
Depends on how you define "large," I suppose. There might be a lot of engineers and scientists out there running numerical analysis code on commodity hardware, but an awful lot of that kind of work still gets done on big vector-processing supercomputer systems like Crays. There are still a lot of J90's out there running Fortran code for companies like Ford and Boeing, and at seemingly every major university in the world. And NEC's SX series is, according to everything I've heard so far, selling very well.
Don't assume that vector computers are dead just because you've never seen one.
F77 was a cool language. IIRC, the original version of Adventure Cave used an interpreter that was written in F77. It is also one of the few languages that have native support for imaginary numbers (some versions of APL did as well).
Looking at the summary of changes, I suspect that they've finally messed up the things that made FORTRAN (or at least F77) great. The addition of pointers stands an excellent chance of rendering code un-optimizable, and I fear that adding OO features is an even bigger mistake. I would have liked to have seen Unicode support and exception handling, and that's about it.
Nothing for 6-digit uids?
That's the difference between C and Fortran. The group working on C9X, in a sudden burst of work, completed the standard in the middle of December 1999. Of course, they're still working on the details, but they got an official release out in the right decade.
I work in the flight sim business. I can assure you that every one of the 2 million plus lines of code written by my team over the last ten years was in C++ and for the ten years before that it was in C or Ada.
30 year old code will probably be in FORTRAN.
We do still have legacy code in Fortran. Mostly stuff we inherited from other simulators - and mostly in the area of simulating the actual flight dynamics. That stuff is hard to rewrite accurately and is a *tiny* fraction of a typical multi-million-lines-of-code simulator.
HOWEVER (dragging this screaming and kicking back on-topic) there is absolutely no need to invent FORTRAN 2000 just so we can run legacy code. If it's legacy code, that's because we can't/won't rewrite it - so why would we need a new revision of the language?
All that the world needs is a good way to call FORTRAN functions from within C++ - and we already have that.
FORTRAN should just be left to die peacefully.
www.sjbaker.org
But what about the BIG question?
When and why did the name change from "FORTRAN" (all uppercase, preferably with a slash across the letter O) to "Fortran" (mixed-case)?
Indeed, since the name means Formula Translation, if the name was to be changed at all, why was it not changed to ForTran (with an internal upper-case T?)
Those familiar with the world of M, I mean MUMPS, I mean M[UMPS], where the name of the language either was or was not officially changed, and the language is or is not properly referred to by both names or by one or by the other, and where M is either an officially sanctioned abbreviation, an officially sanctioned alternate name, or the One True name, or was changed in the ANSI spec but not the ISO spec... or not... will appreciate the importance of such issues.
Particularly since in these modern days it's pretty safe to assume that your PC's printer is equipped with a full 192-character chain.
"How to Do Nothing," kids activities, back in print!
I think I recognize some of these names on the Fortran 2000 committee, they were on another committee that was coming up with designs to retrofit Model-T's with solar cells
<grub> Reading
But Plankalkul wasn't implemented until 2000. I don't think it would be possible to implement it on the late 50's computers, and certainly not on the Z1/Z2/Z3 or other 1945 computers. Without an implementation, it's not a computer language, it's just math.
says...
"Never use a programming language that is older than you are".
So I'm just about okay with Fortran 66....
Baz
Because C is also a very parallelizable language with hooks for both MPI and openMP and even PVM if you really want.
You don't get it. A high-quality Fortran compiler will unroll your inner loops for you, creating an executable that will spread your non-dependent iterations across multiple CPUs. This happens automatically. SGI's old Fortran compiler, Power Fortran, was exceptional at this. I haven't used the new F90 compiler myself, but I understand it's just fine at autoparallelization as well.
The only reason fortran is still around in science is legacy code (which is fine by me, I don't want to port it) but new code should be written in what the programmer is more comfortable with debugging.
Agreed! Fortunately, in engineering, the kids are still coming out of the schools with fluency in Fortran. That way, they can use not only the language they're most comfortable with, but also the language that's best suited for the job.
And FORTRAN is a niche language... If you learn C you can do it all.
I think we're getting to the point where C will be considered about as useful as assembler. That is to say, for some tasks it's essential. For most, though, it's more trouble than its worth.
...with the sort of morbid fascination that makes people slow down to look at car wrecks:
Does the language still have EQUIVALENCE?
although for the size of our projects C++ is the obvious lnaguage of choice
Um... no. The language that your people are comfortable using is the language of choice. No other meaningful criteria exists.
Let's say there were some magic language, Foo, that was absolutely perfect for computational chemistry. It has standard library calls like solveThisHardProblemQuickly() and such. Just perfect.
Like any other programming language, Foo has a strict syntax. It's easy to write a buggy program in Foo, but tricky to write a perfect one. All languages are like this.
Your Fortran programmers decide they're going to abandon their preference and write in Foo instead. How many months do you think it would take for them to become conversant in Foo? How many trivial bugs will slip through in that time because your programmers weren't experienced enough with Foo to catch them? How far behind will you be at the end of the whole process?
And that's assuming that Foo is perfect. If Foo has its own idiosyncrasies and quirks, you can comfortable double those estimates.
There is only one inviolable law of computer programming: do what works.
...and has done so for quite some time. None of the languages bundled with GCC first translate into C.
You cannot apply a technological solution to a sociological problem. (Edwards' Law)
and is hosted right over at g95.sourceforge.net. Take a look.
You cannot apply a technological solution to a sociological problem. (Edwards' Law)
One of the biggest additions to Fortran that I haven't seen mentioned so far is support for Perl 6 style regular expressions.
[ducks for cover]
Any plans for a FORTRAN on MicroSoft NET? Look how much mileage Bill G has gotton introducing various versions of BASIC the past 27 years. I recall when MicroSoft was primarily a languages company, 1975-1981, it shipped a version of PC-FORTRAN.
... is what FORTRAN is good for: number crunching. F77 is a perfect tool for many scientists who don't care about pointers or object oriented programming or nice graphical output subroutines or any other nice things that other programming languages have. They want something that will do some number crunching for them and won't screw up or cause problems.
FORTRAN is simple. It works like many mathematicians and scientists think it should. It meshes well with what they really want to do in a good number of cases. The level of abstraction is perfect for many of them.
FORTRAN will take a long time to die because of this. Personally, I like more real-time interpretive languages like IDL. But when it comes down to something that is pure number crunching that'll take a few hours, I'll gladly have FORTRAN. That's why so much in the sciences is written in FORTRAN, then the data is output and run through other programs to do the pretty plotting and further interpretation.
FORTRAN just works, has worked for 30+ years, and with the amount of incredibly useful code still around, will still work for decades to come. Granted, I don't necessarily like some of the proposed changes, but as long as everything works like it did before with F77 code, I think no one will (or should) mind.
-Jellisky
You are not comparing like with like. Depending on how you code bubble sort can be quite fast if the items are already mostly in order.
C++ is not the frienliest of languages to write an optimizing compiler for and if you buy the standard edition of Visual C++ you don't even get the optimizer. So comparing languages on the basis of unspecified compilers is idiotic.
I have used Fortran extensively and in particular for numerical applications. My experience was that the code people wrote in Fortran tended to have a much greater number of bugs. There were plenty of libraries arround but the quality was mostly very poor. Even very well known packages such as CERNLIB were riddled with bugs, even after 20 years of development.
A competent programmer working in any imperative language can write code that outperforms an incompetent programer in any other. Most of the physicists I worked with didn't even turn on the optimizer.
Looking for an Information Security student project suggestion?
Try http://dotcrimeManifesto.com/
...F77 is what you rely upon.
To calculate aircraft performance (i.e. can we take off with x passengers on this airfield that happens to have a big mountain at the end of the runway?) all (no exceptions) airlines use F77 calculation modules that are provided by the aircraft manufacturers.
These calculations are, at least in my book, as close to mission critical as you can come. Do it slightly wrong and you may end up in the safety net at the end of the runway. Do it majorly wrong and you hit the aforementioned mountain...
The modules are reasonably complex (up to 100k loc without a GUI), in strict F77 with the mess that that brings along and are written by Aerospace majors who, if they were lucky, got a 3 week course in F77 at University.
The obvious question is why?
- F77 is the most suitable language for the problem?
- Aerospace engineers like F77?
- It's an international conspiracy?
Unfortunately the last one is closest to the truth. The modules are coded according to a standard decided by IATA - International Air Transport Association (http://www.iata.org). A standard that was created some 20 years ago and with regards to F77 of course has not changed since... Why? Because the airlines knows how to handle these modules. The I/O and behaviour is well documented and understood and to change to something even resembling modern CS practices (even F90 would be a giant leap forwards!) would require huge investments for the airlines. Something they are of course not too willing to do. There are some reason for the currently ridiculously low (in comparison) fares we pay.
Oh, and by the way, the modules are of course not in any way certified by whatever competent authority there may exist. No, in general they prove their worth by the good old method of "service history".
PS. I have not given up flying just because I've experienced this. All aircraft operations have a rather large safety margin built in. For the "ouch" picture above with the very hard mountain top, we would also need to lose one engine. This in combination with the fact that the "service history" criteria seems to work pretty good still makes flying safer than walking...
Well it is easy enough to find out. Take the Microsoft J# or C# compilers which have a highly optimized back end and compare with a good FORTRAN. My guess would be that C# and J# would give almost exactly the same results since the two languages have the same feature set. C# might have an edge since it is slightly newer and was designed by the people who wrote the back end of the Visual C++ compiler which is the base of CLR.
I would expect both to outperform FORTRAN.
The reason is that FORTRAN gives very little assistance to an optimizer. OK loops can be unrolled. Guess what? every optimizing C compiler does the exact same thing.
The only reason why FORTRAN might be faster is the static allocation model. This means that pointers can effectively be derefferenced at compile time. But that does not provide a huge advantage for today's processors.
Looking for an Information Security student project suggestion?
Try http://dotcrimeManifesto.com/
No, what I don't understand about keeping fortran alive is because its users (scientists mostly) are people who refuse to use something new and better. They all use fortran 77 the way they learnt it through a 10 hour university course. I tried to get some of my users to use fortran 90 or 95 and failed pathetically. As my boss said: "if you think you have a clever programming trick, forget it !"
So what is the point of extending fortran with polymorphism and such ? They'll never use it. As a pro developper I'll never use it (I have the right tools already: C/C++/Java/assembler/perl depending on the job).
What is the point ? So they can sell expensive compilers with the new Fortran2000 sticker on it that nobody will ever use ? Marketting gimmick ?
Non-Linux Penguins ?
f00!
This r0x0rs, d00d!
Mordor...a magical, mythical land where women are more rare than dragons--but where every man would rather find a dragon
Its probably more appropriate to tell it to:
C Tell FORTRAN to goto Hell
goto 666
or if you're into phone keypads:
goto 4335
They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
Ben
If you BOTHER TO READ the report of the navigation failure of the Mars climate orbiter...
If you'd BOTHER TO GET A SENSE OF HUMOR...
You are talking about modern FORTRAN though - the legacy FORTRAN that we have is all >30 years old. I could be wrong - but I don't think all the fancy features you refer to existed back then.
www.sjbaker.org
I don't understand your distinction between computer languages and math, especially the part about "Without an implementation". I've never seen anything suggesting that an implementation is necessary for something to be considered a "language".
-Paul Komarek
I'm not so sure about your last claim:
;-)
"But that does not provide a huge advantage for today's processors."
With the increasing disparity between cpu speed and memory latency and bandwidth, things which affect cache behavior can produce large performance gains or penalties. Dereferencing pointers at compile time is one such thing.
If the cpu-memory mismatch continues to grow, I expect that optimizers for Fortran will be able to make better use of cache than optimizers for (say) C or Java. Unless, of course, all these extensions to Fortan screw up the advantages.
-Paul Komarek
Too late for this report to be nominated for the CS section of the 2002 Ig Nobel awards.
-- What do you need?
-- Gnus. Lots of Gnus.
I'd advise against that; he's wrong. He's probably just transferring his desire to avoid using Fortran into an unsupported belief that it will go away.
I certianly have similar desires myself (I took Fortran off my resume 10 years ago so I'd never be the poor sap stuck using it). But I don't share his delusions.
I took a graduate level course in compiler optimization, where I got to question that claim almost daily.
What I discovered from the course is that Fortran compilers are really good at optimizing, in general. There are two main reasons for this.
Reason one is some inherent qualities of the language, chiefly its lack of pointers. When your language supports pointers in the unrestricted way C++ and C do, suddenly any object can be aliased at any time. This makes it damn tough to optimize things.
However, languages that are strict with pointer usage, and stricter than Fortran on the results of other constructs, could in theory be even easier to optimize than Fortran. Ada, Java, and the various Wirth languages come to mind.
But theory really matters little. Fortran's big advantage over those other languages is in practice. Fortran users are doing hairy numerical processing, where they need all the optimization possible, and are willing to pay for it. Thus extreme efforts get put into optimizing Fortran compilers, and most of the research into optimization theory is funded by Fortran users.
If loop unrolling thrashes the cache, ....
I think execution speed is rather faster than memory access.