Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Fortress: The Successor to Fortran? 361

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

Fortress: The Successor to Fortran?

Comments Filter:
  • by eklitzke ( 873155 ) on Saturday April 30, 2005 @05:03PM (#12393827) Homepage
    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.
    • Re:Better than Java? (Score:4, Interesting)

      by CSMastermind ( 847625 ) <freight_train10@hotmail.com> on Saturday April 30, 2005 @05:39PM (#12394018)
      Lol. Funny, but really Sun's point of view is quite off. I really take heart to issues involving the merits of java. I'm in my senior year of high school right now. For the past 3 years our school has taught programming in nothing besides java. There are plenty of java zelots at our school (including the programming teacher *pulls out hair*) that insist that soon everything will be done in java, that C, C++, and perl are dead languages. Oddly enough our computer club does computer related fundraisers (for example we offer a matchmaking services to the students called computerdate). This year I rewrote all the old Pascal programs that we use for them in VB. We've sent teams to 8 or 9 programming contests, 4 or 5 of them we've won using Python where allowed and C++ the other times while the java teams consistantly placed last. The three of us that know C++ (we have about 40 kids in our computer club) even won a java triva contest. I know java and use it where it's approiate but I can't understand why people think it's such an amazing language. I understand it's merits but it's still a normal programming language.
      • Re:Better than Java? (Score:5, Interesting)

        by Decaff ( 42676 ) on Saturday April 30, 2005 @05:51PM (#12394080)
        I know java and use it where it's approiate but I can't understand why people think it's such an amazing language. I understand it's merits but it's still a normal programming language.

        There are many reasons why Java is an important programming language. (1) It is probably the first really mainstream general-purpose widely-used language with garbage collection. (2) It was specifically designed for safety at the start, with things like exception handling, bytecode validation and security managers. (3) It is the first mainstream language to run mostly on a VM, so you get portability not just at the source code level, but at the level of compiled programs. (4) It was designed from the start to handle multiple threads safely.

        Java is certainly not the most exciting language for developers to use, but that is not its point. Java is not a language of clever tricks and obscure code, like C++ can be. However, it is a very practical language that has learned from many of the mistakes of earlier designs.

        If you have been developing for decades like me, switching to Java and finding the ability to write a program, compile it and then decide where it should be deployed (and have this work almost perfectly most of the time) is pretty amazing.
        • Re:Better than Java? (Score:5, Interesting)

          by SnowZero ( 92219 ) on Saturday April 30, 2005 @06:56PM (#12394486)
          There are also reasons why Java its over-hyped:

          (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.

          (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.

          (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.

          (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.
          • Re:Better than Java? (Score:3, Informative)

            by Decaff ( 42676 )
            (1) You give up speed for a marginal increase in features

            No you don't. Recent Linpack benchmarks have shown Java can match C/C++ in terms of math performance in many benchmarks. There is no speed disadvantage for this kind of work.

            (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 few platforms that now don't have Java; the statement 'only a handful' is nonsense. T
            • Re:Better than Java? (Score:5, Informative)

              by Anonymous Brave Guy ( 457657 ) on Saturday April 30, 2005 @09:14PM (#12395291)
              Recent Linpack benchmarks have shown Java can match C/C++ in terms of math performance in many benchmarks. There is no speed disadvantage for this kind of work.

              Do we really, really have to go over this well-trodden ground again?

              OK, here's the short version:

              If you write your Java like C, restricting the functionality you use to almost entirely low-level operations on primitives, then you'll probably get comparable performance, modulo a bit of range-checking on arrays and the like. That's not surprising, and should be true in most programming languages; any language that doesn't ultimately generate basically the same machine code to execute in this case is seriously deficient in performance terms.

              Now try writing anything beyond a relatively contrived and self-contained benchmark in Java -- something that uses more involved data types than built-in doubles and arrays where bounds checking can mostly be optimised away, for example -- and see how far you get.

              Sorry, JIT really helps and modern Java implementations do have some pretty good optimisations, but the design of Java fundamentally means that it will only ever approach the performance of elementary C or C++ as a limit, and there will always be a certain amount of overhead at some stage in the proceedings. You simply cannot avoid this, while still having the bounds checking, still missing value types, etc.

              You could encounter an exceptionally fortunate set of conditions, such that Java has a chance of outperforming C or C++ code. You'd probably need code that ran often enough with similar enough data for dynamic optimisation by the VM to make up for the overhead of monitoring run-time performance in the first place, and then to generate better performing code on that sort of data than C or C++ code run through a good optimiser/profiler combination to produce generic output. Yes, it's theoretically possible. No, I've never, ever seen it.

              • by Decaff ( 42676 )
                Do we really, really have to go over this well-trodden ground again?

                We obviously do, as the landscape has changed since last you walked it:

                Sorry, JIT really helps and modern Java implementations do have some pretty good optimisations, but the design of Java fundamentally means that it will only ever approach the performance of elementary C or C++ as a limit, and there will always be a certain amount of overhead at some stage in the proceedings. You simply cannot avoid this, while still having the bounds
            • Re:Better than Java? (Score:3, Interesting)

              by cahiha ( 873942 )
              No you don't. Recent Linpack benchmarks have shown Java can match C/C++ in terms of math performance in many benchmarks. There is no speed disadvantage for this kind of work.

              No, there is no speed disadvantage, there is, however, a programming disadvantage: in order to get speed in Java, you can't use any abstractions. Java is a less convenient language for numerical programming than C or Fortran 66.

              And (surprise) that's why Sun has been working on Fortress.

              On the contrary, almost everything about the
        • Re:Better than Java? (Score:4, Informative)

          by LWATCDR ( 28044 ) on Saturday April 30, 2005 @07:23PM (#12394654) Homepage Journal
          "(1) It is probably the first really mainstream general-purpose widely-used language with garbage collection. "
          Actually Basic was the first. It used garbage collection for strings.
          "(3) It is the first mainstream language to run mostly on a VM, so you get portability not just at the source code level, but at the level of compiled programs."
          Nope that would have been Pascal. At lest is was the first I had heard of. UCSD Pascal was very popular back in the late 70's early 80's It's byte code was called p-code. I think there where even some chips that ran p-code directly. An other early virtual machine was used by Infocom to run their text adventure games. If you go by number of users it was extremely popular.
        • (1) It is probably the first really mainstream general-purpose widely-used language with garbage collection.

          It is my impression that LISP was fairly mainstream and widely used back in the day. Admittedly, that was probably before programming itself was mainstream.

          (2) It was specifically designed for safety at the start, with things like exception handling, bytecode validation and security managers.

          Strange. I was certain that LISP has exception handling too. As for bytecode validation, that seriou

          • Re:Better than Java? (Score:4, Informative)

            by dvdeug ( 5033 ) <dvdeug@@@email...ro> on Sunday May 01, 2005 @12:19AM (#12396206)
            "Java is more secure than C since you can't access arbitrary addresses and Java makes array bounds checks" myth. In this case, it is important to seperate the language and the architecture on which the programs run. It is not the Java language that does these things, but rather the JVM.

            That's absurd. There's dozens of languages that do that running on i386. BASIC, Ada, Java, Pascal, Fortran in some cases, they all check the bounds of arrays and prevent the use of arbitrary address in the general case. You don't check the bounds of arrays by some hardware magic; you check them by storing the array bounds with the array. C can't do that, since it's legal to pass a pointer to the middle of an array as if it were a pointer to an array.

            In fact, Java is the least portable language I have ever seen. It only runs on one single architecture: The JVM.

            Really. I guess gcj, the GNU Java frontend to GCC, doesn't exist then. On the flip side, you haven't been around computers much if you haven't seen languages that run on only one architecture; QBasic comes to mind.
      • (including the programming teacher *pulls out hair*) that insist that soon everything will be done in java, that C, C++, and perl are dead languages

        Which is clearly tosh. The Java, .NET, perl, mono and python VMs; not to mention OS cores and device drivers will need to be written in C or a language like it.

        This year I rewrote all the old Pascal programs that we use for them in VB

        For the love of god man, why? Java may not be perfect, but there are worse things. VB is one of them. Stop before it damage
  • Whitespace (Score:3, Funny)

    by Anonymous Brave Guy ( 457657 ) on Saturday April 30, 2005 @05:03PM (#12393828)
    Fortress has a number of interesting features, including support for Unicode characters in code, enabling code to look more like formal mathematical expressions.

    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>

    • My guess, based on reading the summary and wild supposition, is the following syntax to replace division:
      a + b
      -----
      c - d
      Now, just imagine how awesome that'll look with proper Unicode characters!

      But beware:
      a + b
      ----
      c - d

      <b>Syntax error<\b>: Mismatched delimiter -.
      Good times, good times.
      • 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.

    • Here's what's cool (Score:3, Interesting)

      by goombah99 ( 560566 )
      Boy it looks like not a single poster actually read the desgin documents. Sheesh... slashdot!

      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 di

      • Boy it looks like not a single poster actually read the desgin documents. Sheesh... slashdot!

        Thanks for the knee jerk, but if you'd read a little further into the discussion, you'd have found that I not only read the material but also submitted an article on this subject several days ago.

        In any case, using whitespace for multiplication is all very nice, until you start using it for function calling/composition as well. Then, suddenly, you see f g h 2, and you have no idea what this represents until

  • by compm375 ( 847701 ) on Saturday April 30, 2005 @05:03PM (#12393830)
    I don't think I want to learn this language...
    • I don't think I want to learn this language...

      Given the phenomenal number of weird bugs that both C and Fortran developers produce because of the nature of those languages and their lack of memory management and safety, I'm sure a large number of Fortran developers would be very interested, even if you aren't.
      • and their lack of memory management and safety

        People don't pay me because I do something easy and safe. They pay me because I do something that most people cannot do, no matter how much time they may dedicate to it.

        Progressively easier and safer languages will bring "toy" coding closer to the mainstream (though never quite to the mainstream, since coding takes some real thought, and people dislike having to think). But forcing people who can actually code to use castrated languages just wastes time a
    • I was thinking the same thing: "Oh, they're going to make fortran harder to write and less expressive? Sounds like a PITA."
  • Math++ (Score:5, Insightful)

    by Doc Ruby ( 173196 ) on Saturday April 30, 2005 @05:04PM (#12393836) Homepage Journal
    I thought Mathematica was the successor to Fortran. Why don't they just improve the Mathematica calc engine for parallel/distributed supercomputing?
    • It's too straightforward. Makes people nervous.
    • Re:Math++ (Score:4, Informative)

      by Florian Weimer ( 88405 ) <fw@deneb.enyo.de> on Saturday April 30, 2005 @05:24PM (#12393942) Homepage
      I thought Mathematica was the successor to Fortran.

      Mathematica is (hopefully) mostly used for symbolic computations. In numeric computing, MATLAB and its extensions is quite popular (maybe even GNU Octave for those who rightly fear that proprietary software undermines freedom of research). I have no idea why the folks at Sun think that Fortran is their competitor. Maybe MATLAB suffers from a stigma similar to Visual Basic. Certainly someone inside Sun knows that their HPC customers frequently run MATLAB programs on Sun hardware.

      Why don't they just improve the Mathematica calc engine for parallel/distributed supercomputing?

      Why would they want to improve the product of a competitor on a government grant? Sounds like a stupid plan to me from a business perspective.

      Anyway, language design suitable for numeric computing is not Sun's strength [berkeley.edu].
      • A smart strategy to achieve my goal would be for Sun to use the government grant to write a Mathematica source-code interpreter, and open that VM source. APIs aren't patent/copyrightable.
      • Re:Math++ (Score:3, Interesting)

        by Salis ( 52373 )
        Strangely enough, Matlab is written in Java and its port to Solaris is SLOOOOW as hell. Literally, it's 10x slower on a Sunblade 1000 than an equivalent x86.

        You'd think Sun would have a good JVM on their own hardware, but the reality is that it sucks.

        My research group is switching to Linux because 1) the software runs faster and 2) PCs /w Linux are cheaper than Sun hardware /w Solaris.

      • Re:Math++ (Score:3, Informative)

        by synthespian ( 563437 )
        maybe even GNU Octave for those who rightly fear that proprietary software undermines freedom of research

        There is also Scilab [inria.fr], from the French INRIA (*) (let's say it's sort of Caltech, MIT, but French - highly competent, they are - they make great croissant and cheese) and ENPC. It's Libre software (FAIF).

        I've seen people use it for real research, and they thought it to be excellent. There aren't as many packages as Matlab, apparently (but this is something that depends on the number of power users, so
  • by Anonymous Coward on Saturday April 30, 2005 @05:05PM (#12393839)
    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?
    • by Anonymous Brave Guy ( 457657 ) on Saturday April 30, 2005 @05:12PM (#12393880)
      Why do pipe stress freaks and crystalography weenies prefer Fortran?

      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.

      • by Anonymous Coward
        Fortran has builting Matrix operations, builting support for complex numbers, does not use pointers etc. All things that mean a lot to people outside of the computer science field. Mechanical civila and chemical engineers don't want to be bothered with allocating and deallocating memory of implementing and little things like that.
    • Because Fortran has well-defined side-effect rules that easily permit loops to be unrolled into vector operations by a compiler.

      (that's at least one reason).
    • Re:Please Explain (Score:3, Insightful)

      by Anonymous Coward
      its specification allows for more aggressive compiler optimizations than C. fewer aliasing issues for example.
    • Re:Please Explain (Score:5, Informative)

      by Jrod5000 at RPI ( 229934 ) on Saturday April 30, 2005 @05:16PM (#12393901)
      From the FORTRAN FAQ (http://www.faqs.org/faqs/fortran-faq/ [faqs.org]) :

      FORTRAN and C have different semantics. A FORTRAN optimizer knows more about aliasing, function interactions, and I/O. A C optimizer has to infer or compute such information. C bigots typically have neither written such optimizers nor worked with folks who do it for a living, and are prone to dismiss such arguments as being petty and neolithic. FORTRAN programmers are often a bit more in touch with high performance computing, and are unwilling to bet that heavily on compiler wizardry.

      There is a vast body of existing FORTRAN code (much of which is publically available and of high quality). Numerical codes are particularly difficult to "vet", scientific establishments usually do not have large otherwise idle programming staffs, etc. so massive recoding into any new language is typically resisted quite strongly.

      Fortran tends to meet some of the needs of scientists better. Most notably, it has built in support for: - variable dimension array arguments in subroutines - a compiler-supported infix exponentiation operator which is generic with respect to both precision and type, *and* which is generally handled very efficiently or the commonly occuring special case floating-point**small-integer - complex arithmetic - generic-precision intrinsic functions
    • Re:Please Explain (Score:5, Interesting)

      by ikekrull ( 59661 ) on Saturday April 30, 2005 @05:18PM (#12393906) Homepage
      As far as I understand it, it is due to the inability of a compiler to optimise execution flow where pointers are involved.

      With C etc. you cannot know at compile time how much space the data referred to by a pointer will consume, or what it will be. This makes optimising certain routines w/regard to data alignment and packing difficult or impossible compared to FORTRAN.

      Various mathematical routines run a hell of a lot faster under FORTRAN than they do under C becauase the FORTRAN compiler knows ahead of time exactly 'what it is getting', and can thus make a decision as to how to feed that data to the CPU to take advantage of its register, cache and instruction scheduling characteristics but sacrifices the flexibility of the 'data structure languages' like C.

      Implementing complex, dynamic structures of arbitary 'objects' is childs play with C but something that would drive you batsh*t crazy using FORTRAN.

      • Re:Please Explain (Score:5, Interesting)

        by Rakshasa Taisab ( 244699 ) on Saturday April 30, 2005 @05:36PM (#12393998) Homepage
        For C this is true, but C++ has gained alot of ground on Fortran through the use of templates and template metaprogramming.

        Blitz++ [oonumerics.org] performs very close to or better than Fortran on many numerical calculations.
      • As far as I understand it, it is due to the inability of a compiler to optimise execution flow where pointers are involved.

        Yes, but the main problem is pointer aliasing. The restrict keyword in C99 helps with that, but compilers still need to make full use of it (and programmers must actually provide these optimization hints). The array layout issues are less of a problem and can be worked around. Of course, you must not declare a 5x5 matrix as double matrix[5][5] (double matrix[25] and manual indexing
    • Re:Please Explain (Score:5, Interesting)

      by NoOneInParticular ( 221808 ) on Saturday April 30, 2005 @05:21PM (#12393925)
      Fortran has bounds checking and doesn't have pointers. The last part is important, because it means that the compiler can do a much better job at optimization. Look at the following C-snippet:

      void f(double *a, double *b, int sz) {
      int i;
      for (i=0; i < sz; ++i) {
      *(a+i) = *(a+i) + *(b+i);
      }
      }

      Having only this information, the compiler has no way of knowing that 'a' and 'b' do or do not point to the same piece of memory, and thus it cannot optimize this loop (as b might point to a-1 for instance). In Fortran the compiler does have this information and can optimize accordingly. Note that this is only a problem with C, not with Pascal. Pascal can in principle run as fast as Fortran, but is probably even more annoying.

      Interestingly enough, C++ should be able to reach Fortran speeds when the C++ compiler writers would finally use the leanage they've gotten for optimizing the hell out of 'valarray'. This class doesn't have aliasing problems and can be used in the same way as Fortran arrays.

      For the rest, the freaks and weenies have simply been brought up with Fortran and therefore prefer 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
    • Re:Please Explain (Score:3, Insightful)

      by afabbro ( 33948 )
      Please modify parent -1 "Should have googled obvious question". The Fortran FAQ answers: http://www.faqs.org/faqs/fortran-faq/ [faqs.org]
    • by NoseBag ( 243097 )
      "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 th
  • In my opinion (Score:5, Insightful)

    by Umbral Blot ( 737704 ) on Saturday April 30, 2005 @05:09PM (#12393863) Homepage
    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.
  • by Noksagt ( 69097 ) on Saturday April 30, 2005 @05:09PM (#12393866) Homepage
    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.
    • All the typography, syntax, numerics support, sophisticated type system, and java-esque exception model is just various kinds of sugar, and not new.

      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.

    • by Tim ( 686 )
      "Fortran's longevity has come because...there have already been a ton of subroutine libraries to draw from, that have been built up over time by many coders." ...and that, as a result of FORTRAN's absolutely neolithic language ''features'', are usually a collection of the ugliest, least-maintainable, magical ''black box" routines that you've ever encountered.

      As a scientific coder, I would estimate that 80-90% of the real reason that no one wants to update large FORTRAN libraries, is that the legacy code is
    • by Decaff ( 42676 )
      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.

      On the contrary, they thought Java was so important they have battled to retain control of the language to prevent forking of the specification.

      One of the major problems with Fortran is the large range of dialects, with many incompatibilities.
  • Matlab (Score:3, Insightful)

    by giampy ( 592646 ) on Saturday April 30, 2005 @05:11PM (#12393877) Homepage

    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++).
    • Re:Matlab (Score:4, Informative)

      by Anonymous Brave Guy ( 457657 ) on Saturday April 30, 2005 @05:16PM (#12393899)
      Based upon my experiences, within universities, ONLY in CS departments Matlab is NOT (yet ?) the de facto standard

      I've worked on several mathematical and scientific projects, from high performance libraries to manipulate geometry (applications to CAD/CAM/graphics/etc.) to analysing results from metrology hardware. To date, I've never seen a serious project where the programmers use Matlab; writing custom code in any number of serious programming languages is a better option (mostly because there is more to almost any program than maths, even a mathematical one).

      Tools like Matlab are great for working scientists who need to get the job done by don't have access to real programming. For those who do, the latter appears to be a much more popular choice.

      • 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 fun
      • Re:Matlab (Score:5, Insightful)

        by Illserve ( 56215 ) on Saturday April 30, 2005 @08:09PM (#12394913)
        You don't understand matlab, it runs slowly only because your coders don't know the features of Matlab that they must stay away from.

        Think of it like this:

        C lets you do X, very fast.
        Matlab lets you do X very fast, and Y fairly slowly.

        Inclusion of any elements of Y into a predominantly X piece of code will bring the whole lot down to Y speed.

        There's no inherent advantage of C (as far as I can tell and I've got years of experience in both), it's just that people tend to roll X and Y together in a Matlab program.

        Admittedly, this is the fault of Matlab, in letting you do this without warnings, but there is documentation provided that tells you what the set of Y is and gives some hints for recoding bits of Y as X.

        So basically, people who program in C are denying themselves the joys of MATLAB's high-level functionality, and in return are still having to code everything in terms of X.

        I have given up on C completely, if I can't write it in MATLAB and have it run fast, it means I don't understand the algorithm well enough and should get back to the drawing board.

        Btw, your attempt to divide programming into categories of "serious" and not is laughable.

    • I'm pretty sure that Matlab uses the blas and lapack libraries that are written in good ole Fortran. As well, you are right that Matlab is used for many of the computations being done today. However, Matlab is not a good choice for large memory problems (upwards of 1-2 GB) and generally, problems like these end up in the domain of the beowulf or the classic shared memory system. Often times, much of those codes designed to run on HPC hardware (beo., shmem) are written exclusively in fortran. As well, Ma
    • Re:Matlab (Score:3, Informative)

      by SuperQ ( 431 ) *
      I would say that you're totaly wrong. Most of the CPU hours I see are good ol fortran. I see some requests for matlab runs, but it's dificult to parallelize, so it ends up being used for small projects, or quick tests of stuff. The bulk of the actual CPU hours is in C/C++/Fortran.
    • MATLAB started as a Fortran library [mathworks.com] 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 [r-project.org] for statistical c
    • How do you define 90% of scientific computation?
      If you mean programms developed, or manhours spend coding, you might be right.

      But noone with his brain intact would run REAL scientific computing (like that all thats stuff burning away TFlop years on the big clusters) on Matlab or "similar languages/enviroments". As soon as cpu hours start to cost money, its worth porting the solutions to something a bit more suited to the task.
  • by synthespian ( 563437 ) on Saturday April 30, 2005 @05:13PM (#12393885)
    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 [berkeley.edu]), had been shouting to deaf ears all this time?

    • by Jon_E ( 148226 ) on Saturday April 30, 2005 @10:02PM (#12395555)
      Wasn't this paper co-authored with Joe Darcy .. now the Java floating point czar working on Tiger (Java 1.5)?

      Much shorter version of the paper is here [berkeley.edu], and a good java floating point paper is also over here [ibm.com]

      oh .. and if you think that nobody at sun will admit java's weaknesses .. you gotta stop talking to the sales and marketing drones, and spend some time in targeted discussions with the engineers [sun.com] ..
    • So they finally admit that what Java did was break the IEEE floating-point specification, that was correct in C

      Oh, as if. There are lots of compilers and platforms that don't have correct IEEE floating-point at all.

      E.g. Try running the following on GCC on linux/x86:

      #include <stdio.h>

      int main(int argc, char **argv){
      double a = 0.1, b = 1000.0, q = a*b;

      double result1 = 100 - q;
      double result2 = 100 - a * b;

      printf("Result1 = %g\n", result1);
      printf("Result2 = %g\n", result2);

      return

  • by jjeffries ( 17675 ) on Saturday April 30, 2005 @05:15PM (#12393891)
    One would assume that the successor to Fortran would be called either Nextran or Fivetran.
  • Times change. Fortresses fall. The fortress of FORTRAN must fall too. Let us weep for it.
  • Why not APL++? (Score:3, Interesting)

    by G4from128k ( 686170 ) on Saturday April 30, 2005 @05:28PM (#12393962)
    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.
    • 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).

      Fortran 90 and later do just this.

      On a side note, (I've mentioned in ot

  • by radtea ( 464814 ) on Saturday April 30, 2005 @05:28PM (#12393964)
    "...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
  • by aepervius ( 535155 ) on Saturday April 30, 2005 @05:28PM (#12393966)
    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.
    • (Yes, I am a computational scientist).

      There are two issues:

      (1) can Fortress link to Fortran libraries---and today this means Fortran 95 and Fortran 2000?

      One obvious issue is using natural Fortran memory layout for (single processor non-distributed) arrays.

      (2) is the Fortress programming langauge *source code* compatible with Fortran?

      They are saying the answer to "2" is "no". The answer to '1' ought to be 'yes'.

      I think that just getting Fortran 95 up to wide prevalance, and people realizing it's defin
  • by mcc ( 14761 )
    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
  • by forgoil ( 104808 ) on Saturday April 30, 2005 @05:39PM (#12394012) Homepage
    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."
  • Anyone remember when ADA was going to replace a number of languages, and become the language of choice? I'm sure it's still used in some circles, but it never got the widespread use that it was originally expected to have. New languages show up, old languages rarely entirely die.

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

  • by theguyfromsaturn ( 802938 ) on Saturday April 30, 2005 @05:48PM (#12394061)
    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?
  • by Fortress ( 763470 ) on Saturday April 30, 2005 @05:54PM (#12394101) Homepage

    This programming language's name is obviously derived from my Slashdot nick. My SWAT team of highly-paid lawyers is examining a satellite photo [google.com] of Sun's corporate headquarters, planning their legal assault.

  • 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?
    • We don't need Java, we need people to f$cking learn to program.

      Actually, I think we need more people to learn that programming is only a part of the job, and worrying more about doing what needs to be done and less about how l33t they are.

      Personally, I think I have better things to do than chase down memory leaks. Java (for example; not my favourite language) saves me from worrying about that and allows me to concentrate on the important things.

      Of course, I don't get to go wakka wakka wakka on s

  • So does the proposal have cute little cartoons to illustrate its points?

    </wishing for the return of Crunchly>
  • Unicode Operators? (Score:3, Interesting)

    by erikharrison ( 633719 ) on Saturday April 30, 2005 @06:29PM (#12394311)
    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.
  • Python to the rescue (Score:3, Informative)

    by utopicillusion ( 843168 ) on Saturday April 30, 2005 @07:46PM (#12394773)
    To those people who detest using Fortran, check out http://www.scipy.org/ [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.



  • by cahiha ( 873942 ) on Saturday April 30, 2005 @08:21PM (#12394979)
    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.
  • by alispguru ( 72689 ) <bob,bane&me,com> on Saturday April 30, 2005 @08:50PM (#12395151) Journal
    Guy Steele is relatively unknown outside the Common Lisp and Scheme communities, and he's overshadowed in the Java pantheon by Gosling, but he's had more influence on more programming languages used by more people than anyone else I can think of:

    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.

  • by Frumious Wombat ( 845680 ) on Saturday April 30, 2005 @09:15PM (#12395299)
    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.
  • Sun has competition (Score:3, Informative)

    by babble123 ( 863258 ) on Saturday April 30, 2005 @09:38PM (#12395439)

    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 [aurorasoft.net], and Cray is working on one called Chapel [washington.edu]. All three companies are being funded by the DARPA High Productivity Computing Systems [highproductivity.org] project.

    Will any of these replace the dreaded MPI+(C/Fortran)? Only time will tell...

Two can Live as Cheaply as One for Half as Long. -- Howard Kandel

Working...