Sun Releases Fortran Replacement as OSS
sproketboy writes "Sun Microsystems has released an alpha version of a new programming language called Fortress to eventually replace Fortran for high performance scientific computing tasks. Fortress was designed specifically for multi-core processors and is published under the BSD license."
In a hundred years, programmers will be using a language that's completely unrecognizable to modern users -- and it will be called "Fortran".
Much as I like Java, I'm not exactly sure how much a fortran-esqe language is going to "benefit from the lesson's learned with Java". It's apples to oranges, because of fortran's narrow focus, and equally narrow deployment base. Java's primary schtick is in the exact opposite direction, with wide focus, and deployment on a large number of systems.
I suppose increased multi-processor support would be nice. It'll all depend on performance.
ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
This one looks like a winner.
Help stamp out iliturcy.
program Hello_world
### The following is the canonical 'Hello World' program implemented in fortress ###
load fortran77
print *,"Hello World"
fortress.obfuscate
end program Hello_world
http://research.sun.com/projects/plrg/PLDITutorial Slides9Jun2006.pdf
Fortress uses a lot of unicode mathematical operators, which slashdot will quite pitifully fail to display.
Done with slashdot, done with nerds, getting a life.
All they do release under an OSS license is an *interpreter* of the language. This is completely worthless for high-end number crunching. Wake me up when they open source a good optimising *compiler*.
Bah... Slashvertisement...
FTFA:
``Mathematical notation: We would like to reduce the time it takes for a domain expert to turn a mathematical specification into a working high-performance program. We are examining language changes which would enable computations to be written in a more mathematical format.''
So does this mean they will bring back APL?
Personally, I find functional notation and names much easier to understand than mathematical notation and symbols. Of course, I'm not a mathematician, so I guess I'm not the target audience for this project. However, I still think this is a really bad idea.
Please correct me if I got my facts wrong.
"God is REAL unless declared INTEGER"
"Q: What will the scientific programming language of 2050 look like? A: No one knows, but it will be called FORTRAN."
"CS without FORTRAN and COBOL is like birthday cake without ketchup and mustard."
"Consistently separating words by spaces became a general custom about the tenth century A.D., and lasted until about 1957, when FORTRAN abandoned the practice."
"The primary purpose of the DATA statement is to give names to constants; instead of referring to pi as 3.141592653589793 at every appearance, the variable PI can be given that value with a DATA statement and used instead of the longer form of the constant. This also simplifies modifying the program, should the value of pi change."
I'd actually venture that FORTRAN has more jokes about it than C. I for one welcome our FORTRESS-joke-making overlords.
For those who won't bother to read the article, Fortress was designed by Guy Steele, which gives it a good pedigree in my book. I heard his talk at OOPSLA 2006 on the language design decisions they made for Fortress, and although my Fortran (and math) experience is too shallow to fully appreciate it, I found it fascinating nonetheless.
At the very least, Sun has given people something to think about.
It's a strange world -- let's keep it that way
I wrote a Fortran program that printed out a calendar with the year in a banner font at the top. It took 57 cards (no library calls etc, beyound PRINT). Try do anything useful in 57 lines with today's languages.
Engineering is the art of compromise.
What does "designed specifically for multi-core processors" mean? Has something radically changed about SMP and multithreading since Intel and AMD decided to put two CPUs into one package? I suppose there are some cache differences, but that's about it. What is it with people who have apparently never heard of any computer hardware outside the home desktop, now excitedly babbling about "multicore" software?
LOAD "SIG",8,1
In recent times, we've seen all kinds of credit given to companies that have nothing more than vaporware (I don't dare mention anything from Apple here or I'll get modded as troll) and yet Sun, like them or not, is giving back. Perhaps they are not giving back things that you will immediately use or notice, but they are giving back, making it open source, working to stay relevant. That last phrase was on purpose.
They are doing this in complete (nearly) opposition to the position that MS takes. I think Sun deserves a little credit. The did (sort of) open some of the hardware as well, and while that may not fall into hobbyists hands soon, it is a start. Opening (in any meaningful fashion) some high end hardware is a big thing.
No, I don't have tons of Sun hardware or software at home, but I do use it at work, and its incredibly stable, if not super easy to administrate.
Support NYCountryLawyer RIAA vs People
Robert O'Callahan (a core Mozilla developer) had some fairly insightful comments on Fortress a couple of days ago I personally found interesting...
And most keyboards will pitifully fail to type, in any straightforward and reliable way.
And most monitors will fail to display unambiguously, in any straightforward and reliable way.
Programming should be based on mathematics, not written in it -- and that's from someone who writes specialist mathematical libraries for a living. Seriously, if TeX is the least friendly programming environment I have ever encountered in serious use, and the average programming font has trouble distinguishing (, <, { and [ characters, making code look more like typeset mathematics is not the way forward.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
And most monitors will fail to display unambiguously, in any straightforward and reliable way.
You may not have noticed, but cutting-edge monitors nowadays are capable of displaying graphics, and not just text.
I've seen this a couple of days before and bothered to skim through the specifications carefully hidden in the depths of Sun's site. I am not pleased with what I saw. Summarizing:
It seems that the only Fortran-esque side of Fortress is that it is aimed at scientific computing and number-crunching. Other than that, the programming paradigm of Fortress is based on object orientation and programming-by-contract. If Java smelled like Smalltalk, Fortress smells like Eiffel.
Fortress has focus on three basic things:
1) programming by contract (pre-conditions and post-conditions of a method)
2) Numerical and dimensional correctness
3) Keeping the programming language as close to mathematical notation as possible.
1) means that people will write more to achieve the same thing with some guarantee of correctness. Much like Java's enforcement of exception handling, an be easily misused.
2) means that Sun bothered to include kelvin, Pascal, meter, second, Newton and every Physical unit you can think of as language keywords, that all parameters should specify what unit they're in, and that the language will do some effort to prevent errors arising from adding oranges and bananas, or precision errors from summing milligrams to some hundreds of kilograms.
3) means that Fortress will make Perl look readable. Good part of the language specification deals on how the editor should render the source code onscreen. The logical AND operator is the upward-pointing wedge symbol of math. The logical OR operator is the downward-poiting wedge symbol. The Integer type is that special-font Z, and a real is that special-font R. The specification deals on how to represent these in an ASCII file, using a meta-language similar to TeX (but incompatible with).
Programming Fortress on anything other than Sun's own IDE will most likely be unfeasible. Think of every math operator you've seen. If you have experience with TeX/LaTeX, think of those 4 pages from symbols.dvi with all symbols you could use. Those are the Fortress operators. Sun has finally come with something mor unreadable and with more operators than Perl. And the operators aren't even ASCII, they're untypeable. The bitwise AND and OR operators are a weird thing I had never seen before (after 5 years of engineering, and 5 years as graduate student in CompSci).
That said, Fortress may even succeed as a niche programming language. But I still have two concerns left:
How will non-scientific code look on it ? Surely Fortress programs will want to open windows, and dialog boxes, access files and the network. The math-oriented syntax has all it takes to make UI programming uglier than C+Xlib.
Sun claims that Fortress is aimed at High Performance Computing. Sun released an alpha interpreter of Fortress, which is written in Java. What kind of sick language designer writes an interpreter in Java to demonstrate something related to High Performance computing ?
This announcement is great news because the parallel programming problem is quite difficult and is becoming more important as multi-core systems emerge. One important distinction that is often not made, is the difference between concurrency and parallel execution. (although the article does touch on it)
Basically, determining whether a program or algorithm is concurrent (parts can computed independently) is possible but can be difficult in some cases. Many people think that is the essence of parallel computing. It is not.
Once you have the concurrent parts, the questions becomes "whether they should be executed in parallel". The answer depends upon the ratio of computation to communication (parallel overhead). All parallel computers (and clusters) have different ratios and therefore, something that runs well in parallel on one machine, may run poorly on another.
Having a language where concurrency can be expressed and controlled, allows researchers to investigate the second issue (parallel scheduling).
If you want to read more about this kind of thing (and some other parallel programing ideas) take a look at some of the Cluster Programming articles on ClusterMonkey.
HPC for Primates. Read Cluster Monkey
pgfortran produces highly optimized parallel code for running on multi processor machines and clusters. It has for years. CF90 produces highly optimized code for running on 1024 processor machines, and has for years. Neither one is an interpreter. If you want fast parallel math code, get a good compiler. There are plenty of them available, including many free ones.
Fortress uses a lot of unicode mathematical operators
This is also something I'm really looking forward to in Perl 6; I'm guessing the conversation went like this:
Guy: "Here's an idea - let's require the coders to use a lot of characters that aren't on the keyboard!"
Other Guy: "Brilliant!"
I'm sure productivity will skyrocket with this invention.
They also seem to have jumped on the (to me) unfathomable "using braces to clearly delineate code blocks is evil!" bandwagon. I guess it's what all the cool kids are doing these days.
Other than that, it looks really neat!
sic transit gloria mundi
Coming from someone who hasn't written more than a couple shell and Python scripts, why does it feel like there is nothing but resistance from the "seasoned" IT crowd over new ways of trying to do things? I'm not saying either way is better or worse, but suggesting a new method, and from my already admittedly newbie viewpoint, more "human readable" methods (in this case assuming one is a pure math junkie), for coding would seem far more natural and easy to accomplish tasks in. Inevitably though, someone always tries to cut if off at the knees as "not as good as what we already have." Is that really the case? Is it resistance to change? I guess what I'm trying to say is, without even giving something "new" a chance it's derided as a flawed product.
No sig for you!!
...all i've seen Sun do over the last few years is open more things up. Solaris used to cost us money for disks; now it's free (and there's an open source version), same for Java, now it's GPL'd. Anyone like open source chips?
don't get me wrong, i don't think the sun (not much pun intended) shines out of their collective behind. there's still some stuff that grates; service plans just to get the 'recommended' patch clusters. they are moving in the right direction, as parent said.
But when I was postgrad at university, I helped a Math mate recode some department apps used in his thesis from Fortran into 'C'.
The end result is the damn stuff ran faster. I looked into it more deeply to try to understand the difference - was it that I (comp-sci major) was coding the apps more cleanly than the original math majors?
Details are lost - it was a while ago - but I do recall that the 'C' libs were doing most floating point operations faster than fortran. Not just the low level co-processor stuff, but also the more complex operations.
Surprised the heck out of both of us. I suspected at the time that it was just the variant of fortran we were running on Vax's, but didn't bother checking further.
Folks,
Seriously, first go and read about it before making any comments or cracking FORTRAN jokes.
This language is unfortunately advertised as "FORTRAN replacement" though probably the only thing it shares with FORTRAN is that it is targetted at scientific computing. But that's about it!
Secondly, there is a different between language specification and implementation! The "interpreter" is just proof of concept and a fast way of giving means to people to play with it so that you can ot just try to express your computation in it, but also see it running in flesh! Though, it is primarily of interest to language designers to find out implementation quirks and iron them out as the language design evolves. A compiler is usually the final outcome, but is not the goal. The goal of language design is to address the problems in the domain it is targetted to, effectively.
I have been following the developments in Fortress community for a while and it is a very peculiar one in its own regard. Guy Steele has bettered himself again and has set some of the firsts-
1. Integration with typography system. The programs are not just typed, but typed well. You can typeset your equations. The primary symbol set is unicode (with ASCII symbols for lagacy compatibility).
2. Full support for closures, mixins etc with multi-paradigm programming support.
3. The language specification implies parallelism by default! loops are parallel, unless specified serial.
4. Units are included in the language type system. So the compiler can not just check whether you're using the right storage type (int, real etc), but also whether the calculation you're coding actually makes sense!
and many more. It is a great read for anyone remotely interested in computing, languages and software enginnering and development.
Please follow the links to the specification down in this thread and go through it, if your busy schedule permits.
Thanks
- mritunjai
Has anyone been able to do a fresh checkout via SVN since the SlashDot posting? I keep getting the following error:
svn: REPORT request failed on '/svn/fortress/!svn/vcc/default'
svn: REPORT of '/svn/fortress/!svn/vcc/default': 400 Bad Request (http://fortress.sunsource.net)
I even registered as an "observer" of the project in case that was blocking my SVN access.
I thought it'd be nice to play with it for a while... you know, before bashing it. :-)
Real men use punch-cards.
What could be better than a jet powered motorcycle? http://www.youtube.com/watch?v=u8l6GTHLSWE