Posted by Hemos on
Wednesday December
22, @03:47AM from the more-support-from-compaq
dept. stevel wrote to us with the news that
Compaq has announced Version 1.0 of
Compaq Fortran for Linux Alpha
systems. The compiler is the same as the
one that is used on Tru64 Unix,
OpenVMS, and Windows. Click below for
more details from Compaq.
Compaq Fortran for Linux Alpha systems
is a full-language Fortran 95
implementation. Fortran programs using
the latest features as well as traditional
Fortran 77 programs will be able to take
advantage of the highly optimized Alpha
code generation technology to take
advantage of the Alpha processor's
leadership performance. The compiler
also supports most of the popular
language extensions available on other
Compaq platforms (OpenMP and HPF
features are not currently supported.)
Accompanying the compiler and
optimized run-time libraries is Ladebug, a
robust and easy to use debugger that will
simplify the debugging of all of your
Fortran applications.
Also provided is the Compaq Extended
Math Library (CXML), a library of
technical and scientific subroutines.
Compaq Fortran for Linux Alpha
Systems is available as a free download
under a Technology Enthusiast license
for non-commerical use. A Commercial
Use license and media kit is available for
US$399 - attractive multiple-license
pricing is also available.
A friend of mine is, as far as I can tell, the first person to have
ever written a CGI program (Common Gateway Interface, not
Computer Graphics Images) in pure FORTRAN. He's an
astronomer (who reads Slashdot and may follow up with
details), and used it for some very cool plots of the sky....
Though a lot of people here may not "get" why FORTRAN is
still important, you can get a idea by looking at "modern"
toolkits such as the Perl Data Language (PDL module) which
has a stunningly huge mathematical library that is ALL written
in FORTRAN. FORTRAN was (is?) THE language for scientific
analysis, so there's a ton of powerful math libraries that you
can buy or get free for it. When you need to do something
hideously complex, you don't want to have to start from
scratch, writing all of the libraries to, say, do high-level matrix
manipulation.
I have used C++ now for about 5 years. I also have 5 years of
FORTRAN experience (distant past).
There are million line FORTRAN programs. And it has
advantages for numerical calculation. When converting
numerical calculation programs from BASIC or FORTRAN to
C/C++, I frequently get bitten by automatic promotion of types
in expressions and precision being lopping off in the process.
The only way to fix some of this stuff is to add explicit type
casting in strategic parts of the expression.
If you were a scientist, why would you bother with this noise.
FORTRAN (stands for Formula TRANslation) is the best tool
for the job.
Also, the Compaq compiler is likely to descend from the old
VAX/VMS FORTRAN compiler. This compiler had many
man-years of optimization put into it and was difficult to match
in performance.
The reason we do not all use FORTRAN today is that unlike the
old days, most computing is not floating point number
crunching. Maybe that is why Digital Equipment Corp (formerly
#2 in computers) no longer exists.
When one says that Fortran is faster than C/C++ one means
that if you have two versions of the same program, one written
in Fortran and the other in C/C++ then the fastest executable
will be likely the compiled Fortran version.
The reason for this is usually due to the control over aliasing
that Fortran has. This allows better compiler optimizations that
result in faster executable. Moreover Fortran 95 has lots of
constructs that give hints to the compiler on possible
optimization: the array sintax (so the compiler knows that order
doesn't matter), the intent of paramters (in, out, inout), pure
functions (functions with no side effects), allocatable arrays
(that guaratee no aliasing) are some exemples.
Oh, and yes, it is very nice to borrow some APL features :-)
Paulo.
PS: I am not really a Fortran fan, I am fan of using the best
language to solve a given problem. In the case of numerical
problems, Fortran seems the best. I would gladly program in
C/C++ if I could prove to my advisor that I can get a faster
executable by doing so.
There's nothing preventing us from releasing a compiler on
Linux Intel, other than finding the time and resources to do so.
However, the motivation for doing the Alpha compiler was to
promote Alpha hardware sales, so that's what we did. An Intel
compiler would have an entirely different business case to be
made for it. (Yes, Compaq sells Intel boxes too, but that side of
the company doesn't seem interested in Fortran.)
Our Intel Windows compiler (Compaq Visual Fortran) is very
popular, and we do get frequent requests for an Intel Linux
version. There are no current plans to do that, but then again, a
year ago there were no plans to do Linux at all. So, "never say
never"...
If you feel that we should do an Intel compiler, and would be
willing to pay for it, let us know. (Feel free to send me mail with
your comments.)
Why would using Lisp for number crunching be stupid? Are you
aware of the high-grade native compilers? Of the multiple types
(arrays, vectors, etc) beyond lists that can be easily optimized?
Or the fact that floating point precision can be arbitrarily
specified and runtime checks turned off? Of the ease with which
you can change the safety and speed settings of the compiler on
the fly? I would think that Common Lisp would be much better
than Fortran95 for pretty much everything.
There's some stuff about Lisp FP speed vs. C at
http://www.cons.org/cracauer/lisp.html There's been some
benchmarking vs. g77 done, but I don't know where it is. For
more info, check dejanews's archive of comp.lang.lisp
~~~~~~~~~
auntfloyd
Our compilers do not use gas - they compile directly to ELF
object code. They do work with gdb, but for Fortran in
particular, you'd be happier with ladebug.
I am confused by the comments here about the license. Here is
what we intended...
The "Technology Enthusiast" license is free for non-commercial
and personal and classroom educational use. It allows you to
develop software for and distribute to others, as long as you
aren't "paid" for it.
If you want to use the compiler for paid work, or for use by a
"business" (even an educational institution), then buy the
commerical license (which is by far the least expensive Fortran
license we offer!) We did a survey of beta users asking how
much they would expect to pay for a commercial license - I was
astonished to see many listing figures well over $1000! Initially
we had been thinking $499, but we knocked that down to $399.
I agree that the wording of the license terms at present is a bit
confusing. I have some new wording which will be put up on the
site soon.
I am primarily a C/C++ programmer with all of the biases that
come therewith. I also use Perl quite a bit because it is useful,
even if the syntax is abomitable. If I had my way we would all be
using LISP. I started out using VAX Fortran and Fortran 77 in
scientific applications. As I gained increasing familiarity with it I
began to seek alternatives.
Have you ever heard of double precision floating point numbers
and long integers in C? I can't help it if your are not careful
handling numeric types. C often makes bad decisions for you if
you let it.
Trusty hammer, indeed. I spent a few months maintaining some
Fortran code and started calling it blunt-object oriented
technology. In fairness, that describes the previous coders'
styles as much as the language features.
Fortran is still in use, but only because lots of people believe, it
is cheaper (time wise) to fix existing code than make a paradigm
shift. I wrote all my code for heavy number crunching for my
PhD these in FORTRAN 77 using PVM for massive
parallelization. I spend days debugging code, since prototyping
does not exist and subroutine calling sequence did not match
after some changes.
Three years ago, I finally gave it up and switched to C++.
Almost all my code is rewritten since. You can always start
writing a C++ wrapper class around existing and running
FORTRAN code, to utilize it in new projects.
I noticed, that my developing cycles are much shorter now,
since less debugging is necessary. In the mean time we have a
farm of Linux PC's and they are feed in C++ through a simple
PVM++ wrapper class in a much cleaner way as I used to do it
in FORTRAN. Less code is necessary in switching to an OO
paradigm.
I do not look back on the times, I was programming FORTRAN.
FORTRAN is not clean and nice. It is dirty, has lots of memory
problems, since FORTRAN does only know pointers in calling
sequences and therefore the subroutine has no change to check
consistency of the arguments.
Of course, you can formulate any problem in any programming
language. It is just a question of efficency.
Let me finish with a comment on the Alpha boxes: Some time
ago, I looked into buying an "killer box" based on the alpha for
heavy number crunching. However, I only got a factor of two
speed increase out of an alpha testbox. Since my appliation
using heavly threads and PVM it turns out to be cheaper per
MFLOP moneywise to buy a SMP x86 box than an ALPHA or
even MAC G4 based system. The last buy for our institute were
two PII 400 dual 128MB RAM boxes for total $2500 in 8/1999.
Your milege might vary, especially if you spent $10000 or
$100000 on your boxes. But I bet, your MFLOP/buck rate is
even lower.
You're a brave man. You aren't allowed to question this.
Surprisingly, no - I would be more likely to be accused of
jumping on the "!GPL==BAD" Bandwaggon, recently aggravated
by the Sun Community Licence and their recent aboutface,
taking someone else's work, rebranding it as their own (or not
acknowledging the originators, which amounts to the same
thing) and suddenly starting charging for the right to call your
compiler "Java".
If you are, you'll get branded offtopic or overrated.
Hmm. I am seldom offtopic, but fairly often overrated :+)
But you're right: it's not free, and this is a problem.
Not so much a problem as initially misleading - It *is* a step up
from nothing, and a useful time-unlimited "trial" package if you
wish to evaluate this package, but given it's very narrow field
(Linux on Dec Alpha! how many people HAVE a spare dec
Alpha, never mind one runnning Linux? Possibly a discarded
NT box now that MS have dropped NT4Alpha like a hot stone
:+) and the fact that fortran, despite it's huge legacy codebase,
and that it is ideally suited for certain tasks, is very much a
fringe language in the *nix environment.
--
It's not just a "compiler optimized for Alpha". The back end to
the compilers (C, C++, Fortran)is a technology called GEM. The
Compaq Visual Fortran (CVF) compiler for Intel compilers is
GEM based also. GEM has an intermediate language that can
then be output into Alpha or Intel binaries. (this is a 50,000ft
level description)
There's a group of engineers that work up in Nashua, NH that
live and breath compilers and compiler technology. You are
getting the fruits of their labour for nothing.
Ohh jeez.. go stick yourself in the eye. If linux had been built
using Borland C as the compiler.. do ya think it'd be where it is
today.
NO.. it wouldn't exist.
Soo.. it's not just a "convenience" to have a free compiler. In
some cases it is necessary. Other's it doesn't matter.
But let me add that as a personal/application compiler - go for
it. I happen to use ccc myself. It's freaking fast and wonderfully
STRICT! I'm not a f77 guy.. but thhis compiler is freaking fast.
One noteable feature in ccc is that they are trying to make the
cmdline switches to ccc compatable with gcc. Ofcourse..
ladebug still sucks rocks. Nowhere near gdb standards.
This is almost exactly what we do in my shop. I work on a
system for realtime telemetry processing. We have an
enormous amount of legacy Fortran code. As things have
evolved over the years, the core Fortran routines have
remained relatively stable. New code tends to be written in C as
a wrapper around the Fortran. I have, for example, developed
Motif interfaces to replace our old command line and SMG (the
proprietary DEC equivalent of curses) interfaces. All the old
Fortran was accessed through callbacks from Motif written in
C.
the real problem is that c *can't* make some good decisions,
with or without your help (the aliasing problem).
C will never be as quick on some numerical problems, because
the language hobbles the compiler in certain respects.
C++ might (see blitz++, etc.) but only by taking those decisions
away from the complier and making them explicit (via
templates, or whatever).
There are lot's of reasons one might want to ditch FORTRAN
(from a comp sci. point of view) but there aren't any really good
contenders there yet. That doesn't even bring up the F95
sucks/sucks not debate :)
You seem to be extrapolating from a problem domain you
understand to one that you don't...always a mistake.
Truly commercial-quality Fortran for Linux is definitely good
news - despite the fact that Fortran itself has quite a limited
number of serious users (a couple of scientists with alphas, not
quite a blockbuster) it certainly carries a PR value you cannot
just ignore.
Free-but-not-free license is disappointing, but what else can
you expect from a company like Compaq.
IIRC, this has actually been available for quite a while in beta
form. This is, however, good news - the Digital (I can't bear to
call it Compaq) Alpha compiler for Fortran produces code that
is anywhere up to 2-3 times as fast as g77 (currently, that is.
I'm sure g77 will get better). Anybody doing scientific work on
an Alpha under Linux (and, let's face it, most people that have
Alphas use them specifically because they're good at scientific
work) can benefit from this.
(FWIW, I've used the Digital C compiler for Linux, and it
produces excellent code - better, in most cases, than gcc.)
Last I heard, the primary g77 developer gave up
on it, and its status is in limbo. In any case,
g77 isn't very close to fortran-90 compatibility.
OTOH, I find it hard to imagine that too many ppl
on Linux/Alpha have a big use for fortran anyhow..
OTOH, I find it hard to imagine that too many ppl on
Linux/Alpha have a big use for fortran anyhow..
You have got to be kidding. An awful lot of scientific
applications are written in Fortran for two reasons:
1: Many scientists started using Fortran a long time ago, and
they can't be bothered switching now (not to mention all that
legacy software they've stocked up).
2: The floating-point math libraries for Fortran on the Alpha
are way faster than just about any other language on any
desktop platform, period.
If Fortran wasn't available for Alpha, the architecture would
have most likely sunk into obscurity a long time ago.
Freshman year, my advising seminar involved developing a
method for modeling sail boats. We were given a spec file and
implemented some algorithms to scale the boat, apply wind, etc.
We wrote some code, and used some code that the professor
developed years earlier. The language in use? Fortran-77.
Developing that on our Sun Workstations was a travesty.
Fortran is STILL heavily used in academic circles because the
code already exists. My friend, when interviewing for an on
campus job doing mathematical modeling, was asked if he knew
Fortran. He convinced the guy to let him do it in C++, but some
professors would insist on Fortran.
From my experience, for doing scientific analysis, Fortran is
fine. Fortran, C, PASCAL, BASIC, it really doesn't matter, the
structured languages are all almost identical with slightly
different syntax.
While object oriented techniques make sense for real software
development, if you merely want to run a particular algorithm
on a lot of data points, any structured language will do.
Older researchers learned Fortran and probably never moved to
the newer languages. Fortran is really clean, and if your existing
code is in Fortran, why migrate to a newer language. While I
haven't read the newer Fortran specs, I believe they implement
much of the functionality of other structured languages
(although I'm assuming no real memory control).
Fortran makes it VERY easy to develop robust applications for
number crunching without any risk of memory leaks, etc.
Additionally, groups may already have thousands of lines of
code already written and just need to write a bunch of 15-20
line applications utilizing them to do different forms of analysis.
Fortran on the Alpha under Linux may be the "killer app" to
move Linux into acadamia. I don't mean in the school's IT
departments, but into research departments. For departments
that need to process a LOT of data points, allowing students to
develop code at home or on public workstations and then run
the massive calculations on their Alpha machines may be a real
cost and time saver.
If Compaq gets the rest of their compilers in line, then
Linux/Alpha may become huge.
Your statement that:
I find it hard to imagine that too many ppl on Linux/Alpha
have a big use for fortran anyhow..
is kinda silly. Outside of home users, people don't buy a system
and then find a use. People have a need and pick the best
platform.
If you have a lot of existing Fortran code and want to utilize it
for new processes and do massive calculations, you pick the
best platform available. If current computing capabilities fit
your need, you use them. If you need a newer machine to
process all the data, you buy a new machine. If the Alpha
platform under Linux is the best platform and you have a lot of
Fortran to process, I can bet that you'll be buying a new Alpha
machine running Linux.
Fortran still has its strengths and with the new extensions
(OpenMP, OO traits) can still be used. However, for teaching
purposes, I would hazard that people would prefer coding in
higher level languages such as MatLab. Sure Fortran may be
that trusty comfortable hammer but when you've got an
automated nailgun handy, it makes sense to shoot yourself in
the foot faster :-). CPU cycles are getting cheaper whereas
human development time is not. Debugging old style Fortran is
still a pain even though it doesn't have the pointer aliasing
problems of C. Also people at TriLabs have found that with the
right approach, numerical libraries written in C++ can be just as
good as Fortran. If you look at areas where some heavy number
crunching is used, for example real-world physics in game
engines, I suspect that C++ would predominate. Hence Fortran
will still cruise on like the mainstay Cobol but the use of other
languages (like Java and Python) will start to draw attention,
especially to utilise commercial development environments.
The big bugbear is that Matlab compilers still don't optimise
themselves very well for modern architectures with cache
and/or hierarchical memory. If you're interested in the nitty
gritty details of cache-line control and low-level latency then
hand-tuned Fortran still has a place. As the Alpha processor
has the highest raw floating point performane, it is a favorite of
many academic and scientific grunt workstations. And if worst
comes to worst, you can use the heat it generates as a coffee
warmer :-).
If you think that real-world physics in game engines is "heavy
number-crunching", then please, write your software in C++.
BTW, there's a big difference between in saying that libraries in
C++ can be just as good as those in Fortran, and actually
providing libraries that are faster than those in Fortran. I've yet
to see any compiler/library combination on Alpha that improves
on the performance of Digital's Fortran.
>CPU cycles are getting cheaper whereas human development
time is not.
This is exactly the point. You can't just take the existing
Fortran code and convert it to C++. Besides, CPU cycles are
cheap now if you do game engines, but in the REAL WORD
(tm), if you design let's say an engine, it doesn't have to look
nice and feel godd, it has to WORK as good as possible and it
has to be designed as fast as possible as cheap as possible. If
you do your simulation in 2 hours instead of 6 hours, and you
do thousands of them in the design cycle, $400 for a compiler is
peanuts.
Heh. I just bought a Digital 600MHz Alpha 21164 PWS
secondhand (but in spotless condition) for around $US1600. It'll
kick a PII/400's ass for FP any day.
Fortran is still in use, but only because lots of people believe,
it is cheaper (time wise) to fix existing code than make a
paradigm shift.
This is nonsense. FORTRAN ist still in use, because it is the
fastest compiled HLL (often much faster than C) and it is much
easier to write fast numerical cores in FORTRAN than in
C/C++.
I spend days debugging code, since prototyping does not exist
and subroutine calling sequence did not match after some
changes.
I think its more like you spend days with debugging because
you didn't get your code right in the first place. Don't blame
FORTRAN for your sloppy programming.
I do not look back on the times, I was programming
FORTRAN. FORTRAN is not clean and nice. It is dirty, has
lots of memory problems, since FORTRAN does only know
pointers in calling sequences and therefore the subroutine
has no change to check consistency of the arguments.
Let me suggest the following practice: Write your numerical
cores in FORTRAN, and use C/C++ or whatever for data
structure handling and everything else. It really pays off,
especially if you consider the pricy high end hardware and the
fact that it is relatively easy to write FORTRAN code wich is
20% faster than its 1:1 C counterpart (20% is a difference in
number crunching).
Um, sure, except for the fact that it would be nearly impossible.
(Excuse me while I go into language bigot mode) Frankly, I think
FORTRAN is ugly and hard to work with. Maybe I just didn't
use it enough to grok it, but after a semester of writing
programs in it, my only though was: "This is annoying in the
extreme." However, people put up with FORTRAN's ugliness
because it has features that make compiler optimization really
fast, especially when you are doing mathematical operations on
vectors and matrices. (I wish someone would explain the aliasing
thing.)
An OS doesn't need these features, it needs direct memory
access and code that is easier to follow than FORTRAN. Writing
an SMP, threaded OS in FORTRAN would be about as easy as
writing it in BASIC. Parallelization of FORTRAN != Good SMP
OS Language.
Yes, it will work on a Multia, but you'll lose most of the benefits
of its code optimizations; a Multia is an EV4 Alpha (a 21066?),
whereas the compiler's optimizations (especially math
optimizations) are written to perform best on EV56 / EV6.
do you understand the problem of address aliasing
and how it affects what code optimizations can and
cannot be done by a compiler? People that use
FORTRAN do so for a reason.
It's remarkable what kind of thing a truly good Fortran compiler
can do. For example, a really good one can even detect subtly
illegal code due to overlapping arrays.
In November 1990, CONVEX Computer Corp.
announced its new applications compiler, giving
substantial credit to the compiler group at Rice
for ideas underlying the system. The Convex
applications compiler analyzes and transforms
whole programs to eliminate errors and
improve execution efficiency. The underlying
implementation technology, called
"interprocedural analysis and optimization," was
first implemented in a practical compilation
system in the ParaScope programming
environment by researchers at Rice.
A few commercial parallelizing compilers have
initial interprocedural analysis systems. Most
notably, the Convex Applications Compiler
performs flow-insensitive array analysis and
interprocedural constant propagation and
obtains some path-specific information through
inlining and procedure cloning Applied Parallel
Research has demonstrated good speedup
results on some of the programs presented
here; these programs were parallelized with
programmer directives that instruct the
compiler to ignore dependences and to privatize
certain variables. We know of no commercial
system that currently employs any
flow-sensitive array analysis, particularly
interprocedural array privatization.
The old time languages FORTAN, LISP, COBOL and BASIC
are still in widespread use.
The largest computer company in the world began
by selling BASIC for the Altair. Its best selling language and
InterNet strategy is a descendent of BASIC.
I've used this compliler extensively, and the output is as fast as
the TRU64 compiler. The EV4 doesn't have super-advanced
pipelining, etc like the later chips, but the compiler still turns
out some great binaries.
All the posting kiddies talking about FORTRAN77 as
if its an ancient language, and I think of it as
that new version, that I have'nt got around to
trying yet. I hope to get a chance to use this
new f95. Maybe next year.
P.S. I Original learned FORTRAN IV in 1974, when I
was 14. Had to use a keypunch and submit cards!
And some say change isn't good. Object oriented
FORTRAN -too cool.
Steve, Thanks for the information. I am a big fan of Compaq
Visual Fortran on Intel. I wish Compaq alot of success in selling
the Alpha hardware vis a vis Linux and Fortran.
I was merely wondering/speculating if Compaq had created a
version of their compiler for the Linux Intel platform and if they
were under some sort of weird obligation not to release it. A
post further down this list from Steve Lionel from Compaq
gives their reasons for releasing an Alpha version and not an
Intel. He confirmed there is nothing subliminal going on.
I use the Compaq Visual Fortran (for Windows) a fair amount at
work and I found it to be a solid product.
peter303 sayeth:
"largest computer company in the world began by selling BASIC
for the Altair."
Wow.. I always thought that IBM got started building manual
calculators for the Census Bureau..
You much be refering to the largest SOFTWARE company. And
low and behold.. that version of BASIC was umm.. borrowed
from UMICH. I guess they didn't have the GPL then.. huh? Or
did Lady Lovelace get that from rms?
Actually, while we're correcting people, IBM is also the largest
software company in the world, in terms of revenue.
You-know-who only leads in PC software.
The C compiler has been available for quite a while now. I think
they just tacked it on to the end of the press release as an
afterthought, rather than as a new announcement.
>its going to be funny in 10 years when there will be c++
and java news and the new lang and OS supporters will say
"So fucking What"
Your subject line won't win you much karma, but yeah, it's
amazing how many people seem to think that 'their' language is
the only one in general use.
I was offended a few weeks ago when some accountant got
laughed at for wanting Cobol for Linux. I never touch the stuff
myself, but it's out there and people rely on it.
IMO there's not much excuse for not broadening your horizons,
when there are so many compilers and other utilities out there
for free. Try an alternative language today.
--
It's October 6th. Where's W2K? Over the horizon again, eh?
While object oriented techniques make sense for real
software development, if you merely want to run a particular
algorithm on a lot of data points, any structured language will
do.
Well.. numerical simulations are getting larger all the time, and
structuring the code and enabling evolution and replacement of
components is becoming more and more important.
Although I've never used Fortran, one associate professor I've
talked to, claimed that Fortan was unsuitable because of this.
Believe me; there's more to numerical simulation (and
visualization) than to run a particular algorithm on a lot of
data points.
I took a course in numerical simulation and visualization last
semester, and we used C++ with Diffpack and VTK, and
although many students did not take advantage of C++ by
programming OO, I did it to keep my sanity.. and it paid off.
Big time.
I wonder if Compaq is afraid to release it for Intel. I use it on
the Intel platform and found it to be a solid product. I know
there was an agreement with MS some years ago (MS sold them
Powerstation). I cant help but wonder if Compaq is dancing
around MS on this one, or worse, they are contractually
obligated to create a Windows only compiler for Intel platforms.
Fortran itself has quite a limited number of serious users
Ummm...no. A huge number of serious scientific and
engineering simulations are coded in Fortran. It is a fairly
low-level language that has unmatched capabilities for
optimization and parallelization.
1. Compiler optimiztions are very much tied to the architecture,
so it's not surprising that the best compiler writers for a
high-end RISC platform are indeed employed by same
company. In this case, it's "a company like Compaq". The old
Digital would have been no different.
2. If a 10% increase in hardware speed costs $10,000, then
$400 for a compiler is nothing, even if the executable is only
10% faster than that of g77. And Lo and Behold, it runs on
Linux, not the costly, closed-source Tru64 UNIX!
kickass and thanks
I will take a look
I dont give a damn about karma I just hate people that dont
bother to learn anything from there history and follow the latest
fad.
Unfortunately it seems that most slashdot readers don't know
much about the new Fortran standard (Fortran 95) and keep on
saying that Fortran is an old language, etc. I will try to point out
some things:
1) Fortran 95 is structured.
2) Fortran 95 has abstract data types (called modules). But
certainly it is not OO (lacks inheritance). Oh, it has overloading
too.
3) Fortran 95 has cool matrixes that are, in a certain sense,
close to Matlab matrixes. For exemple the code
A(:,3) = 1 + 2*A(:,4)
changes the second column of the matrix A to 1 plus two times
the forth column. Of course this serves as a good hint to the
compiler that the implicit loop above can be done in parallel.
4) Fotran 95 was designed with efficiency in mind. A good
exemple is the distiction between allocatable arrays and regular
pointers, so that you can have dynamic allocation with a better
control of aliasing.
6) Fortran 95 is usually faster than C/C++. There is some effort
to change this (see Blitz++ library or the MTL, for information
http://www.oonumerics.org).
7) The main disadvantage of Fortran 95 for a scientific linux
user is the lack of free (as in freedom compilers). g77 only
implements FORTRAN 77 (plus some extensions), it is not a
Fortran 95 compiler.
Oh God. Here we go again. The mantra of the Fortran
programmer is efficiency. Cobol programmers make the same
claims. Ofcourse people stopped listening to both groups 10
years ago. The notion that C is inefficient has been so
thoroughly refuted in the past 10 years that it is not worth
debating. Together Fortran and Cobol programmers the lowest
rungs of computing, and rightly so. I still think that this story is
a yawn.
Note that the Dec^h^h^hCompaq compiler is a Fortran 95
compiler. I'd agree with pretty much everything you say about
F77...but that was 20+ years ago. I don't do much in f77 any
more either (except when I can't avoid it). Its too painful to deal
with the lack of decent data structures and several other things.
F95 compilers will compile old f77 code because f77 is basically
a subset of f95. And many people (obviously including yourself
until 3 years ago) still code in f77 for various reasons: comfort
with the language, maintenance of large codes already in f77
(although there are ways to mix the old and new stuff).
Sometimes its purely from prejudice. In a high visibility project
that I better not name, I've been required to use about anything
except for f90/f95 - for no coherent reason. Anything else is
ok. F77 is fine. F77 extensions are fine (as long as I don't point
them out as f90 features). Various autocoders are fine. As best
as I can tell, if I used the NAG f90 compiler to translate my f90
code into C, I could claim that it was a C auto-coder and all
would be fine...as long as I didn't reveal that the name of the
autocoder was f90.
And, for some relevance to slashdot, sometimes its because of
such things as free compiler availability.
But "real" f90/f95 is a very different language in many ways
from the f77 that you are obviously familliar with. Don't judge
f95 based on experience with its 20+ year old predecessor.
It seems to be a common theme - to critique Fortran based on
f77 not having lots of more modern features, but then to
discount the modern versions of Fortran as not being f77 and
therefore not counting. :-(
I use Fortran (a modern version) preferentially in most of my
coding. Why? Not because of speed, but because I find it far
more productive of my time compared to any alternative I've
tried. Yes, that includes C/C++. It also includes f77. Others
obviously have different priorities, and some others also have
different experience in what language they are most productive
in. These things do vary.
To summarize. I advise against making judgements about
modern Fortran if you haven't actually used it....or just because
its not the operating system that "everybody" uses....Um. I
mean language. How did "operating system" slip in there. There
couldn't possibly be any similarities in the issues, could there?
:-(
I hear a lot (mostly from C programmers) that FORTRAN is a
lousy language, but I never hear much beyond that statement to
back it up. I'm not even sure why people say it is an ugly
language. The function calls are natural (if you're not sure the
exact name of a function, you can pretty easily guess it), and
simply not having semi-colons all over the place even makes
the code asthetically more pleasing then other languages.
I've approached C from the perspective of being well-versed in
FORTRAN, and frankly nothing about C jumps out at me and
makes me say, "Gee, this is much better than FORTRAN." I see
the differences, but none of them strike me as one being far
superior to the other; it is all in what you're trying to do.
Anything I need to do with pointers in C I easily do with
common blocks in FORTRAN. I actually prefer how FORTRAN
handles variables by address instead of value, but that is
probably just a matter of taste.
I haven't used g77 because now I use Linux at home and Unix at
work and there isn't much code on *nix systems that isn't
written in C/C++ or one of the scripting languages. But to say
that FORTRAN is outdated or bad because not many public
applications are written in it is like saying that Unix/Linux/etc.
are bad operating systems because most people use Windows.
I have spent the better part of the '90s programming
FORTRAN on a DEC Alpha, and I can say that the compiler is
very nice and fast, and the help files are excellent. I just hope
Compaq maintains these standards.
Yes to all three. It uses GNU ld, works with gdb and existing
shared libraries, but apparently ladebug works better than gdb
for
the fortran compiler. The C compiler is fairly gcc-compatible
and compiles 70% of the RPM's in Red Hat's distribution
without
problem, according to the docs.
Yes to all three. It uses GNU ld, works with gdb and
existing shared libraries, but apparently ladebug works
better than gdb for the fortran compiler. The C
compiler is fairly gcc-compatible and compiles 70% of
the RPM's in Red Hat's distribution without problem,
according to the docs.
There is another major reason why Fortran is still good for
scientific calculation: it has vectors. simple as that. C has only
pointers. Write a matrix multiplication function and C will create
the worst code imaginable because it is so afraid of bad aliasing.
I tuned some Finite Element code. starting at about 50
MFLOPS, I got up to 350 MFLOPS (on a 500MHz 21164) by
tuning the C code. gcc went up to about 150 MFLOPS. With
Fortran you don't need that tuning.
And now tell me how many scientific applications don't need
some kind of vectors...
I am not particularly enthused by the licence on this one - it
matches the licence commonly found on "get $$$ of sofware
free with this magazine" copies of commercial software - It
explicitly forbids any commercial use, or any non-commercial
institutions (such as charities), and the licence is to an individual
and can be withdrawn at 30-day's notice for no reason other
than they would like you to buy a licence from them.
That said, it *could* be of use to students to test any Fortran
code they were developing at home - assuming they had a
handy Dec Alpha box at home of course, as this is for ALPHA
linux, not Intel.....
--
She's genuinely bogus.
All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by the
Poster. The Rest ?1997-2003 OSDN.