Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Sun Microsystems Programming IT Technology

Sun Releases Fortran Replacement as OSS 233

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."
This discussion has been archived. No new comments can be posted.

Sun Releases Fortran Replacement as OSS

Comments Filter:
  • Read the FAQ (Score:5, Informative)

    by symbolset ( 646467 ) on Monday January 15, 2007 @05:20PM (#17619016) Journal
    The FAQ [sun.com] gives this pdf example [sun.com]

    This one looks like a winner.

  • Re:APL (Score:3, Informative)

    by Coryoth ( 254751 ) on Monday January 15, 2007 @05:47PM (#17619352) Homepage Journal
    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.

    I think that depends on what you mean by mathematical notation and symbols. In the case of Fortress that means Unicode input and the ability to actually render code, thus x^2 gets rendered with a proper superscript 2, array indexes a[i] get rendered to appropriate subscripts, and you have access to other nice symbols - for instance the floating point type is denoted by a blackboard bold R (as in the usual symbol mathematicians use to denote the reals) which you can enter as RR in ascii. The result is that you can enter mathematics via the keyboard and have it rendered in code with captial sigma for sums, standard arrows and cartesian product symbols to denote function signatures, actual square root symbols etc. Think of it as enriching the symbols available to be closer to the full set symbols mathematicians expect: it doesn't result in the horribly obfuscated look of APL, but is more akin to what one would see printed in a math textbook. Read through section 2.4 of the spec (PDF) [sun.com] to get the idea.
  • by namtro ( 22488 ) on Monday January 15, 2007 @05:47PM (#17619362)
    Robert O'Callahan (a core Mozilla developer) had some fairly insightful comments [mozillazine.org] on Fortress a couple of days ago I personally found interesting...
  • Re:Read the FAQ (Score:3, Informative)

    by msuzio ( 3104 ) on Monday January 15, 2007 @05:48PM (#17619370) Homepage
    Actually, yes, that's exactly how they are doing the mathematical notations inside the source code. I thought that actually quite clever!
  • Re:Multi-core? (Score:4, Informative)

    by Cassini2 ( 956052 ) on Monday January 15, 2007 @06:02PM (#17619618)
    Multi-processor programming is becoming a real force / nightmare. Dual-core is only the beginning. At the rate AMD and Intel are moving, we will have Niagara like chips in our home PCs. Already, AMD and Intel have quad-core processors, and are talking about dual quad core (8 core) computers. The average program just can't scale well to 8 cores. Most programs, programming languages, and algorithms don't scale well with increasing the number of cores.

    Fortress is proposing a language to automate that scaling. They are discussing language features to deal with multi-CPU systems, where multiple memory banks are present. AMD's multi-CPU system's (Opteron) with HyperTransport each have a separate memory banks for each processor. It makes sense to allocate the half of the array used by CPU #1 in CPU #1's memory bank, and the other half used by CPU #2 in CPU #2's memory bank. Then the threads should be split so first pair of cores on CPU #1 work in the first half of the array, and the second pair of cores on CPU #2 work on the activities related to CPU #2. Currently, all these multi-processor mapping activities happens manually, and it really sucks. It would be wonderful if programming languages supported this activity automatically.

    I don't know if Fortress is the answer to the multi-core / multi-CPU problem. I hope something is. The computing world needs a solution.
  • by deadline ( 14171 ) on Monday January 15, 2007 @06:12PM (#17619794) Homepage

    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 [clustermonkey.net] articles on ClusterMonkey.

  • i totally agree... (Score:2, Informative)

    by andyr0ck ( 847274 ) on Monday January 15, 2007 @06:54PM (#17620522) Homepage
    ...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? [sunsource.net]

    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.
  • Go read about it... (Score:5, Informative)

    by mritunjai ( 518932 ) on Monday January 15, 2007 @07:21PM (#17620938) Homepage
    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
  • by Coryoth ( 254751 ) on Monday January 15, 2007 @08:35PM (#17621862) Homepage Journal
    My point in comparing Fortress to Eiffel was pointing out that Fortress may be closer to Eiffel than to Fortran, and the press release from Sun mentions Fortran alone.

    And I think that's reasonable, given that the role that Fortress is intended to play is far more important (especially given that it is a niche role) than what Fortresses ancestor languages are. It owes as much to Scala (at least it looks that way - I have no idea whether Scala was actually an influence) as it does to Eiffel. What counts is what it is intended to be used for - which is scientific computing and HPC where parallelisation counts: that is to say the niche currently filled by Fortran.

    I do hope Sun finds a way to keep the GUI/OS-interaction code in some other language (Java is reasonable), making it possible to build applications from Fortress and non-Fortress parts. Treating mouse and other UI events with that math notation won't be fun, even for the most devout Mathematician.

    I honestly have no idea what you mean here. I expect GUI/OS-interaction code would most likely look an awful lot like Scala, which is hardly a problem. The math formatting onlycomes in when actually doing mathematics. The rest of the time it's essentially just an OO language like any other, and won't look any different to any other language. Treating UI events will be straightforward.

    I didn't see in the specs (I skimmed through it quickly, could be my fault) how Fortress is meant to parallelize computations more efficiently. From all I saw, I assume each method runs atomically in a single thread and parallelization of methods is be based on the contracts.

    There are a number of things that Fortress does to make parallelisation work. For instance for loops are parallel by default, as are vector operations. Try looking at the "atomic" keyword to see more on how control of serial and parallel operation is handled. If you want easy parallelisation via each method working in a separate thread and contracts determining wait conditions then look at Eiffel and SCOOP: it introduces a single new keyword (separate) and allows you to do just that.

    I am a Perl programmer, and I don't think Perl is that unreadable. In fact, I agree with most of its design. I am happy that now we can point the finger at something else when someone complains about "weird syntax" and "too many operators".

    I think what you need to consider is how many operator symbols are defined by default in Fortress: it actually isn't that many. Fortress simply supports unicode and the ability to define new operators using classical math symbols - it doesn't have them all defined in the base language. Almost everything is farmed out to libraries. You may think it looks ugly and complicated compared to Perl but I (who have done a fair bit of Perl programming, and have spent time looking at Fortress as it developed) think you're being premature. See it in action or actually try using it yourself and I think you'll quickly find it is, in fact, a lot more readable than Perl.
  • SVN checkout (Score:2, Informative)

    by lancelet ( 898272 ) on Monday January 15, 2007 @09:05PM (#17622234) Homepage Journal

    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. :-)

The hardest part of climbing the ladder of success is getting through the crowd at the bottom.

Working...