Fortress: The Successor to Fortran?
An anonymous reader writes "A draft specification of the Fortress language was recently released. Developed by Sun Microsystems as part of a DARPA-funded supercomputing initiative, Fortress is intended to be a successor to Fortran. Guy Steele, a co-author of Java and member of the Fortress development team, hopes that Fortress will to 'do for Fortran what Java did for C.' Steele admits that Java isn't probably the best choice for numerical computing, and that 'it's a mistake to try to make a programming language that is all things to all people... because the needs are so diverse.' Fortress has a number of interesting features, including support for Unicode characters in code, enabling code to look more like formal mathematical expressions. More information about Fortress is given in interview with Steele, and in a talk by Steele. There's also some interesting commentary on Fortress, including some commentary by a member of the Fortress development team, in response to two stories at the programming languages weblog Lambda the Ultimate."
Dear God No! Please say it ain't so. Worst language ever. Period
From the article: "Guy Steele leads a small team of researchers in Burlington, Massachusetts, who are taking on an enormous challenge -- create a programming language better than Java." I tried to think of a witty aside, but I realized I didn't have to.
#include ".signature"
Also at least one whitespace rule that will make Python's syntax look uncontroversial. ;-)
<Obligatory> Don't you just hate getting a story rejected and then seeing it posted from an AC several days later? :-( </Obligatory>
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I don't think I want to learn this language...
"Fortress will do for Fortran what Java did for C" Please no! The cruel b******s!
I thought Mathematica was the successor to Fortran. Why don't they just improve the Mathematica calc engine for parallel/distributed supercomputing?
--
make install -not war
Alright everybody. Man your Fortress!
Why does Fortran have any advantage in terms of calculation capabilities over C++ or Pascal, or any other such language? They all are compiled. They all have math libraries. Why do pipe stress freaks and crystalography weenies prefer Fortran?
"I'm not impatient. I just hate waiting." - My Dad
Hardly. In fact, as I read the introductory sections of the spec, I found a lot of it was exactly the ideas I would have designed into a language myself, as someone who writes mathematical code for a living.
I took a bit of a sideswipe at the whitespace rules in a post below, but aside from those (which I think will die long before the final language is released, "natural" notation or not) a lot of the features look good. Things like first order functions and multiple dispatch suggest much stronger handling of functions than any mainstream language today, which is always good for a language that's going to talk about maths seriously. The consideration given to issues of parallel processing is also well beyond anything else in common usage at present, and that's surely one of the key directions serious programming languages are going to go in over the next decade as hardware becomes more and more about multi-processing rather than just Bigger And Faster(TM).
I must admit, though, that I did start to get bogged down towards the end of the section on the basics, and found it difficult to get stuck into the more advanced stuff at all, even with my CS language theory hat on.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
From skimming the language spec I saw a couple cool features. One is support for multiple return values, which I love. I also liked the fobid clause, which throws an unchecked exception on certain conditions. Forbid, along with several other run-time checks in the language spec. will give fortress developers an easier time debugging code. The downside to this language however is that it tries to imitate java. Constantly the language spec compares fortress to java. I don't think Java is a bad language, however we only need one language. It would have been better if Fortress had tried to be different than Java, and explore problem domains that Java is weak in solving.
Philosophy.
Fortran's longevity has come because it compiles fast programs & there have already been a ton of subroutine libraries to draw from, that have been built up over time by many coders. It is also an open standard with MANY compilers for most platforms. Will Sun work on all of this? They didn't think it was important enough to do with Java.
I think it will be hard for a single company to generate a successor & sincerely hope Sun will realize that for languages with no VM, early success will depend on openness. I also think a lot of what peopl want to do is already being done with python + modules compiled from C or Fortran.
Fortress has a number of interesting features, including support for Unicode characters in code, enabling code to look more like formal mathematical expressions. First thing I think of...APL. Wonder if we'll buy new keyboard with this as well.
"If you were plowing a field, which would you rather use? Two strong oxen or 1024 chickens?" --Seymour Cray
yet another programming language
but does it make apps any better ? will it lead to revolutionary increases in productivity ? will it lead to better more stable applications ?
keep polishing those wheels
Well, it seems to me that 90% of scientific computation today is done with Matlab and similar languages/environments (well, mostly Matlab).
Based upon my experiences, within universities, ONLY in CS departments Matlab is NOT (yet ?) the de facto standard (but it is still tought and used anyways, along with java and some C++).
We learn from history that we learn nothing from history - Tom Veneziano
I suspect it's mostly because FORTRAN has a lot of things built right into the language, rather than added in libraries and such. That means code can be reasonably tidy, but still leave a lot of scope for optimisation. This is particularly true when compared with the state of the art in optimising for difficult languages like C, where even today relatively simple optimisations can be difficult because of aliasing issues and the like.
It's also worth noting that when most of a serious community use the same tool(s), a lot of new work will be done using those tools simply because of familiarity, community and support issues.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
trying to re invent a wheel is a big error, fortran is easy to learn, very compact and fast as a bat flying out of hell, why trying to make it "better"?, and coming from a "java" guy is really atrocious, what?, will they try to make a fortran with a VM with a footporint bigger and clumsier than java's, make java better and I would accept they making fortran better, at the end this is a way to waste money and keep bums employed, troll this if you like but you know what I'm saying is the truth.
Fortress development team, hopes that Fortress will to 'do for Fortran what Java did for C.' Steele admits that Java isn't probably the best choice for numerical computing
So they finally admit that what Java did was break the IEEE floating-point specification, that was correct in C, as Professor William Kahan, of Berkeley (see How JAVA's Floating-Point Hurts Everyone Everywhere), had been shouting to deaf ears all this time?
Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
One would assume that the successor to Fortran would be called either Nextran or Fivetran.
In my earlier post I may have come off as a troll, but really, this is just absurd. Sun cranks out tons "alternative" methods of getting things done in hope that one of them will catch on. Java caught on, so, they have decided to just keep trying to do things the way they came up with Java: "Better" another product and make the required amount of changes to avoid any patent or property disputes. To me, Java was unbearable. Reading Java code is like attempting to find a needle in a haystack and then to volentairly stab yourself in the eye with it....repeadedly. Java is the messiest language that has ever become mainstream. Java is essentially C without any order. It gave C somewhat of a bad rap because of the relation of the two languages. I really dont want to see this happen with Fortran, as it is a pleasure to write. Sun will once again destroy a once monolithic language.
Times change. Fortresses fall. The fortress of FORTRAN must fall too. Let us weep for it.
There are several reasons, but here are the biggest ones:
* Especially early on, Fortran's non-stack-based structure gave it a lot of opportunities for optimization. When you don't have recursion you can do a lot of "lifting" of subroutines, which makes function calls really fast, and loop unrolling. You can reduce the overhead to literally nothing. That's harder in a stack-based environment, especially when there's the possibility of recursion.
* Some variants of Fortran (including Fortress) have matrices as first-order objects, which gives you a lot of opportunities for optimizations. Especially compared to C++, which thinks of nearly everything as a pointer and is therefore damn hard to optimize, and Java, whose garbage-collecting, ultra-safe environment means you have to do a lot of optimization just to get back in the vicinity of C++ performance.
* And over the years they've taken up a lot of those opportunities. Especially for matrices, which are the meat and drink of pipe stress freaks and crystallography weenies.
* They've been doing it that way forever. If your boss/professor writes in Fortran, and you've been asked to extend the library, it's hard to do that in, say, Haskell.
* A lot of pipe-stress and crystallography algorithms are already written, optimized, and debugged in Fortran. There's a lot to be said for getting it done fast.
Those optimizations are really important; they're talking about algorithms that will run a gazillion loops, so microscopic improvements mean the difference between getting it done today and not getting it done at all.
I suspect the biggest reasons have to do with the "that's the way we've always done it" factor than anything else. As you say, once it's compiled and optimized performance on something like this ought to be pretty much the same no matter what language you write in. If you really want something devoted to math, Mathematica should be at least as good.
APL was far more powerful for array handling than FORTRAN. APL is like Matlab, only with a much more powerful syntax for handling n-dimensional arrays of numbers. Want to add 5 to every element of array, X? Then just say 5+X. No DO loops, no indexing through all the elements, just one simple statement. It doesn't even matter is X is a vector, 2-D array, 3-D array, or whatever. Need an 3-D finite difference gas diffusion simulation for N different gases? Just create a 4-D array and a program of under half-dozen lines handles the core diffusion estimation process (with no awful nested loops). Because APL is inherently array-oriented, most statements can be vectorized automatically very easily.
I'm not saying that APL does not have its faults (the original version was weak on control structures and data structures other than arrays), but it's core syntax and native handling of multi-dimensional arrays make it idea for scientific computing.
Two wrongs don't make a right, but three lefts do.
"...programming language notation is different from the working notations of mathematicians and physicists and chemists. Why can't we bring them close together? That's one of the conjectures we have in Fortress. What if we tried really hard to make the mathematical parts of a program look like mathematics?" he adds.
This is simply not a problem most mathematicians, phyicists or chemists have. I've never said, "Damnit, why doesn't the FORTRAN code for this thing look more like mathematics!?" Neither has anyone I know.
The best high-level mathematical language in the world--Mathematica--has input that looks very little like mathematics. Integral[Exp[x],{x,0,1}] expresses the mathematics very elegantly in a pure ASCII, standard, portable, form. But it looks nothing like what you'd write on a piece of paper, if that's what "looking like mathematics" means.
Furthermore, there has been a language that looks a great deal like (parts of) mathematics: APL. No one uses it, and part of the reason is that the statements are far too compact--i.e. "mathematics like"--to be readable.
And finally, what does "mathematics" look like? Different fields use radically different notations and conventions. This is particularly true when you start looking across math, engineering and physics. Even different branches of physics are apt to use different notations for the same thing, and worse yet the notation changes over time--go look at any pre-war book on quantum mechanics and you'll see all these "Sp" things where today you'll see "Tr". And things like vectors are typically typeset in bold, but have over-scored arrows when you write them by hand. Which of these "looks like mathematics"?
Locking any of this down in a programming language is just not useful.
--Tom
Blasphemy is a human right. Blasphemophobia kills.
I am seeing the first page of the draft and already I see talk about objects... Man.... Do they understand that *WE* do use fortran because of the mathematical bibliothek, the extremly well optimised high performance generated code even massive parallel calculation code ? If this things doesn't have the same performance as fortran *AND* is backward compatible with existing fortran programs it is dead in the water. Why do they think that most scientific out there I know of are still using fortran for ? Do they really think we need abstract stuff with object ? If we did we would use a c++ code+compiler, not fortran
Indeed a search of the spec says "no attempt at backward compatibility/this is a new language with little relation to fortran".
Nothing to see here. Somebody with new idea he thinks are nifty , and forgot from sight why fortran is still used now.
C. Sagan : A demon haunted world:
http://www.amazon.com/gp/product/0345409469/
visit randi.org
No, I'm afraid it's worse than that.
They use a series of identifiers separated by spaces to represent either function calls or multiplication, depending on context. The dependence is relatively subtle, too: uses of () for function calls seem to depend on how many parameters the function takes, for example...
Unlike the April Fool proposal for C++, this is actually, serious BTW.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
Doing enough bad things to it that I still use C in preference?
So many people will go on coding Fortran.
In my earlier post I may have come off as a troll
Mod this guy's previous post -1, troll. Thanks.
I'm very curious about this. But I can't look at PDFs where I am now.
Is this language compatible with Java? Can it / is it designed to live on a Java virtual machine, or interact with Java?
What with Sun's general unhelpfulness with getting languages alternate to Java running in/on the Java runtime, I find it potentially very interesting to see them at least in some small way admitting you might need more than one programming language, especially if they eventually wind up admitting java programmers might need to occationally use other languages.
Irritable, left-wing and possibly humorous bumper stickers and t-shirts
First of all, shouldn't it be "what Java did for C++", and second of all the answer to the question in the subject is:
"Fuck it up."
Having loops be parallel by default, on the other hand, is going to explode a lot of heads. Can you imagine what it will be like to write a loop which doesn't depend on the effects of any previous iteration?
Granted, this has existed in various supercomputing languages and VLIW/vector processing assembly since the 80s, but trying to push this out to the masses is pretty revolutionary. A lot of people are going to see it as a serious drawback, and either shy away from Fortress or ask for sequential loops explicitly everywhere, unless they can be taught how to parallelize, which is often a very difficult task for all but the simplest loop side-effects. Sometime's it's just hard, and sometimes it's NP-hard, depending on the details of the algorithm considered for parallelization.
Frankly, given that functional style is much less of a stretch from ordinary procedural programming, and given how slowly ML variants and things like Haskell have been catching on, I guess Fortess is destined for permanent niche status, and not even math typography will save it from consignment to the high-preist class of supercomuter programmers. In fact, that may be a disadvantage, because the scientists writing the formulae aren't the engineers translating those formulae for parallel processing, in most cases.
Besides, as the "Real Programmers" phrase goes: "Real Programmers can program FORTRAN in any language."
(I've always liked that; I prefer FORTRAN to other high level languages. But then, I am a dinosaur....)
No, it will be EVEN BETTER than Java ;)
Yes, I'm not impressed either, although Guy Steele is a really capable guy. Let's wait and see what will come out of this.
that Guy Steele has no beard. According to a previous article (can't seem to be able to find it) on Slashdot, this means that this programming language will never become mainstream. When will new language designers realize that they need a beard to break through?
I like my dinosaurs feathery, and my pterosaurs hairy (or is it pycnofibery?)
This programming language's name is obviously derived from my Slashdot nick. My SWAT team of highly-paid lawyers is examining a satellite photo of Sun's corporate headquarters, planning their legal assault.
MATLAB started as a Fortran library it seems. As handy as it is, MATLAB has some dire limitations: its performance and syntax. While certain vectorized operations can be speedy, many folks I know end up recoding in C because MATLAB just crawls for everything else. On top of this the language itself is just plain ugly. It's reminicent of BASIC with random bits of bash scripting and other oddities thrown in to make a patois that is decidedly disgusting.
I myself have switched over to using R for statistical computing mainly because it's nicer to look at than matlab and has some really great statistical facilities built right in. For more analytical stuff, Mathematica or its open source cousin Maxima are definitely a better choice.
What excites me about Fortress is that it's both cleaner looking than MATLAB and has some neat features like traits. I'll be curious to see how it pans out.
Offtopic:
Simply put many people's violent reactions are produced by their own insecurities. While I don't pretend to fully understand much of the world around me, I would say it is fairly certain that through time I have learned a humble amount and that as time progresses and I expirence more I'll become more aware. Your atack on my sexual activity and merits simply a product of your own fear. I truly hope that some day you will be confortable enough with yourself to be able to enter a dicussion with purpose instead of lashing out and attacking those are you.
Ontopic:
Because I'd be wasting a post if I merely responded to you, allow me to address here a comment made above yours. Yes, I'm sure my view on java would be much different if I had been writing code for year. I am in essence, not trying to bash java. I'm simply questioning if it's the best thing out there. I feel that java is incredibly usefull in cross platform and internet oriented programs. I use it in that regard (though I do use python heavily when I find I might need a program to run somewhere else). Still I'm sometimes annoyed by the length of java code. If I know I'm writing a program for myself or for a freind where I can assure that it will be run under windows I find it easier to use VB. Sometimes I like the power of C++. I think java pushed the envelop and now we're going to see growth in other languages to compensate. I wasn't trying to say that java wasn't a good language, only that it's not the only good choice out there.
According to Sun, all code should be written in Java. Why do they need another language?
They are using PacMan logic. Remember the successor to PacMan was Ms PacMan? Thus, the successor to Fortran is Fortress.
You mean they are going to castrate Fortran such that idiots can use it, and only idiots will want to use it? We don't need Java, we need people to f$cking learn to program. You get payed decent money for programming don't you have the responsibility to actually learn your profession, rather than depending on castrated tools to prevent you from getting into trouble?
Matlab is not the fastest way to solve a problem. However it runs reasonably fast. The thing it has going for it for scientific work is that it is easy to understand. It's almost a high enough level language that the equations are the algorithm. The professors at my university are involved in a variety of subjects from control theory to atmospheric research, and they all use matlab and IDL. very rarely resorting to fortran or C. Those are very good languages, but it's difficult to describe complex functions and still have legible code. More importantly, programming in matlab or IDL is much quicker than fortran and C, most likely because of their more mathematically oriented structure and abundance of scientific libraries. If it has to be high performance, they'll use a lower level language, but you can bet they tested the algorithm on a smaller scale with matlab.
.net, but that doesn't mean it's not used.
Serious scientists use whatever the best tool for the job is. Whether it's Matlab, Fortan, C, IDL, or even perl. (One of the better known magnetohydrodynamic models is programmed in Fortran with some perl glue thrown in if i remember) I haven't met anyone that uses java or
The only downside is that many of the people using Matlab and similar are not primarily programmers so the code can get sloppy.
Can you be Even More Awesome?!
So does the proposal have cute little cartoons to illustrate its points?
</wishing for the return of Crunchly>
When you look at the state of the world, how can you not become a radical, liberal anarchist?
So the new language will be coded (at least partly) in the much faster, and less top heavy Fortran?
Or is it that: when using the new language, at runtime one will be reminded of how fast and close to the machine the old language is?
wbs.
Huh?
Unicode operators aren't just for math heads. If there were more characters on the keyboard one could imagine a more reasonable solution to the = vs == problem.
The Perl 6 "spec" calls for at least one unicode operator, as a way of wading into those waters for more general purpose use.
"Why do pipe stress freaks and crystalography weenies prefer Fortran?"
One simple answer is We're not writing a F'ing application!!
A great deal of scientific programming done by scientists and engineerse is NOT to develop an application with a nice gui and users manual - it to solve a complex problem ONCE for him/herself ONLY and get data/results that can be processed by other std application. Rude, crude, and vulgar - tha't is just fine! I write BASIC, Fortran (for 30 years) and C#, assembler, (all of the above) etc, and find that when I want to solve a problem, the last thing I want to pgm in is Cxx. I have watched sw programming change over the years from an emphasis on problem-solving to applications, applications, applications. Not everyone wants, needs, or has time to write an "application" package, Just give me my answer.
Cloned foods give the statement "We had that last week!" a whole new meaning.
I wouldn't be surprised if Steele was the co-author of a reference book about Java because he's written one for almost every other computer language. But I hadn't heard that he had anything to do with the creation of the language itself.
Every new language gets criticised too early.
When Java was first released it also received a lot of negative comments! They said it was slow and consumed too much memory!
Look at Java today! ;)
Interesting read thanks for the link
CrazyEngineer
Anyhow here's a few of the cool things. First all variable transactions will be atomic so that you can write parallel code with no locking or syncroization.
Parallelism is in it from the start. The assumption will be thousands of threads running on multiple processors. All loops will be done in parallel--you actaully will have to request serial loop order execution if you want it.
data types can be contain distributed data. this fits the multi-processor design.
It's more than unicode they are talking about. The IDE will support full 2-dimensional mathematical notation. That is it will look like TeX mathematics. If you write a Summation from 1 to N then it will display a summation symbol with I = 1 on the bottom and N on the top. Likewise division will have a numerator with a line under it and a denominnator below it. Ifwrite a matrix traspose the thre will be a matrix symbol with a superscripted T. Also there will not be any Asterix to denot multiplications. Mathematicians dont use these. If two variables are adjacent it means multiply.
Now the cool thing is all those will be due to the IDE not the language. if you open it in emacs it will stillbe editable in ascii.
The point of the excersize is that the code should look like the pseudo-code you find in a mathematics journals. The examples they give comapare a math journal spec to the real code and to code from a non-mathematcal language like C++. There is huge difference in readability. Any mathematician coud debug it without knowing the language.
Optimization will emphasize allowing one to work with objects without losing the speed of primitives.
The language syntax will be extensible not frozen by the complier.
Some drink at the fountain of knowledge. Others just gargle.
Virtually all computational fluid dynamics is still done with Fortran. CFD guys like to say, "sure, you could do it in C++. but you'd be reinventing the wheel, so why?"
(*sigh* Most of the times when I see people bashing Fortran, they mean F77 and older versions, while F90 and later are nice and powerful to work with.)
Thanks for the info. Yes, I learned F77 in 1982 and hated it because I'd already been using APL for a few years. It sounds like I need to check out F90.
Two wrongs don't make a right, but three lefts do.
All variables are static is FORTRAN 77 (basically the standard that has been written to).
That means you need to know the bounds of your arrays at compile time. Leading to recompiles for larger datasets etc. Messy.
The upside is the internal pointer arithmatic is simpler for each array access. At the bottom of a tight loop that does'nt do much it can make a big difference in performance.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
I think not.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
The resulting abortion was called dataflex.
But it did have a fast B-tree implementation. Too bad the language sucked to heaven.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
Java that's the basic C++ gobbeldeegook and improves it to the point of usability.
Java in no way improves on C.
C remains the best low-level language. The only thing better is assembly.
To those people who detest using Fortran, check out http://www.scipy.org/ .All these libraries are based on the same dependant Fortran code.
For signal,image processing and more, in a nice python syntax. Nice readable code, no learning curve!
From the website:
SciPy is an open source library of scientific tools for Python. SciPy supplements the popular Numeric module, gathering a variety of high level science and engineering modules together as a single package.
SciPy includes modules for graphics and plotting, optimization, integration, special functions, signal and image processing, genetic algorithms, ODE solvers, and others.
SciPy is developed concurrently on both Linux and Windows. It has also been compiled successfully on Sun and Mac, and should port to most other platforms where Python is available.
Java is not a language of clever tricks and obscure code, like C++ can be.
Java does have some extremely clever tricks, and I'm surprised that more beople don't use them.
The primary one I have used is reflection. You can use it to navigate class strcuctures in clever ways, search for methods by pattern matching etc.For instance, I have used this as a report generator to generate reports based upon C/C++ structures exposed to Java.
Another one is NIO byte buffers I have used this to import C++ structures into Java effieciently, without any communication with C++ code.
I hope this new language has provided some equally clever tricks for the scientific community to do their computing
The forall construct and where construct in Fortran95 is exactly the default parallelization of loops that you mention.
I don't know what Fortress proposes, but I doubt it will 'explode a lot of heads' like you say.
Fortran2k will extend automatic parallelization by the compiler even further. I look forward to the release of the spec.
Favorite
Sun is not to be trusted when it comes to programming languages as far as I'm concerned. They had promised to have Java standardized by a standards body and instead withdrew and are keeping tight control of the language. They will likely do the same thing again, all in the name of "ensuring compatibility", of course.
please leave FORTRAN alone. It's quite healthy in its latest
versions, it does what it should very well and the external
codebase is well vetted. Nobody is holding a gun to your
head and saying you have to go code in it.
And you have to love that 'what java has done for c' comment.
Blitz++'s templates are so convoluted that they cause the compiler to spit out impossible-to-read error messages when something goes wrong during the template instantiation, due to a type mismatch or such. Compare this to Fortran, which gives you a nice one-line error messsage, and it should be obvious why Fortran is still the language of choice for scientific computing.
We tried. Despite our best efforts, our conclusion is that Blitz++ may be fast, but ultimately constitutes an academic exercise that demonstrates the expressive power of templates, which has nothing to do with being usable. We ended up using MTL instead, and eventually replaced that with a mixture of Lapack and our own in-house vector and matrix classes. These perhaps do not reach the speed of Blitz++, but are easier to use, and most important, a hundred times easier to debug.
Primary author of Common Lisp the Language, the community-generated pre-spec for Common Lisp
The other half of Steele and Sussman, co-inventors of Scheme
Co-author of The C Programming Language by Harbison and Steele, which codified many of the techniques that made portable C code possible
As co-author of The Java Programming Language Specification, he reportedly brokered many design compromises between Bill Joy and James Gosling
Given his track record, I wouldn't bet against him if he says he's going to create a worthy successor to Fortran.
To a Lisp hacker, XML is S-expressions in drag.
Been teaching some supercomputer things to kids at a local college. All they know are C++ and Java. Its pathetic. But thats besides the point.
Fortran, contrary to these folks understanding, is not broken. It is not in need of fixing. Some other language is (cough cough) horribly broken (specifically in numerical areas, raw performance, readability, etc)
Fortran is pass by reference, makes lots of things very easy. Fortress is java like, as pass by value. Looking over the spec, it is fairly obvious to me that the folks who designed it are not Fortran users, programmers.
They should go back to the over-caffinated land they came from.
If people wanted FORTRAN replaced, it would have been done so. Certainly, it has been tried.
http://titanium.cs.berkeley.edu/
Real programmers abuse the EQUIVALENCE statement.
Real programmers don't need structured code.
Real programmers write self-modifying code.
Real programmers use FORTRAN!
The successor to Fortran, is Fortran.
Specifically, it's F77 -> F90 -> F95 -> F2K. There have been enough attempts to replace Fortran, and the only result so far is that it's kept computer scientists entertained. All of these ideas are driven by one common thread; formally trained computer scientists can't stand Fortran 77's control structures, non-dynamic memory, etc, and demand that it must be replaced for religious reasons. F90/F95 have already fixed those problems, but it's still called Fortran, and so it simply *MUST* be replaced.
Let's see, we had PL/I (a merger of Fortran, COBOL, and Algol), RATFOR, Ada, Matlab, C++, and the late, and rather lamented, Sather. None of them has the performance of Fortran, the ease of programming, the extensive and validated libraries, complex numbers as a fundamental data type, or the solidity of compilers.
It's the cockroach of computer languages; you can keep spraying, and it will keep sneakout out at night.
the more accurate the calculations became, the more the concepts tended to vanish into thin air. R. S. Mulliken
Sun's not the only one working on a language to better support HPC (i.e. massively parallel) programming. IBM's working on a language called X10, and Cray is working on one called Chapel. All three companies are being funded by the DARPA High Productivity Computing Systems project.
Will any of these replace the dreaded MPI+(C/Fortran)? Only time will tell...
However, the lame-ass GUI is written in java. You can get rid of it by running MATLAB with the -nojava command line option.
Besides most of the heavy lifting is done by LAPACK libraries that are bundled with it (those are written in a mix of C, Fortran and assembly... incidentally you can swap them out with a custom built one; that was popular for a quick speedup when opterons were out but they didn't support it directly)
Sadly, MATLAB is just slow PERIOD on SPARCs. It can't be helped.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
Please...
Java did NOTHING for C. They are languages with completely different uses.
C is a low level language, where you can do anything you want. Java is a "managed" language, with automatic memory management, where lots of operations are just prohibited and there is NO way around.
It could have been "what C++ did for C", but since Sun wrote Java and not C++...
"[Some dude] hopes that Fortress will to 'do for Fortran what Java did for C.'"
.ne. readable), but I think the way to go is to build on C++ rather than reworking Fortran.
Slow it down? Make it suck? Turn programs into bloatware? Add liscencing fees? Good luck with all that. I think I'll stick to C++.
Seriously, I don't see anything that Fortran can do that C++ can't do just as well. I see plenty of problems with Fortran (fortran
I see a trend lately, where new languages pop up that claim to "fix" other languages like C++, but they seem to be just attempts at making a profit off the software development industry. And then there are high level languages, *cough* *Eiffel*, whose documentation says things along the lines of "but if you want to do any serious number crunching, write it in C." I've tried to find a general programming language that will allow me to be more productive than C++, but I haven't found one yet.
The guy doesn't get it. Fortran is Good Enough (tm) for what most scientists need. And it has ridiculous amounts of well tested, peer-reviewed code already written for it. Unicode? Who the fuck gives a shit about Unicode, when the only thing you need is highly optimized computations?
Assembly is the *only* low-level language! anything that has to be compiled is enefficient!
COBOL has fixed-length strings which are extremely quick and incidentally perfect for Internet processing.
Despite the parent poster's claims, I have seen/heard of little COBOL for scientific apps - FORTRAN dominates there and will continue to do so. Nobody's going to port nuclear fission codes to Fortress from FORTRAN!-))
You're right... instead of
"first mainstream language"
grandparent SHOULD have written
"first relevant language"
05 COMMENT PICTURE X(63) VALUE IS "Com'n Sun- next give us a worthy successer to COBOL and RPG!" COMPUTATIONAL-3.
.
- aqk
F U
(1) You give up speed for a marginal increase in features. (1b) If speed is not a factor, languages such as OCaml have many more features suitable for high-level programming. OCaml is also slightly faster than Java in general. Thus Java is both more primitive and slower than a language that came out in a similar time frame.
.NET platform proprietary, and anything coming out of Microsoft is cause for concern, but this may still work out.
Yes, OCAML is a much nicer language. As a middle ground, C# does offer lexical closures and parameterized types. OCAML, unfortunately, really dropped the ball on the compilation of parameterized types (which is as broken as it is in Java).
(2) You give up source portability for binary portability. Almost every platform has an ansi-C compiler, yet only a handful support Java, especially if you use a recent library. There are more platforms that support OpenGL than Java3D, for example.
I'm not sure that really matters; no new compiler is going to run everywhere instantly.
(3) A company controls your language. The future of Java is at the whim of a single for-profit entity. Furthermore, this entity has displayed that it wants to control the Java language and the Java platform to the greatest extent possible.
Yes, this is a huge problem. So far, it looks like the C# language and standard library are going to be open; they are also ISO/ECMA standards. It's unfortunate that Microsoft is making noises about keeping the
(4) It's one of the most difficult languages to interface with C, and it pushes 100% of the glue required to the native language. It is easier to interface Lisp and Haskell with C than Java to C through JNI. Given the large difference between the former pairs, and the small differences between the latter pair, this is pretty ironic,
Again, fully agreed. C#'s native interface is much simpler, much more efficient, and actually gives you built-in language constructs for accessing native data structures (points, layout, etc.).
And when you get down to numerical computation, including parallel computers, the optimization is done at a very low level, where the language syntax is irrelevant.
I can't let you get away with that. Fortran was designed to have a language syntax and structure that makes compiler optimisation easy. 'WHERE' loops can be parallelised, pointer aliasing is tightly controlled (unlike C/C++), etc. It does make a difference.
So he's going to create a distantly related, conceptually very different language and give it a familiar-looking syntax so Fortran programmers are willing to try it?
I'm sorry, folks, Java was make to look like C so it wouldn't be rejected out of hand by the hordes of troglodyte programmers who judge a language by its syntax. There are a few other similarities, but Java is more different from C than Python is from Perl.
The Java designers (i.e., marketers) did a great job; plenty of people were fooled. "Curly braces, semicolons, int... I guess I can learn this language."
If you don't agree that they're very, very different languages, think about the common mistakes people make in C versus the common mistakes people make in Java.
"...a new language with litle relation to Fortran other than it's intended domain of application."
YES, homage is certainly made to the 'intended domain'
per section 3.2.5
"The Frotress programmer should be aware that slack is a desireable property..."
SLACK!
Bob Dobbs bless Fortress!
Seriously, most of my programming has been Fortran for scientific applications and this looks to be pretty damn nice. Wonder if I'll have to pay for it?
No, it's not. The theoretically impossible has not magically become possible because of a few more years of hype.
In almost all cases, yes. As I said before, a lot of Java's overheads now tend towards the efficiency of something like C as a limit. But the overheads must still be there somewhere; you don't get extra processing for free, ever.
Sure, and that's the case I mentioned where it is theoretically possible for Java to outperform C in a real scenario. The problem is how many factors have to go in Java's favour before this actually happens in reality.
Consider the impact of instrumenting code for profiling. On most platforms, you don't get hardware support, and the run-time for an instrumented build can easily increase by a factor of 5-10x or more. Compared to profiling with HP's Caliper tool on an Itanium box, where this is hardware support and run-time overhead is a few percent, it's a different world.
Now, Java's Hotspot technology is basically profiling at run-time. Please read the above, and consider the overheads involved in gathering the information necessary to do the dynamic optimisation. Then consider the benefits gained by having better optimised code over just moderately optimised code. You would need a pretty favourable set of circumstances to gain much real advantage from using Hotspot, and you're risking making performance worse because of the monitoring overheads in all other cases.
The bottom line is that Hotspot is an interesting techology that has genuine applications, but it hasn't suddenly rewritten decades of computer science, the laws of physics, and the common sense of the programming community. As has been said so many times and in so many contexts, there are no silver bullets in programming.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
And, as to why anyone would switch, well of course the answer is that fortress may be, for some things, more expressive or faster. It's a few years out, but I suspect folks in my research community (fluid-flow simulation of ocean and atmosphere) might take a long and hard look at this. The big projects (e.g. weather modelling at national labs) might benefit from the maintainability aspects.
But the big win will be small projects, e.g. individual work of graduate students. As a prof who sometimes has to work with grad students on their code, I look forward to a more conventional mathematical notation and to a less error-prone language than we have today. Other nuances also appeal, related to scoping, inheritance and so on. I also like the idea of a unit library (which I assume will incur no runtime cost) to catch silly mistakes of adding apples and oranges.
I suspect that the technologies being considered will lead to faster code, partly because it can discover good things at run time as well as compile time. Providing good (read "natural") language support for parallelism will be a welcome feature; in my community we use MPI and that adds a whole ugly layer that is of no interest to the scientist at the head of the team, so a sort of curtain develops between the coder, who worries about such things, and the scientist who prefers to think in more abstract terms. (Here again, the ability to code in a mathematical way will be very welcome, indeed.)
We all have a long time to think about this proposed new language. There are commercial as well as technical concerns. As a sun investor, I may as well just say it: my guess is that Sun may vanish before this project is completed in 5 to 10 years. l sure hope the developers can keep up this work. (Licensing, a favourite /. topic, is not irrelevant here.)
I encourage folks to read the docs and listen to the talk. The Java:C issue is a red herring.
After having slept on it, I am much more interested in seeing how this aspect pans out.
I agree that Fortran 2K will be much more interesting, given the much easier backward-compatibility and thus huge number of proven and useful libraries available from the starting gate.
I guess a lot of people are missing the obvious: this probably falls within Sun's plans to position themselves selling servers for huge parallel-computing applications. This is the trend we're seing in the industry. A lot of applications *need* this, like Bioinformatics, Cryptography (i.e. "national security"), and High Energy Physics.
Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
The University of Waterloo (Canada) made a Fortran translator, which they called WatFor. When they enhanced it, they called the enhancement WatFive. The early versions (Fortran I, II, and IV) were succeeded by Fortran 66, 77, 90, 95, and 2003. I am not aware of any further ANSI Standard for Fortran. I have programmed in Fortran II and IV. I am not that familiar with the latter ones and (before today) had not even heard of 90, 95, & 2003. (sigh)
parl