Slashdot Mirror


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

361 comments

  1. Dear God by chemistry · · Score: 0, Redundant

    Dear God No! Please say it ain't so. Worst language ever. Period

    1. Re:Dear God by mwkaufman · · Score: 2, Insightful

      Is Sun evil? I don't really think so. I think they're just misguided, and I really hope Fortress doesn't become prevalent in an area that I have to work in. I don't see this turning out well. Lots of good ideas making a good thing worse.

    2. Re:Dear God by linguae · · Score: 5, Interesting

      I wouldn't call Fortan the worst programming language ever; COBOL takes the cake (all of those long words for everything, geez!). It's actually still used heavily in scientific computing, and even though it started out like something that looks like the monostrities of COBOL and BASIC (such as goto statements everywhere, forced indentation, verbosity, and other stuff), the lastest standards of Fortran look decent and have a lot of features that languages such as C has and looks like it has became a much better language. For example, Fortran now supports dynamic memory allocation, structure (such as if...else statements and looping), recursion, arrays, operator overloading, records, and more. The features of the language aren't bad.

      Fortran's niche is in scientific computing and numerical computing, since not too many languages come close. It's not the best language for every application, but it works well for scientists and mathematicians.

    3. Re:Dear God by chemistry · · Score: 1, Interesting

      As a computational scientist I assure you it does not work well for me. My Boss...he is a die hard FORTRAN coder and we bicker back and forth. Yeah he may compile a small program to run faster than my C++. However when the project goes from 100-1000 lines of code to 10000 lines and up he can't even come close in time to code and speed of execution. But I must admit I have a rant against FORTAN code because I have had to debug some of my bosses and he is a horrible coder at best.

    4. Re:Dear God by SnarfQuest · · Score: 1

      COBOL takes the cake

      Have you tried RPG-II? Well, your name lengths are shorter (6, or 4, or 2, or whatever, depending on which field you have to enter them into), but you better not lose/gain any spaces. And don't forget to order some more coding sheets.

      Prove me wrong: Write a useful compiler in RPG-II.

      If you want purposefully bad languages, you have Intercal and friends (brainf***, malebolge, befunge, etc.)

      --
      Who would win this election: Andrew Weiner vs Andrew Weiner's weiner.
    5. Re:Dear God by Anonymous Coward · · Score: 0

      For example, Fortran now supports dynamic memory allocation, structure (such as if...else statements and looping), recursion, arrays, operator overloading, records, and more. The features of the language aren't bad.

      If I'm developing a mission critical system, then I'll take COBOL over any language that allows operator overloading and dynamic memory allocation. You might bash COBOL as a language but the nature of it prevents coders from developing software prone to buffer overflows. God forbid the FAA ever switch from COBOL to something like C++.

    6. Re:Dear God by mangu · · Score: 2, Insightful
      Fortran now supports dynamic memory allocation, structure (such as if...else statements and looping), recursion, arrays, operator overloading, records, and more


      Yes, and so does C++. What are Fortran's advantages? In the days of the VAX, Fortran compilers often generated faster code than C compilers, but this advantage of Fortran for numerical computation disappeared long ago.


      OTOH, C and C++ have a cleaner syntax, no need for line labels, no need to start on column 6 or end in column 72, no need to use an * for continuing lines, etc. Oh, neither does Fortran anymore? So they acknowledge that Fortran *did* have an extremely messy syntax and tried to improve it, did they? Then why not do the right thing and improve it all the way to C/C++ syntax? Most of the improvements people have done to Fortran in the last 25 years, including the ones I quoted from your post, have been done to get Fortran closer to C, by adding features that C had and Fortran didn't.


      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. There's nothing magic about Fortran for scientific and numerical computing. In some cases the opposite is true, C allows for better hand optimization. A competent programmer has better control of a C program, because the relationship from high-level code to machine code is clearer and easier to control in C. People often berate C for having pointers, but in Fortran *everything* is passed as pointers, as anyone who ever called Fortran functions from C programs knows.

    7. Re:Dear God by Tim+C · · Score: 3, Insightful

      So, you're a better C coder than he is a Fortran coder, so Fortran must be bad? Interesting conclusion.

    8. Re:Dear God by Anonymous Coward · · Score: 0

      I wouldn't call Fortan the worst programming language ever; COBOL takes the cake

      OK. How about "worst run of Slashdot duplicates ever"?

      The last time Slashdot ran this story, the regulars and C++ bigots hadn't a clue about modern Fortran (90, 95 and eventually 2003).

      As for COBOL, OO (Object Oriented) COBOL is even worse. The syntax of INVOKING is horrid.

    9. Re:Dear God by Anonymous Coward · · Score: 0

      Yes! Sun is Evil! Everything about Sun is fiery-hot: Java! Sun! Solaris! Therefore, it's all Evil!

    10. Re:Dear God by Lord+Faust · · Score: 1

      COBOL takes the cake (all of those long words for everything, geez!) Yeah, I can see how WRITE, DISPLAY, or ACCEPT might totally confuse a would-be coder. I too found COPY and CALL to be totally over my head. OK, no...

    11. Re:Dear God by Anonymous Coward · · Score: 1, Insightful

      all of those long words for everything, geez!

      This has always bugged me! And, as a matter of fact, it is always the thing that die-hard C-coders point to first. One C-coder that I worked with explained that "it is not only all the extra letters that you type, it is extra letters that you have to read, too!"

      And then it dawned on me: most C-coders never really learned to read in the first place! You don't read letters, you read WORDS! C has always been a cryptic, not easily understood language. COBOL and BASIC, for all their other faults, are very easily readable!

      Anybody that can type reasonably well does not have to worry about the number of charcaters they type. But everyone has to worry about the cryptic, refer-to-a-dictionary-until-you-have-learned-an-en tire- new-language syntax that is C.

    12. Re:Dear God by Anonymous Coward · · Score: 0

      Fortran allows compilers to do parallilism automatically that you would need OpenMP or similar would be needed for in C/C++.

    13. Re:Dear God by Mad+Hughagi · · Score: 2, Insightful

      What are Fortran's advantages?

      Use the best tool for the job?

      Fortran == Formula Translation, not general purpose bloated compiler. It's meant to convert mathematical operations to machine code as efficiently as possible. It just gives us a portable way to do more abacus/slide rule/calculator operations than assembly.

      You can put a new marketing spin on anything. The point of the matter is that Fortran has evolved to suit coding mathematical systems, not to design applications. The mythical CS land where all languages are fully optimized and portable doesn't exist, at least yet anyway. If that were so people would just use symbolic math programs!

      As far as syntax, I don't see how C is cleaner than Fortran. When you solve mathematical problems in physics, you always present it as a block structured set of equations. At that point, it's just a balance between how many keystrokes I have to make and how long it takes to compile/run. So why is something like exp(x,2) better than x**2?

      Finally, I point to the following:

      Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.
      (from Revised Report on Scheme, 1991)


      We don't need fortran compilers that make for easier debugging, we need bug free fortran compilers. But that is a different story...

      --
      UBU
    14. Re:Dear God by linguae · · Score: 1
      Alright, If I wanted add two numbers together in C, all I have to type is c = a + b;. In COBOL, I have to type either ADD A TO B GIVING C or COMPUTE C = A + B. In the C version, all I have to do is just add the two numbers together using variable names and the + operator for addition, and assign the return value to variable c. In the first COBOL example, I have to type actual words in order for it to simply add two numbers together, all in capital letters. This insults my intelligence. The second COBOL example is better, but why I need that frivilous COMPUTE statement just to tell the computer to add two numbers together? COBOL is way too verbose for my liking, and it doesn't increase the "readability" of the program, either. It just makes programs take longer to write because of all of the extra words. You can write readable C code.

      Aside from verbosity, COBOL has some other major problems. It doesn't support strucutred programming, meaning that GOTO statements are needed. It also lacks recursion and dynamic memory allocation (e.g., C's malloc()), even though I hear that newer versions have fixed some of its problems with structured programming. The only big advantage that COBOL has over C, IMO, is that COBOL is far better suited for handling strings of characters, which is a necessity in business applications (where COBOL is still used). Handling strings in C isn't pretty.

      Put it like this, most C users working in Unix (like myself) probably wouldn't touch COBOL with a long pole (you should see the Jargon File's definition for COBOL), and most COBOL programmers working on business applications probably wouldn't use C. C is geared towards systems programming and Unix, while COBOL is geared towards business applications and IBM mainframes. They're two different realms of programming.

    15. Re:Dear God by Cro+Magnon · · Score: 1

      RPG-II! Yuck! I learned that at DeVry, but I've never had to use it since, thank God!

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    16. Re:Dear God by Cro+Magnon · · Score: 1

      Even older versions of COBOL had "good enough" support for structured programming. Most of my programs were just as "structured" as any C program, with few or no GOTOs. Also, COBOL IS usually more readable than C. A bad programmer can write unreadable crap in any language, but COBOL at least tries to be readable. C, like Perl, requires special effort to be readable. You are right about one thing though: C isn't a good choice for business apps, and no sane person (and very few insane ones) would try to write an OS in COBOL.

      --
      Slow down, cowboy! It has been 4 hours since you last posted. You must wait another few hours.
    17. Re:Dear God by Hognoxious · · Score: 1
      Well an F1 driver can drive a car faster than a jockeyt can ride a horse, and race cars are certainly faster than horses, so why not?

      Seriously, some might argue that choosing to use fortran in the first place automatically makes one a bad coder.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  2. Better than Java? by eklitzke · · Score: 5, Funny

    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"
    1. Re:Better than Java? by CSMastermind · · Score: 3, Interesting

      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.

    2. Re:Better than Java? by Decaff · · Score: 4, Interesting

      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.

    3. Re:Better than Java? by Anonymous Coward · · Score: 0
      As a C hacker there are a few things I can appreciate about Java:
      1. Instant portability. In a C program I have to #ifdef my mind away to get it working on subtly different C libraries. This is not to mention all the build script mayhem. What I end up with in C is a program that can run on many different kinds of Unix plus Windows, but the effort involved in doing this is great.
      2. The class loader. In Java, you can do "dynamic loading" effortlessly. To use DLLs in a portable C program you have to handle several subtle incompatibilities between various implementations of dlsym(), plus Windows stuff is completely different. Sometimes it can be tricky even to figure out how to build a DLL on a given platform.
      3. Thoughtless memory allocation. This is really more of a nice feature than a necessity. Sometimes I get a little concerned because coding in Java makes me think that I can carelessly allocate and free memory at a whim, without thinking of consequences.
      4. AWT/Swing. I find the API for Swing is really cool. Cooler than GTK+, cooler than Qt, cooler than Cocoa, cooler than Windows. If there were a C++ GUI toolkit that worked like Swing, I'd sure as hell use it.

        People talk about how ugly Swing is, but it can be configured to look like GTK+ or Windows. (Why Sun did not set this by default for the Linux and Windows JVMs respectively, I do not know.) Mac OS X's Swing looks awesome by default, I might add.
      This is not to say I don't like the C way of doing things.... I love it. And there are a few ugly things that Java programmers seem to love to do in spades (such as over-emphasizing object paradigms, or allocating way too many relatively expensive objects) that drive me nuts. But, it certainly does have it's pluses.
    4. Re:Better than Java? by StrawberryFrog · · Score: 1

      (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 damages your mind. If your on a pascal mission and don't mind proprietary windows tools, try Delphi.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    5. Re:Better than Java? by CSMastermind · · Score: 1

      Honestly I used VB because I didn't have much time to do it and I wanted a nice user interface because next year I'll be gone and it's likely they won't touch the actual code for a very long time. That and I used databases which, sadly because VB was my first language I don't completely understand in C++ and java.

    6. Re:Better than Java? by masklinn · · Score: 1
      It was specifically designed for safety at the start, with things like exception handling, bytecode validation and security managers.
      Safety?
      My ass, try ADA for that one
      If Java was truly "designed for safety at the start", you just wouldn't need that kind of project
      --
      "The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
    7. Re:Better than Java? by Decaff · · Score: 3, Informative

      Safety?
      My ass, try ADA for that one

      If Java was truly "designed for safety at the start", you just wouldn't need that kind of project


      Sorry, that is false. that is a bug-finding tool, not a safety checker. Similar bug-finders are required for Ada, although they work with source code.

      Java includes major safety features (like the SecurityManager) that Ada doesn't. Ada is relatively safe because it is a Pascal-like language with features, such as bounds checking and very strong type safety, that C etc. lack. Java has such bounds-checking features, but goes further than Ada, as it does not require manual memory management.

    8. Re:Better than Java? by SnowZero · · Score: 4, Interesting

      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.

    9. Re:Better than Java? by HornWumpus · · Score: 1
      That and I used databases which, sadly because VB was my first language I don't completely understand in C++ and java.

      Damn I'm impressed. You completely understand databases in VB!

      I've been coding for 20 years and I don't completely understand databases.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    10. Re:Better than Java? by Decaff · · Score: 2, Informative

      (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. There are recent VMs for all major operating systems, and many minor ones. The number of platforms with GNU compilers on is enormous, which comes with GCJ.

      There are more platforms that support OpenGL than Java3D, for example.

      True, but I assumed we were discussing numerical language use, not games development.

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

      On the contrary, almost everything about the development of Java has been handed over to the Java Community Process. Also, the VM spec and language spec are available for anyone to implement compatible languages (and many have).

    11. Re:Better than Java? by LWATCDR · · Score: 1

      "(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."
      Yea for command line programs. If you program uses a GUI then you are pretty much out of luck. Sure you could use a cross platform gui library but even that is not as clean of a solution as Java. Java may have been over hyped but it does solve a large number problems for a large number of people. Before you rant about how much Java sucks I suggest trying Eclipse and Limewire. Those are two well written Java apps.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    12. Re:Better than Java? by LWATCDR · · Score: 3, Informative

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

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    13. Re:Better than Java? by Porter+Doran · · Score: 2, Interesting

      If you call slow and prone to crash "almost pefectly", then I agree with you. It's becoming tiring to encounter what should be a full-fledged Windows or Mac program coded in Java because a software-maker was too stingy to develop a proper application. Remember -- programming is for users, not for developers, and if to users your program hampers productivity and feels wrong, then it is wrong.

    14. Re:Better than Java? by CSMastermind · · Score: 1

      Lol I wish I completely understood databases. I meant that I understood them more in VB than in any other language. I needed to be able to take text files, and use them to create databases that I could edit at runtime. I knew how to do that in VB but not in C++.

    15. Re:Better than Java? by Decaff · · Score: 1

      If you call slow and prone to crash "almost pefectly", then I agree with you.

      This just isn't true at all. Java is far more robust and 'crash-proof' than C or C++ for example, and there is a lot less to go wrong - memory management is easier for example.

      Perhaps what you call 'crashing' is Java throwing exceptions, revealing bugs that would have been silently ignored in languages such as C, potentially leading to data corruption.

      It's becoming tiring to encounter what should be a full-fledged Windows or Mac program coded in Java because a software-maker was too stingy to develop a proper application. Remember -- programming is for users, not for developers, and if to users your program hampers productivity and feels wrong, then it is wrong.

      Well that is why use I Java - because it gives me robust and high-performance server-side software that can be deployed on the OS of my choice with no changes.

      I find no evidence that my websites backed by Java either 'hampers productivity' or 'feel wrong'.

    16. Re:Better than Java? by Anonymous+Brave+Guy · · Score: 1
      I find the API for Swing is really cool. Cooler than GTK+, cooler than Qt, cooler than Cocoa, cooler than Windows.

      I'm sorry to be the one to tell you this, but you, my friend, are profoundly disturbed. I'm afraid there's nothing for it but psychiatric treatment as an immediate priority, followed by an intensive course in how not to design a library...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    17. Re:Better than Java? by Anonymous Coward · · Score: 0

      (1) Lisp
      (2) Ha ha, no.
      (3) Also Lisp.
      (4) Um...?

      *yawn*

    18. Re:Better than Java? by Porter+Doran · · Score: 1

      I am not talking about webserver apps. Users interact with those indirectly and over the web. I am not even talking about web-client apps -- one expects them to be slow and unstable for other reasons. What I am talking about is someone coding, say, the equivalent of MS Word in Java, and expecting users not to notice the odd window-behavior or that it is being compiled at runtime, leading to slowness and crashes. Yes, there are companies who are doing this, and, yes, they are cheapskates. We users notice.

    19. Re:Better than Java? by SnowZero · · Score: 1

      Yea for command line programs.

      Which is the case for most numerical programs, as well as the amazing number of backends, daemons, cgi-programs, etc that run the digital world. They rarely get counted because they by definition have lower visibility than a GUI.

      If you program uses a GUI then you are pretty much out of luck.

      By out of luck do you mean you only have 5 choices for a toolkit rather than 2? I use FLTK myself, and am glad a "standard" was not shoved down my throat. Java rescued itself with a second toolkit, since the first one sucked. I don't see how that is more elegant than the 3rd party libraries competing for mindshare in the C/C++ world.

      Before you rant about how much Java sucks I suggest trying Eclipse and Limewire. Those are two well written Java apps.

      Good programs can be written in almost any language. It says far more about the developers than the language itself. In the case of Emacs/XEmacs, I'd even say they succeeded despite their use of a bad language for most of the functionality.

    20. Re:Better than Java? by Anonymous+Brave+Guy · · Score: 4, Informative
      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.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    21. Re:Better than Java? by Dolda2000 · · Score: 2, Insightful
      (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 seriously shouldn't even be necessary, and LISP makes up more than well for it with its actual structured. As for security managers, since when was security the job of the programming language rather than the operating system?
      (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.
      (1) So how is that better than emulating an x86?
      (2) There were tons of interpreted languages before Java. As for portability of compiled programs rather than source code portability -- how is that better than JIT compiling or an ordinary LISP REPL? How is it better to use a binary format rather than an ASCII readable format (such as source code)?
      (4) It was designed from the start to handle multiple threads safely.
      What, you mean the `synchronized' keyword? How is it better to use a new keyword instead of just a function?
      Java is not a language of clever tricks and obscure code, like C++ can be.
      My point exactly. C(++) can be a language of clever tricks and obscure code. It doesn't necessarily have to be, however, and usually it isn't. It's both possible and common to write clean C code. However, C (and arguably C++) allow you to use clever tricks and obscure code if you want to and know what you're doing. In Java, you cannot do that even if you wanted to. I don't really see less choice being better.
      However, it is a very practical language that has learned from many of the mistakes of earlier designs.
      Those words would carry a lot more weight if you had included an example of such a mistake. If you were thinking about C++, then I fully agree with you, whatever example you may have been thinking of. C++ is the most abysmal excuse for a language I have ever seen.
      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.
      Except for the "compile it" part, I do that every day with open source C programs, and I don't see what makes it so very much greater to just copy a jarball rather than copy and compile a tarball.

      While I'm in this mood, let me crush another myth about Java vs. C, namely the "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. C is quite capable of those things as well -- unfortunately, most (all?) major physical CPU architectures don't support them. Therefore, don't blame C for that -- blame IA32, Sparc, PPC, etc.

      Yet another one? Well, since you asked: The "Java is more portable and runs on all architectures" myth. In fact, Java is the least portable language I have ever seen. It only runs on one single architecture: The JVM. It just so happens that there is a JVM emulator for most major physical CPU architectures. Would you say the same about C if there were an IA32 emulator for mostly any platform? Most likely not -- It's just that Sun has marketed Java this way.

    22. Re:Better than Java? by Anonymous Coward · · Score: 0

      Basic, the first with garbage collection? I thought it was LISP or something else from the 1960s.

    23. Re:Better than Java? by LWATCDR · · Score: 1

      Lisp was first but the claim was "mainstream". Lisp was mainly used for AI back then.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    24. Re:Better than Java? by LWATCDR · · Score: 1

      I use FLTK myself. Try to write a program that does Serial IO that is portable to Windows and Linux.. Yea it is mainly Windows problem but it is still a real issue. Also FLTK is no where as useful as Swing.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    25. Re:Better than Java? by Anonymous Coward · · Score: 0

      I think there where even some chips that ran p-code directly.

      As a matter of fact there was. The chipset was made by a small, insignifigant company called Western Digital. This was just before the product that really made them famous; a single-chip floppy-disk controller.

    26. Re:Better than Java? by dvdeug · · Score: 3, Informative

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

    27. Re:Better than Java? by Anonymous Coward · · Score: 0

      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.

      It'd be nice if LISP was the language to use, but it isn't unfortunately. But Java is dumbed-down and restrictive for a reason - it is a business-oriented language that is meant to have very verbose code that is understandable to people with minimal knowledge of it. The same can't be said for LISP with its rather undescriptive operator names (car, cdr?) and the complexity it can exhibit.

      Although I would argue Java has its own clever tricks and it is possible to write obscure unreadable code if you really tried hard (but it would be pretty pointless), it is meant to be restrictive because of its target audience. Its target audience does not want programmers coding ugly messes that only they can understand. Java is useful for team development and is especially useful for large-scale server-side projects.

      Yes, it is dumbed-down, yes it runs on a VM which takes a chunk of performance away. But its the right tool for the job in a lot of situations. I see dumbass developers do stupid things in Java, and fortunately it restricts these fools from doing really really stupid things. I can only imagine if you gave them LISP or C or some other remotely flexible language what kind of ugliness they would produce. It is a language for the common person to do common tasks and is designed to scale up for large-scale development. It does this well.

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

      Ever heard of GCJ? Granted, it won't compile all Java code, but it results in native code nonetheless.

    28. Re:Better than Java? by Anonymous Coward · · Score: 0

      Java GUI apps can be done right. Take a look at Eclipse, it is one of the best IDE's around, and definitely the best open source IDE around, and it is written in Java, though it does use SWT and not Swing. It doesn't have any odd behaviors, slowness, or crashing. Maybe that's thanks to SWT. Still, a modern Swing application can work nicely, but the developers have to know what they are doing and maybe that is the problem.

    29. Re:Better than Java? by Anonymous Coward · · Score: 0
      My ass, try ADA for that one

      I think ADA is too bug to fit there. (unless you're the goatse guy, of course)

    30. Re:Better than Java? by Anonymous Coward · · Score: 0
      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.

      Your logic is bogus as well. Mono c# is totally self-hosting. The mono C# compiller compiled itself Jan 2002, and by Mar 2002 it was able to compile it's own runtime.

      not to mention OS cores

      Not on an OS core I worked on. It ran directly on this chip that ran JVM byte codes natively. Not only was C not required, it would have been nearly impossible to write a C compiler for it (since the core itself didn't have the concept of pointers).

    31. Re:Better than Java? by Anonymous Coward · · Score: 0

      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.

      No, try that in Python.

    32. Re:Better than Java? by Anonymous Coward · · Score: 0

      dude man, no need to be pedantic. no one uses BASIC, and no one used pascal outside of the classroom. Java is the first of those to be WIDESPREAD in PRACTICAL use.

      That's why it's so notable. Besides, you could have had a better example with Smalltalk, which had garbage collection, VM, reflection and a whole host of things that Java's still trying to catch up with.

    33. Re:Better than Java? by SnowZero · · Score: 1

      True, swing is one of the best (if not the best) toolkits out there. The last time I had to do serial IO on Java was in 2000, and at the time the version we had defined an interface for serial IO but had no working implementation (not helpful, guys). I'm sure that's been corrected by now though. At the time we had to cook something up using JNI, which was my first taste of that nastyness.

      At least nowadays you can run on most computers with two sets of code: Posix and Windows. Thanks to OSX, it can be treated at another posix-like system.

    34. Re:Better than Java? by Anonymous Coward · · Score: 0

      Would you care to cite examples instead of calling me crazy?

      I've worked with other GUI toolkits and I can say I like the AWT/Swing object model very much. It allows you to get things done fairly intuitively in short time. The LayoutManager concept does what Gtk+ attempts to do in terms of widget packing, but with greater flexibility. The event system is pretty nice. And Swing is pretty good at what it does.

      The worst thing I can say about Swing is that it almost completely ignores setMaximumSize() and setMinimumSize(). This makes widget sizing pretty annoying to cope with. What do you seem to find so awful about it?

    35. Re:Better than Java? by cahiha · · Score: 2, Interesting

      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 development of Java has been handed over to the Java Community Process.

      Yes, they handed over almost everything, except for their ownership of Java. Worse, almost everything new that comes out of the JCP ends up effectively being owned by Sun. So, yes, you do have a bunch of dopes that are working for free for Sun and getting less out of it than even your typical corporate researcher; at least those still get paid.

    36. Re:Better than Java? by cahiha · · Score: 1

      If you program uses a GUI then you are pretty much out of luck. Sure you could use a cross platform gui library but even that is not as clean of a solution as Java.

      Actually, several existing cross-platform GUI toolkits for C++ are far better and more predictable foundations on which to build cross-platform apps than Java. Furthermore, they give you the choice of writing a tiny bit of conditionalized platform specific code, resulting in a great improvement in quality.

      Java's cross-platform capabilities were nice when it first came out in the mid-90's and there were no good C++ GUI toolkits for UNIX. That's why UNIX users flocked to it. Today, Java is not a good cross-platform solution anymore in comparison.

    37. Re:Better than Java? by Anonymous Coward · · Score: 0

      "For the past 3 years our school has taught programming in nothing besides java"

      That's not good - does your school not believe in teaching you how to manage & write code that uses pointers?

      Have they told you how badly Java performs numeric data work vs. say, C/C++ or Delphi? Heck, even vs. VB??

      "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"

      Really? Ask your Prof. (those who can do, do, & those who can't, teach) about how many Operating Systems & drivers are written in Java then.

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

      Heh, should have used Delphi - IT IS OBJECT PASCAL! And, you would have had code that outperforms the VB stuff too & an easier time of it, not that porting Delphi to VB & vice-a-versa is hard - it's probably some of the easiest porting to do!

      Still, good job on your end.

    38. Re:Better than Java? by Decaff · · Score: 1

      I am not talking about webserver apps.

      If you are talking about Java, that is where it is overwhelmingly used.

    39. Re:Better than Java? by Decaff · · Score: 1

      Strange. I was certain that LISP has exception handling too. As for bytecode validation, that seriously shouldn't even be necessary, and LISP makes up more than well for it with its actual structured. As for security managers, since when was security the job of the programming language rather than the operating system?

      The reason for these is that Java is designed to be able to be run on minimal systems, and potentially insecure networks. Java code can be streamed across networks (e.g. as applets) and the integrity of that code can be verified. This is extremely useful for things like networked devices and embedded systems.

      (1) So how is that better than emulating an x86?

      The x86 architecture is not specifically designed for object-oriented languages.

      (2) There were tons of interpreted languages before Java.

      Yes, but none were mainstream, and widely used in almost all areas of IT.

      As for portability of compiled programs rather than source code portability -- how is that better than JIT compiling or an ordinary LISP REPL? How is it better to use a binary format rather than an ASCII readable format (such as source code)?

      It allows higher performance. You can have byte code that has already been put through various optimisation, so it can be started immediately and then background optimisation and translation to native code can occur. As for ASCII format - that would require compilation at the point of deployment. This takes time and takes a lot of memory - very bad for getting programs started quickly, and would rule out any serious use in embedded systems, such as mobile phones.

      What, you mean the `synchronized' keyword? How is it better to use a new keyword instead of just a function?

      Because they don't serve the same purpose syntactically. It is far more than just 'synchronised' - there is a lot of detail specified about how threads should behave and which actions are atomic etc. that all Java implementations must conform to.

      I don't really see less choice being better.

      I know this probably sounds cynical, but I do. After decades of development experience, I find that being forced to do things like exception handling had a major benefit in the quality of code; after all, we are all fallible.

      Those words would carry a lot more weight if you had included an example of such a mistake. If you were thinking about C++, then I fully agree with you,

      I was.

      While I'm in this mood, let me crush another myth about Java vs. C, namely the "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.

      How can bounds checking be a 'myth' when it is happening as I write in millions of applications?

      The point about Java is that it is actually possible to do bounds checking. It is not in C or C++, because of the way that arrays and pointers are defined as being equivalent.

      Yet another one? Well, since you asked: The "Java is more portable and runs on all architectures" myth. In fact, Java is the least portable language I have ever seen. It only runs on one single architecture: The JVM.

      This is very silly. There plenty of Java implementations (such as GCJ) that don't require a JVM at all. There have been Java-to-native compilers for years.

    40. Re:Better than Java? by Decaff · · Score: 1

      (1) Lisp

      You do understand the meaning of the word 'mainstream?'

      (2) Ha ha, no.

      Er, yes.

      (3) Also Lisp.

      See answer to (1)

    41. Re:Better than Java? by Anonymous Coward · · Score: 0

      What? You mean crashy slow apps like Eclipse?

    42. Re:Better than Java? by Decaff · · Score: 2, Insightful

      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 checking, still missing value types, etc.

      This is years out of date!

      Optimised Java does not need to do bounds checking, and does not have this overhead. The Hotspot technology does run-time analysis so that the ranges of loops and potential value limits of variables are determined. This means that bounds checking can be removed in almost all cases.

      The Hotspot optimiser does things that no C compiler can ever do - it can determine at run time the best order for machine code instructions for best use of pipelines in certain processors.

    43. Re:Better than Java? by Anonymous Coward · · Score: 0

      Dude you're wrong. Many systems even commercial programs were written in Pascal and Delphi too which is Pascal really.

      But it was not UCSD Pascal, that's all. UCSD Pascal was used in the classroom only. Other Pascals were and are still used in other places.

    44. Re:Better than Java? by Dolda2000 · · Score: 1

      The reason for these is that Java is designed to be able to be run on minimal systems, and potentially insecure networks. Java code can be streamed across networks (e.g. as applets) and the integrity of that code can be verified. This is extremely useful for things like networked devices and embedded systems.

      You can stream LISP forms as well, and the reader won't read them unless they are correct. That seems to achieve about the same goal. My point, however, is this: One should not have to verify the integrity of the code to ensure stability. The underlying system should be stable regardlessly of the integrity of the code running on it.

      Yes, but none were mainstream, and widely used in almost all areas of IT.

      How does a language's popularity count as a merit for the language itself? By that argument, before there was Java, C was used almost everywhere in IT, and although it was this popular (which obviously is supposed to be a merit in itself), people like you still argue against it.

      It allows higher performance. You can have byte code that has already been put through various optimisation, so it can be started immediately and then background optimisation and translation to native code can occur. As for ASCII format - that would require compilation at the point of deployment. This takes time and takes a lot of memory - very bad for getting programs started quickly, and would rule out any serious use in embedded systems, such as mobile phones.

      So how about languages like LISP, Ruby or Perl? All of these have interpreters that take up less memory than the JRE, and compile their sources in no time, yet are (arguably) as fast as Java. In the recent Slashdot article about Ruby 2.0 being released soon, there seemed to be a lot of argument about which was faster -- Ruby or Java -- so that issue seems less than settled. Let's just say that all those three start running virtually immediately on my computer for sure, while the JVM takes more than a second to start running a program. They also take a fraction of the memory that the JVM requires. Admittedly, I haven't been able to measure the performance statistics of a J2ME JVM, but considering how long it takes to start a MIDlet on my Symbian, it doesn't seem to be that much better than the J2SE JVM running on my desktop computer. Also, none of these languages actively prevent the use of a JIT compiler, and at least LISP can be compiled to an intermediate binary form if you'd really want to.

      Because they don't serve the same purpose syntactically. It is far more than just 'synchronised' - there is a lot of detail specified about how threads should behave and which actions are atomic etc. that all Java implementations must conform to.

      Admittedly, C does not specify this. However, as long as you limit yourself to programming for the same architectures that Java runs on, I'd say the operations that are atomic in C are as well defined as in Java, etc.

      I know this probably sounds cynical, but I do. After decades of development experience, I find that being forced to do things like exception handling had a major benefit in the quality of code; after all, we are all fallible.

      So how about the times when I really don't care about whether there comes an IOException while opening a file? I may well want that exception to propagate to the end of the stack and terminate the program. But no -- according to javac I must catch it, and then arrange for some other way to terminate the program.

      Either way, these things are what compiler warnings are for. It's precisely the purpose of the -Wall -Werror options to gcc -- company standards could require you to compile with these options, and yet I can ignore it when just writing some small utility program for myself.

      How can bounds checking be a

    45. Re:Better than Java? by Decaff · · Score: 1

      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.

      This is a fair point, but it not so correct these days. The Hotspot technology in recent versions of the JVM do an amazing optimising job, removing much of the cost of inheritance and doing things like inlining.

      I would say (from personal experience) that Java is vastly better than C for numerical work, as it removes the need for the memory management required in C - and mathematical coders should not have to worry about these things.

      Worse, almost everything new that comes out of the JCP ends up effectively being owned by Sun. So, yes, you do have a bunch of dopes that are working for free for Sun and getting less out of it than even your typical corporate researcher; at least those still get paid.

      I think it is extreme to call IBM, HP, Oracle and thousands of other members of the JCP 'dopes'.

      People join the JCP because they get to change Java. This process works. (Of course there are many changes to Java outside the JCP as well, such as SWT).

    46. Re:Better than Java? by dodobh · · Score: 1

      Multiplatform?
      non x86 Linux?

      --
      I can throw myself at the ground, and miss.
    47. Re:Better than Java? by Anonymous Coward · · Score: 0

      Optimised Java does not need to do bounds checking, and does not have this overhead. The Hotspot technology does run-time analysis so that the ranges of loops and potential value limits of variables are determined. This means that bounds checking can be removed in almost all cases.

      Kindly link to the papers describing this techology, and to reputable benchmarks demonstrating its efficiency. I have been seeing claims like this made for years; so far nobody has actually been able to support them with hard evidence, but maybe Decaff has finally found some proof?

      The Hotspot optimiser does things that no C compiler can ever do - it can determine at run time the best order for machine code instructions for best use of pipelines in certain processors.

      And most processors, which have been designed to optimise compiled C code, can also do this themselves.

    48. Re:Better than Java? by Anonymous Coward · · Score: 0

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

      Heh, should have used Delphi - IT IS OBJECT PASCAL! And, you would have had code that outperforms the VB stuff too & an easier time of it, not that porting Delphi to VB & vice-a-versa is hard - it's probably some of the easiest porting to do!


      True that. I would use Delphi over VB (pre-.Net) any day of the week!

    49. Re:Better than Java? by Porter+Doran · · Score: 1

      I think what you developers don't realize is that a user isn't tiptoing through your app, box by box, like an old lady at a teaparty -- "everything works so well!" -- no, he's leaning on your app like a roadworker on a jackhammer, clicking three buttons at once, and copying while he pastes -- "let's get this job done". There's all the difference in the world between "testing" and "using". Also, keep in mind that we're interacting with some of these apps ten hours a day -- if it crashes the JVM once in that day, that may seem good odds to you, but to us it's too much.

    50. Re:Better than Java? by Anonymous Coward · · Score: 0

      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.

      "I switched to Java because I heard it was like C++ with garbage collection. Turns out they were right - when I ran my program, it deleted itself."

      (Bu-dum dum Ching!)

      Thank you, I'll be here all week.

    51. Re:Better than Java? by cahiha · · Score: 1

      This is a fair point, but it not so correct these days. The Hotspot technology in recent versions of the JVM do an amazing optimising job, removing much of the cost of inheritance and doing things like inlining.

      Not even close. Java lacks support for efficient, user-defined, small datatypes (complex numbers, 2-vectors, 3-vectors, etc.). C, C++, and Fortran have them. They are essential for any numerical programming language. Despite 20 years of trying, people have not been able to compile that stuff efficiently automatically, and HotSpot isn't even close.

      I would say (from personal experience) that Java is vastly better than C for numerical work, as it removes the need for the memory management required in C - and mathematical coders should not have to worry about these things.

      Java is unsuitable for serious numerical work. C is barely suitable--it's painful, but at least you can get the work done at all.

      I think it is extreme to call IBM, HP, Oracle and thousands of other members of the JCP 'dopes'.

      The big companies don't have a choice--they have to participate. But IBM clearly isn't happy with Sun's ownership of Java anymore, which is why they have created projects like Jikes and Eclipse. The individuals that participate do have a choice, and they are dopes in my opinion.

      People join the JCP because they get to change Java. This process works.

      No, it does not work--just look at the dreck it has produced. It amounts to free labor for Sun. Of course, Sun gets largely what they pay for...

    52. Re:Better than Java? by sjames · · Score: 1

      There are many reasons why Java is an important programming language.

      Actually, a LOT of that is marketing! Pascal's p-code predates the JVM by a mere 26 years. It was widely available in the late '70s in the form of UCSD Pascal.

      GC is also widely available. You can even do GC in C++ if you want.

      Many languages are run anywhere and have libraries and VM that are truly freely distributable. (They WERE available when Java came out). The JVM is freely downloadable, but you are only allowed to tell the user where to get it, you may not just include it in your distribution.

      Given what I have seen from Java, the world might be a little better off without it. Not that it's in iteslf bad, but that the overhype causes it to eclipse better tools for many jobs.

      The bytecode verification work is interesting though. It might have made more of a contribution were that folded into other VMs rather than Java and JVM.

    53. Re:Better than Java? by Anonymous+Brave+Guy · · Score: 1
      Would you care to cite examples instead of calling me crazy?

      Sorry, the reply was flippant; I should have added a smiley.

      But seriously, what is it about Swing that makes you say it's cooler than other major GUI toolkits? Admittedly I've never used it much, but it seems to be remarkably difficult to implement essentials like native look and feel properly in Swing compared to the alternatives, which pretty much turned me right off it. What makes it so cool in your view?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    54. Re:Better than Java? by Anonymous Coward · · Score: 0

      "We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp."

      - Guy Steele, Java spec co-author (source)

    55. Re:Better than Java? by Decaff · · Score: 1

      Not even close. Java lacks support for efficient, user-defined, small datatypes (complex numbers, 2-vectors, 3-vectors, etc.). C, C++, and Fortran have them. They are essential for any numerical programming language. Despite 20 years of trying, people have not been able to compile that stuff efficiently automatically, and HotSpot isn't even close.

      You are not arguing against the points I was making. I was saying that Java does good optimisation. Support for the datatypes you describe was not being discussed.

      You statement about Hotspot is factually incorrect, as Java is already being used for numerical work and benchmarking faster than C.

      Java is unsuitable for serious numerical work. C is barely suitable--it's painful, but at least you can get the work done at all.

      This is self-contradicting statement, and has no factual basis. You can code exactly the same numerical algorithms in Java that you can in C, so if you are saying C is suitable, then Java is suitable. Please back this statement with evidence.

      No, it does not work--just look at the dreck it has produced. It amounts to free labor for Sun. Of course, Sun gets largely what they pay for...

      This is a comment without evidence. Please state what you mean. There have been some extremely high-quality JSRs produced by the JSR - the JINI stuff is an innovative Linda-based technology. The recently published JDO 2.0 is perhaps the best persistent specification ever produced.

    56. Re:Better than Java? by Decaff · · Score: 1

      Actually, a LOT of that is marketing! Pascal's p-code predates the JVM by a mere 26 years. It was widely available in the late '70s in the form of UCSD Pascal.

      I know. I used it. It had poor performance, and never became mainstream.

      GC is also widely available. You can even do GC in C++ if you want.

      Yes, but that was not designed in from the start.

      Many languages are run anywhere and have libraries and VM that are truly freely distributable. (They WERE available when Java came out).

      I know! I have used many, many languages that had VMs - Lisp, Smalltalk etc. They all failed when it came to performance.

      The JVM is freely downloadable, but you are only allowed to tell the user where to get it, you may not just include it in your distribution.

      No - there are open source VMs, and you are allowed to freely distribute Sun VMs along with any Java code you ship.

      Given what I have seen from Java, the world might be a little better off without it. Not that it's in iteslf bad, but that the overhype causes it to eclipse better tools for many jobs.

      Please name a single alternative that is (1) free, (2) runs on so many platforms and (3) has reasonable performance. I looked into this for many years, and Java was the only language had had all three.

      Java is the most popular language for business development. Other languages had had decades to occupy this position. Java deserves its success.

    57. Re:Better than Java? by Anonymous Coward · · Score: 0

      I was saying that Java does good optimisation. Support for the datatypes you describe was not being discussed.

      I wasn't saying Java should support them, I was saying that a modern numerical programming language must allow me to define them myself and have them work efficiently. Java does not. Go try to implement a high performance complex number class in pure Java (or even using JNI) and implement a complex FFT using it; you will see that it's not possible. It is possible in C, C++, and Fortran.

      Sun's own employees are telling you that Java is too limited for numerical computations; that's why they are working on Fortress after all. What are you arguing with me about? And why are you arguing about efficient numerical computation at all with me since you seem to have done very little of it?

    58. Re:Better than Java? by dvdeug · · Score: 1
      Like I said, Java does not do this -- the JVM does.

      No, when Java is compiled natively, it does bounds checking. Just like dozens of other programming languages running natively on x86 and on a vast array of other systems.

      So how about the times when I really don't care about whether there comes an IOException while opening a file? I may well want that exception to propagate to the end of the stack and terminate the program. But no -- according to javac I must catch it, and then arrange for some other way to terminate the program.

      It's a silly idea that a program should crash because the file isn't there. In a non-trivial program, you would never want the program to end without an appropriate error message just because a file wasn't there.

      Arrays and pointers are not defined as being equivalent in C -- only on x86, Sparc, PPC and similar platforms.

      Nonsense. Arrays and pointers are defined as being equivalent in many ways in the ISO C standard. But
      void foo (char * bob);

      int main () {
      char john[42];
      char *jane = 0;
      foo (john);
      foo (jane);}
      is valid C code anywhere. It is practically impossible for a compiler to do proper bounds checking for C, because of this, and this is true on every system.

      But then you subject yourself to exactly the same portability "limitations" as with C.

      But you have the option of native compilers and JVM compilers.

      Just because there are JVM emulators for most platforms doesn't mean that the class files are portable anymore than an x86 ELF file.

      x86 ELF files aren't portable between OSes, and no matter the theoretical portability, and the practical existance of emulators for certain OSes running x86 ELF files, most people don't have them installed. As a practical thing, you can take a bytecode compiled Java file and run it on many people's systems. Whether or not it's being emulated isn't an interesting question; whether or not it will run is.
    59. Re:Better than Java? by Anonymous Coward · · Score: 0

      (1) It is probably the first really mainstream general-purpose widely-used language with garbage collection.

      Nope. Commodore 64 Basic V2 beat Java on that one. GC sucked back then, just as much as it sucks now. Everyone else learned, only Sun and MS still insists on garbage collection.

    60. Re:Better than Java? by Anonymous Coward · · Score: 0

      Because it sucks at everything else?

    61. Re:Better than Java? by Dolda2000 · · Score: 1
      No, when Java is compiled natively, it does bounds checking.
      Of course -- because the JVM does it. When you recompile code for one hardware platform to another, then naturally you have to account for the idiosyncrasies of the original platform. Java is able to define arrays in the way it does because of their representation on Java's native platform (the JVM).
      It's a silly idea that a program should crash because the file isn't there. In a non-trivial program, you would never want the program to end without an appropriate error message just because a file wasn't there.
      It's far from a silly idea. What if I write a Java replacement for UNIX cat or some other similar small utility program? Whyever would I want it to survive an IOException or a FileNotFoundException?

      To take another, similar example, why would I want to check for an InterruptedException in a thread that I know will never be interrupted?

      Nonsense. Arrays and pointers are defined as being equivalent in many ways in the ISO C standard. But

      void foo (char * bob);

      char john[42];
      char *jane = 0;
      foo (john);
      foo (jane);}

      is valid C code anywhere. It is practically impossible for a compiler to do proper bounds checking for C, because of this, and this is true on every system.

      What would be so strange about that code? The "= 0" is valid only because 0 and NULL is defined as equivalent, and null values are permitted in Java as well. The array could be allocated as a native object of 42 chars by a hardware platform capable of doing so. For example, it could even be done on an i386 by allocating a descriptor with an upper limit of 42 bytes -- the reason why it is impractical on i386 is primarily because it's impossible to allocate more than 8192 descriptors to one process, and of course because arbitrary descript loading isn't prohibited by the processor. I do, however, not understand what about that code makes it so "impossible" to do bounds checking.
      But you have the option of native compilers and JVM compilers.
      So?
      x86 ELF files aren't portable between OSes, and no matter the theoretical portability, and the practical existance of emulators for certain OSes running x86 ELF files, most people don't have them installed. As a practical thing, you can take a bytecode compiled Java file and run it on many people's systems. Whether or not it's being emulated isn't an interesting question; whether or not it will run is.
      Precisely my point. It's not a qualitative property of Java itself that makes it "portable", but rather the availability of emulators for the JVM.
    62. Re:Better than Java? by LWATCDR · · Score: 1

      "Dude man, no need to be pedantic. no one uses BASIC, and no one used pascal outside of the classroom. Java is the first of those to be WIDESPREAD in PRACTICAL use.Dude man, no need to be pedantic. no one uses BASIC, and no one used pascal outside of the classroom. Java is the first of those to be WIDESPREAD in PRACTICAL use."

      Dude no one uses Basic??? I guess you have been a practicing Amish until you posted this.
      I guess you have never heard of Visual Basic? While I find it nasty I would bet a LOT of people use it. We will not even go into the huge numbers of people that first learned to program using Basic on their TRS-80s, Commodores, Apples, Ti's, Sinclairs, and Ataris.
      Pascal only used in the classroom? The Apple Lisa and Mac where supposed to have Pascal as their native development environments. If fact you used to have to convert your c style strings into Pascal style strings before using any system call on the Mac.
      Here is a link the help educate you. http://alumni.ucsd.edu/magazine/vol1no3/features/p ascal.htm

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    63. Re:Better than Java? by Anonymous Coward · · Score: 0
      I was preferring more to the philosophical parts, and the API of swing. The LayoutManagers, the way components are done, the event listeners. I find I am very productive in that environment. It's quite effortless to create a GUI, especially compared to Gtk+ or Windows.

      As for native look and feel:

      Yeah, it's hard to do in a Java app. Especially with regard to the position of buttons. But there is a system that Sun allows customizing with.

      In jre/lib/swing.properties, you can insert:
      swing.defaultlaf=com.sun.java.swing.plaf. gtk.GTKLookAndFeel
      or
      swing.defaultlaf=com.sun.java.swing.plaf.win dows.WindowsLookAndFeel
      For a Gtk+ or Windows look and feel, respectively. This won't be everything, and it won't be fully automatic, but it's a start. Why Sun did not have this by default, I don't know.

      On the Mac, Swing apps look really good by default.
    64. Re:Better than Java? by dvdeug · · Score: 1

      Of course -- because the JVM does it.

      Bounds checking in Java is defined in the standards document independent of the JVM, just like in Ada and other portable languages that do bounds checking.

      What if I write a Java replacement for UNIX cat or some other similar small utility program? Whyever would I want it to survive an IOException or a FileNotFoundException?

      If I do "cat foo", I expect a message like "foo: file not found", not "IOException in blah: blah.java line 59, called from ..."

      I do, however, not understand what about that code makes it so "impossible" to do bounds checking.

      foo can't tell the difference between an array getting passed in and a pointer to anything.

      the reason why it is impractical on i386 is primarily because it's impossible to allocate more than 8192 descriptors to one process[...]

      Then that's C's fault. It's not at all impractical on i386 for all the other languages that do bounds-checking.

    65. Re:Better than Java? by sjames · · Score: 1

      Yes, but that [GC] was not designed in from the start.

      True, but not that important. With operator overloading and such, you as a programmer won't really see the difference.

      Please name a single alternative that is (1) free, (2) runs on so many platforms and (3) has reasonable performance. I looked into this for many years, and Java was the only language had had all three.

      Any that you mentioned plus python. Between the time of the early VM based languages and now, processors are thousands of times faster. To fairly compare the performance of JVM against p-code, imagine java on a 1 MHz processor. The rest of the improvements are in the area of JIT compilatrion which applies equally well to any VM, not just Java.

      In other words, the JVM wasn't so much a revolutionary change as a re-evaluation of rather old ideas in the light of hardware running a few thousand times faster than it used to. It took marketing to turn that5 into breathtaking new technology or whatever.

    66. Re:Better than Java? by Dolda2000 · · Score: 1

      Bounds checking in Java is defined in the standards document independent of the JVM, just like in Ada and other portable languages that do bounds checking.

      Whether the Java standards docs or the JVM standards docs define this (of course, they both do) is fairly irrelevant, since they are both designed for each other.

      The fact of the matter is that when you compile Java code for its canonical platform -- the JVM -- array bounds checking is not implemented in the compiled code, but rather in the JVM (the "physical platform").

      That's the difference I make. Neither C nor Java does bounds checking in the compiled code (except when using ahead-of-time Java compilers like gcj, but I would argue that that is primarily because they have to emulate the JVM properly -- compiling ahead-of-time is the exception rather than the rule when it comes to Java). ADA or BASIC or whatever you will does bounds checking in the compiled code, because they know that the platform they are compiled for doesn't support it and decide to patch of for its deficiencies.

      Compiled Java code depends on the platform to do bounds checking, and so does compiled C code. The difference is that the Java platform (or its emulator) actually does bounds checking, while most popular physical CPUs, that compiled C code runs on, do not.

      I know that the difference in semantics is small. However, my point is that there is nothing in C that prevents the platform to do bounds checking -- it's just that most platforms don't. In other words, it's a lack of security at the platform level, not at the language level.

      If I do "cat foo", I expect a message like "foo: file not found", not "IOException in blah: blah.java line 59, called from ..."

      So your real complaint is that you get too verbose error messages? In that case, that's a fault in the default Java bottom-level exception handler. It could well print a short-hand error printout instead of a full stack trace whenever a "--debug" option or similar is not given to the JVM. What LISP programmer would catch exceptions in every single defun only to generate less verbose errors?

      The advantage of having exception handling in a language is largely (although admittedly not only) for the programmer's convenience -- he/she does not have to explicitly check for errors at every function return, but can just expect his/her program to terminate on unexpected conditions (a.k.a. exceptions) rather than continuing with undefined behavior. With Java's forced exception checks, that advantage is negated.

      You could argue that it is for security rather than convenience, but in that case, as I said before -- that's would warnings are for. Company standards could more than well force you to compiled all your code with -Wall -Werror or similar, while I could ignore that for my own programs.

      Also, regardlessly of what kind of errors you happen to expect, what about when I write a small utility program that only I will ever use? Why should I then be forced to catch exceptions just to generate more concise errors for myself to see?

      foo can't tell the difference between an array getting passed in and a pointer to anything.

      So? foo doesn't have to care, since the bounds checking should be done in hardware (as it is in the JVM). In fact, foo cares just as much as any given Java implementation of foo would care. The hardware should know the limits of the array that the pointer points to.

      A pointer in C does not have to be a single integer to a large linear address space. It can just as well be implemented as an "object/array identifier" paired with an offset into that object/array. On IA32, that would be equivalent to storing a pointer as both the selector and the address into that select (although that would, of course, not be perfect either, since one can still load arbitrary selectors on IA32)

    67. Re:Better than Java? by dvdeug · · Score: 1

      Whether the Java standards docs or the JVM standards docs define this (of course, they both do) is fairly irrelevant, since they are both designed for each other.

      Thus Java has bounds checking because the standard defines it, not because of anything to do with the JVM. They may have been designed for each other, but that's irrelevant; you could destroy every JVM and every JVM definition in the world, and there would still be Java programs and compilers that can compile them into ELF executables for standard machines.

      The fact of the matter is that when you compile Java code for its canonical platform -- the JVM -- array bounds checking is not implemented in the compiled code, but rather in the JVM (the "physical platform").

      And when Ada is compiled for the JVM, array bounds checking is implemented using the JVM. So? Java the language supports bounds checking.

      except when using ahead-of-time Java compilers like gcj, but I would argue that that is primarily because they have to emulate the JVM properly

      No, they don't. They simply support the Java standard, not the JVM standard.

      However, my point is that there is nothing in C that prevents the platform to do bounds checking -- it's just that most platforms don't. In other words, it's a lack of security at the platform level, not at the language level.

      If in Ada, bounds-overflows can't happen, but in C they can, that's a lack of security at the language level. You're welcome to blame anyone else you want, but the language could have solved the problem, and here in reality, it's cheaper to fix the problem in software rather than replacing every computer on the planet.

      the bounds checking should be done in hardware

      Welcome back to real world. They aren't. Deal with it.

      that is because those languages do manual bounds checks. Java doesn't -- why should C have to?

      Ada and Java doesn't do manual bounds checks when running on the JVM. Ada and Java do manual bounds checks when running on the ix86. I fail to see the difference between the two.

      why should languages in general have to make up for lacks in the hardware platforms?

      Because the x86-64 is completely backwardly compatible with the 8088, and partially backwardly compatible with 4004 built in 1972. There's reality for you. Hardware is hard to change; languages are easier.

      Problems should be solved in the right place rather than patched up for in another place.

      A C implementation has no standard way of dealing with a bounds-overflow. An Ada or Java program can catch the overflow exception and continue running. I'd say that programming languages are the right place to define bounds checking, no matter how the underlying system handles it.

      So your real complaint is that you get too verbose error messages?

      No; "IOException in blah: ..." isn't an error message, it's a crash dump. It tells the end-user nothing about what's wrong. The end-user doesn't want internal crap when a file is missing.

      what about when I write a small utility program that only I will ever use?

      If you want a quick and dirty language to write your small utility programs in, use perl. Not every programming language in the world needs to support Q&D programs at the cost of the people who have to use programs without knowing all the internal details.

    68. Re:Better than Java? by Dolda2000 · · Score: 1
      I can concede to all your points about whether Java defines bounds checking or not, just for the sake of the argument. The fact of the matter is that it is possible to implement bounds checking in C, just that most (all?) current C implementations don't, for the sake of performance and being close to the hardware, and not least to preserve compatibility with current ABIs.

      The C standard defines that out-of-bounds accesses of arrays/objects invoke "undefined behavior". As I said earlier, it is neither theoretically nor practically impossible to define that generally undefined behavior as process-terminating in a certain C implementation. Most C implementors would rather leave that to the hardware, however. (Just as most Java implementors leave it to the virtual hardware)

      I see this as A Good Thing (TM), since once again, C offers choice where Java offers restriction -- if you want bounds checking, choose a C compiler that does that.

      No; "IOException in blah: ..." isn't an error message, it's a crash dump. It tells the end-user nothing about what's wrong. The end-user doesn't want internal crap when a file is missing.
      To be honest, I don't really see any large difference between a crash dump and a fatal error message. They both serve the purpose of stating the reason for abnormal program termination before it happens. I'm not saying that all exceptions should be handled that way -- only the unexpected ones (which could, for example, be a FileNotFoundException and would most probably include IOExceptions). The only difference I can see is that a crash dump prints debugging data, while a fatal error message only prints the actual error.

      In other words, the difference is that a fatal error message, which you seem to want, is more concise, and in that case, like I said earlier, the fault is with Java for having a top-level exception handler that prints the entire stack trace instead of a more concise message, such as stating the name of the exception and its associated error message. If one wants the stack trace, one could run the JVM with a --debug option.

      In fact, it could even be said that this is the job of the actual application programmer. However, in that case, one should still be allowed not to catch exceptions directly where a method is called, but rather let them propagate back up the stack to the main method and let it handle exception printing.

      Another point that I've made previously is that, even regardlessly of my above statements, this is the task of compiler warnings, rather than terminating compilation. If one really wants to compile a program like javac does now, one should run the compiler with -Wall -Werror or similarly (which company coding standards could require). In other cases, one could not do that.

      If you want a quick and dirty language to write your small utility programs in, use perl.
      I agree that one should use a language more suited to the purpose at hand. However, who says that some Q&D programs aren't most suited to be written in Java? Even regardlessly of their architecture, it might be that one wants/needs to use a utility library only available in Java.
      Not every programming language in the world needs to support Q&D programs at the cost of the people who have to use programs without knowing all the internal details.
      First of all, one does not need to support Q&D programs when creating a language. Surely, you can see that it takes more work to implement the forcing of exception handler directly after the method call, both for the JVM developers and the javac developers (and for the application programmers using Java)?

      Second, why would not forcing immediate exception handling somehow "cost" the people who have to use program without knowing all the internal details anything? One does not need a language that forces immediate exception handlers in order to handle exceptions immediately. Did I mention compiler warnings?

    69. Re:Better than Java? by dvdeug · · Score: 1

      C offers choice where Java offers restriction -- if you want bounds checking, choose a C compiler that does that.

      Java offers the same choice; if you want to turn off bounds checking, use gcj with the -fno-bounds-check option. I suspect every other native Java compiler offers the same option, as do most native compilers for languages with bounds checking.

      On the other hand, Java offers choice, in that you can chose how to handle an out-of-bounds condition, whereas even your hypothetical C compiler with bounds checking just kills the program.

      To be honest, I don't really see any large difference between a crash dump and a fatal error message. They both serve the purpose of stating the reason for abnormal program termination before it happens.

      No, a crash dump tells the end user absolutely nothing, but the fatal error message actually tells the end user what's wrong.

      However, who says that some Q&D programs aren't most suited to be written in Java?

      Then what's your problem? Write them in Java. But you can't expect language changes based on some of these types of programs might be better written in a modified Java, at the cost of programs that are currently written in Java.

    70. Re:Better than Java? by Dolda2000 · · Score: 1
      Java offers the same choice; if you want to turn off bounds checking, use gcj with the -fno-bounds-check option. I suspect every other native Java compiler offers the same option, as do most native compilers for languages with bounds checking.
      But by your own argument of bounds checking being mandated by the Java language specification, Java doesn't offer that choice. Only some compilers offer the option of breaking the standard.
      On the other hand, Java offers choice, in that you can chose how to handle an out-of-bounds condition, whereas even your hypothetical C compiler with bounds checking just kills the program.
      Even though I might agree with you on that point, the fact remains that I have yet to see a single instance where you actually want to do that by catching the exception. I haven't seen a single instance of manual bounds checking (even in Java) where an exception is caught instead of checking the length of the array in advance.

      Even so, naturally C is no more a Final Solution then Java is.

      No, a crash dump tells the end user absolutely nothing, but the fatal error message actually tells the end user what's wrong.
      By that definition, I'd have to classify Java's exception messages as fatal error messages rather than crash dumps, because they are plenty informational. Maybe you didn't notice, but the entire purpose of the getMessage() method of an Exception is to get an informational message about the reason for the Exception being thrown. Since the getMessage() string is printed on the first line of the Java exception dump, the exception dump is also informational. For example:

      java.io.FileNotFoundException: test (No such file or directory)
      (Followed by stack trace)

      That seems very informational to me -- the program terminated abnormally because a file couldn't be found.

      Then what's your problem? Write them in Java. But you can't expect language changes based on some of these types of programs might be better written in a modified Java, at the cost of programs that are currently written in Java.
      What made you think that I was expecting language changes? I'm merely trying to point out that Java isn't the "Final Solution" that so many tout it to be. I would even say that in a generic case, it's even worse than many other languages, in particular including LISP, Perl, shell scripts, etc., but also C. Of course, situations differ, and sometimes Java may be the better language, but I'm also trying to point out that if the Java inventors had thought of these things before they unleashed the language on the unsuspecting populace, Java could have been the better language for even more situations.
    71. Re:Better than Java? by drxenos · · Score: 1

      Ada has a lot more than that to make it safe. 1) Scoping rules forbid passing an access (pointer) of a local type to an outer scope. 2) Rules that guarantee a determistic and correct order of elaboration (initialization) of packages (modules). 3) If by "manual memory management" you mean explicit deletion of heap objects, such things are rarely needed to be done in Ada. If needed, Ada make features to handle it, such as indepedent memory pools. 4) Ada has both active and passive tasking. This allows not only for efficience, but avoid problems such as forgetting to give a mutex. They also fully indicate with interrupts, so as to avoid problem with make a procedure atomic at both the tasking and interrupt levels. There is much, much more to safety than bounds-checking. For safety, Java does not even come close to Ada.

      --


      Anonymous Cowards suck.
  3. Whitespace by Anonymous+Brave+Guy · · Score: 2, Funny
    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>

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Whitespace by Jerf · · Score: 1
      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.
    2. Re:Whitespace by Anonymous Coward · · Score: 1, Interesting
      My guess, based on reading the summary and wild supposition, is the following syntax to replace division...

      You're wrong; the actual controversial rule is the use of whitespace to represent multiplication. YES, just like in that "overloading the whitespace operator in C++" april fool's we saw a few years back, but this time for real:
      a sin b log log c
      will do the same thing as
      a * sin (b) * log (log (c))
      in Fortress.

      Could be... uh... fun to use.
  4. 'do for Fortran what Java did for C.' by compm375 · · Score: 5, Funny

    I don't think I want to learn this language...

    1. Re:'do for Fortran what Java did for C.' by jrrl · · Score: 1

      Sort of like what the vet did for my cat.

      -John, a dinosaur who still prefers C to either Java or C++.

      --
      Self Serving Sig: Hosting Comparison
    2. Re:'do for Fortran what Java did for C.' by Decaff · · Score: 2, Informative

      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.

    3. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0

      Fuck up c++ even more? That's impossible!

    4. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0

      What exactly did Java do for C anyway?

      Run slower?

    5. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0

      No, Java is closer to C than C++. C++ is much more powerful than Java (and faster).

    6. Re:'do for Fortran what Java did for C.' by compm375 · · Score: 1

      I was joking. I don't actually mind Java and Fortress does look like it could be interesting. Who modded me informative?! I quoted from the summary before even reading TFA...

    7. Re:'do for Fortran what Java did for C.' by TheKarateMaster · · Score: 3, Insightful

      Joking aside -- Yeah, pretty much. I can't stand Java. C is my favorite language, closely followed by C++... because they both *run*. Java is mind-bogglingly slow, considering it is *based* on the speedy C. Ironically, this "do for fortran what java did for c" comment makes me want to learn Fortran, not Fortress.

    8. Re:'do for Fortran what Java did for C.' by SnowZero · · Score: 1

      Java(tm) is more like a rethought fuck-up of C, than a C++ derivative.

    9. Re:'do for Fortran what Java did for C.' by Salis · · Score: 1

      I use Fortran95 for scientific computing and the sophistication of newer compilers reduces the amount of time needed for debugging.

      For example, a simple compiler won't check for writing to non-existent array elements, but a good compiler will, making one of the most onerous of bugs easily found.

      The Fortran95/2k language itself is very optimized for performance. If Fortress isn't likewise optimized for performance, then many scientists/engineers will not switch. If it takes them a month to learn the language and then 10x the time to run the programs, it will vastly exceed the fraction of debugging time. (Especially since there's a lot of good bug-free Fortran code out there.)

      --
      Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
    10. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0

      Yes, god forbid they might produce a language that improves upon the hideous deformities of the language that inspired it.

      But keep going with the language bigotry, it clearly impresses some people here.

    11. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0

      To a man with a hammer, everything looks like a nail.

      Java is suitable for some tasks, but not all. If you want to waste your time writing C code when it's unnecessary, feel free to do so. I'm sure it will prove your masculinity beyond reasonable doubt.

    12. Re:'do for Fortran what Java did for C.' by sketerpot · · Score: 1

      Cut off its pointers?

    13. Re:'do for Fortran what Java did for C.' by pla · · Score: 2, Interesting

      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 and resources. You want a cute webpage, use a safe language; You want an OS, use C. You want MS Paint, use a safe language; you want The GIMP, use C.

      Computers "speak" machine language. Assembly gives a near 1:1 translation of that, but takes too much work to maintain (and I'll admit that even as someone who likes asm and doesn't hesitate to use it sparingly when platform independance doesn't matter). As long as our computers have a CPU even remotely like what we currently have available, C provides a near perfect balance of closeness to the CPU (with some care, you can translate most C to ML almost directly) with human readability and structural ease of maintenance.


      I'm sure a large number of Fortran developers would be very interested, even if you aren't.

      You want Windows' Calculator, use a safe language. You want high performance code that runs natively on just about any supercomputer, use HPF (Fortran). "Interest", perhaps. But if Fortress provides its "ease" and "safety" the same way Java supposedly did the same for C++, it will have marketing droids as its only fans.

    14. Re:'do for Fortran what Java did for C.' by arodland · · Score: 2, Funny

      I was thinking the same thing: "Oh, they're going to make fortran harder to write and less expressive? Sounds like a PITA."

    15. Re:'do for Fortran what Java did for C.' by babble123 · · Score: 1
      You want high performance code that runs natively on just about any supercomputer, use HPF (Fortran).

      Except that (in the United States) HPF has not really been successful. If HPF really did the job, then DARPA wouldn't be paying Sun money to develop this new language. The computational scientsits are still mostly programming supercomputers with MPI (in C or Fortran). Nobody likes MPI, but nothing else can really get you good performance today when you're dealing with hundreds or thousands of processors.

      HPF is not a general-purpose supercomputing language: It only supports certain kinds of data distribution, which means you can't use it on irregular problems. Also, I think tht HPF suffered because it took too long for the compiler support to mature. A good language is useless if the compilers don't support it well.

    16. Re:'do for Fortran what Java did for C.' by Decaff · · Score: 1

      But forcing people who can actually code to use castrated languages just wastes time and resources.

      Which is nothing compared to the disasters that have resulted from the use of C and C++ over 20 years. When do we NOT hear about another worm or virus resulting from a buffer overrun?

      the same way Java supposedly did the same for C++, it will have marketing droids as its only fans.

      I think you need to take a look at the real world, where Java is the most widely used language.

    17. Re:'do for Fortran what Java did for C.' by pla · · Score: 2, Interesting

      Which is nothing compared to the disasters that have resulted from the use of C and C++ over 20 years.

      Don't blame the hammer when the homeowner insists you finish the job in half the time and under budget, then the house falls down a few years later.

      And if you believe the same (via different mechanisms) won't happen under Java, or Fortress, or any supposedly "safe" language - I have a bridge to sell you. Buffer overruns occur because of sloppy coding - In 90% of cases I've personally had to deal with, simply using snprintf() rather than sprintf() (or some comparable pair of "dumb" and "length specified" functions) would solve the problem. Do you really think that similar oversights won't affect Java in some way?


      I think you need to take a look at the real world, where Java is the most widely used language.

      Your source for that factoid? I communicate with quite a lot of real-world programmers, and although I wouldn't discount the number doing Java (mostly not by their choice), when it comes to getting actual work done, almost everyone chooses C or C++.

    18. Re:'do for Fortran what Java did for C.' by Decaff · · Score: 1

      Don't blame the hammer when the homeowner insists you finish the job in half the time and under budget, then the house falls down a few years later.

      And if you believe the same (via different mechanisms) won't happen under Java, or Fortress, or any supposedly "safe" language - I have a bridge to sell you. Buffer overruns occur because of sloppy coding - In 90% of cases I've personally had to deal with, simply using snprintf() rather than sprintf() (or some comparable pair of "dumb" and "length specified" functions) would solve the problem. Do you really think that similar oversights won't affect Java in some way?

      Of course you will get bugs in Java programs. But, unlike in C or C++ those bugs are actually trapped and you get traceable exception reports.

      Any serious developer knows that people are fallible, and sloppy coding is a fact of life. It would great if there could be a simple announcement to all IT developers: 'stop sloppy coding now!'. All would be bliss. Unfortunately, that is never going to happen, which is why safe languages, like Java, Ada, Pascal, Modula etc. are so important, and why C/C++ can be so disastrous for general-purpose development.

      Your source for that factoid? I communicate with quite a lot of real-world programmers, and although I wouldn't discount the number doing Java (mostly not by their choice), when it comes to getting actual work done, almost everyone chooses C or C++.

      I don't base my understanding of the job market on nothing more than personal communication. I have spend years following the job markets and developer surveys, as I am expected to give professional advice based on facts, not opinion. By what statistical measure do you determine that most of the huge numbers of Java developers are not doing it by choice?

    19. Re:'do for Fortran what Java did for C.' by Jesus_666 · · Score: 1

      "Du for Fortran what Java did for C"...

      So, it will feature a GUI toolkit that is cross-platform and doesn't look like ass on at least one operating system?

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    20. Re:'do for Fortran what Java did for C.' by Jesus_666 · · Score: 1

      I thought the answer would be "fix the broken string handling and general GUI toolkit mess".

      I have pretty much given up on C++ for everything where I don't need high performance. Working with strings in C++ is a pain as you have two semi-compatible methods of string handling (char* and std::String), which means a lot of casting if you're working with a library which utilizes std::String - or if char* is too much of a PITA to use everywhere.
      I also prefer one GUI toolkit that integrates everywhere over a dozen toolkits that (e.g.) look great with Gnome, somewhat decent with KDE, not very beautiful on Windows and like a complete violation of the entire look and feel concept on OS X. (I know that you can theoretically use Qt and GTK natively on OS X, it's just a mess if you're using Fink or Darwinports.)

      Of course this is all just my opinion. I like OS X and Java, because stuff just works there. IMO (which certainly counts as flamebait on /.) C++ is C with OOP bolted on by means of a series of kludges which make the language neither elegant nor easy to use. Yay for "Real Programmers", but I want to work with a language, not fight against it.

      --
      USE HOT GRITS WITH STATUE OF NATALIE PORTMAN (NAKED AND PETRIFIED)
    21. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0
      with some care, you can translate most C to ML almost directly

      Bullshit. For example, the following C code cannot be translated to ML directly:
      char *foo = "A string";
      int bar = ((int *)foo)[2];
      Because ML doesn't support typecasts or pointer arithmetic. On the other hand, it's damn hard to translate ML code that relies on closures or pattern matching to C, so it cuts both ways.

      Oh, wait, you meant "machine code", not ML?
    22. Re:'do for Fortran what Java did for C.' by pla · · Score: 1

      I have spend years following the job markets and developer surveys, as I am expected to give professional advice based on facts, not opinion.

      Then you should have no problem answering the question, and proving a source for your claim.

      Please, relieve me of my ignorance and post a (credible) link, a journal cite, or even an online poll with more than a few hundred votes.



      By what statistical measure do you determine that most of the huge numbers of Java developers are not doing it by choice?

      Why, by no lesser evidence than that provided by someone who "have spend years following the job markets and developer surveys", your own expert testimony, of course! Combined with a recent slashdot poll from earlier this year, with 46800 votes (statistically very significant, if it had occurred under more rigorous conditions)... Since you have "proven by assertion" your claim that most coders use Java, while a (more-or-less) statistically significant ratio of coders prefer not to, it follows that they must use Java against their will.

      So, taking a closer look at that poll... Well, lookey-here... C and C++ add up to 38%, while Java (including C# and VB - Considering the popularity of VB, at least, it looks like some Slashdot editor wanted to give Java at least a chance to make a fair showing) only earning a sad 17% (the same as plain ol' vanilla C all by its lonesome). Even humble Perl scores 18%, higher than Java + VB + C#.

      But as I mentioned, Slashdot polls don't exactly have the best of experimental methodologies, so no doubt you have a much better source, ready at your fingertips to fire off to me at a moment's notice...



      But, unlike in C or C++ those bugs are actually trapped and you get traceable exception reports.

      Well, I can certainly see the justification for that - Actually using a debugger takes skill and an understanding of the underlying architecture.

      So, I recently found myself forced to do quite a bit of work in C#.NET, and just this past week, got a stack trace talking about a System.Drawing.Bitmap object (unused anywhere in my code) when trying to set a TextBox control's ".Text" property. Unfortunately, having no concept of how a computer actually performs those instructions I give it, I've never heard of a "null pointer" (pointers? oh, how crude! Everyone knows that pointers cause bugs, so languages like Java and the .NET family don't have them), so I didn't immediate realize that I had somehow tried to work on a nonexistant TextBox, and just can't understand why simply setting a text field would cause such an anomalous error. Good thing we have high quality compilers (sorry, "interpreters") that give us meaningful errors when they don't know how to proceed in this wonderful modern world, eh?


      Changing the problem domain simply changes how people approach the problem. The "essence" of the code remains the same - Adding additional layers of abstraction makes it easier to grasp at a high level, but much harder to know exactly what occurs at the actual hardware level. So, if you add 1+1 and depend on it equalling 3, your program will fail no matter how clever of a language you use. But a sufficiently "clever" program may hide the fact that you expected 1+1 to equal 3, not unlike in my example above - I didn't "set" anything to zero, nor does "zero" have a meaning (within the language) as a value for a TextBox to directly have. But the error resulted from exactly that - At the lowest level, a memory location, and later, a CPU register, that the iterpreter had called "textbox1", had a value of zero. All in a language without explicit pointers (not talking about "unsafe" mode) and nice detailed stack traces.

    23. Re:'do for Fortran what Java did for C.' by Decaff · · Score: 1

      Please, relieve me of my ignorance and post a (credible) link, a journal cite, or even an online poll with more than a few hundred votes.

      Sure. Look at monster.com and it's international sites for current jobs. Or jobserve, or any of a hundred other job advert sides.

      C and C++ are doing well - there is no sign of them dying out. However, Java dominates.

      Well, I can certainly see the justification for that - Actually using a debugger takes skill and an understanding of the underlying architecture.

      I don't agree. I have been using debuggers for close to 30 years. Debuggers deal with the way that languages represent data, not the underlying architecture.

      I've never heard of a "null pointer" (pointers? oh, how crude! Everyone knows that pointers cause bugs, so languages like Java and the .NET family don't have them)

      They do!

      The point is that illegal use of pointers is actually trapped.

      I spent years developing in C and C++ in the 80s, and it was a nightmare. I was working as part of a team developing a project. Buffer overflows would happen and the first sign you would have of this would either be random graphics, a total freeze of the PC, or a spectacular crash.

      Changing the problem domain simply changes how people approach the problem. The "essence" of the code remains the same - Adding additional layers of abstraction makes it easier to grasp at a high level, but much harder to know exactly what occurs at the actual hardware level.

      These days you never come anywhere close to dealing with the actual hardware level. Even what you deal with in a typical C program is virtualised and interpreted by microcode.

      The best computer languages abstract the hardware level in the appropriate way to allow easy coding of algorithms.

    24. Re:'do for Fortran what Java did for C.' by Anonymous Coward · · Score: 0
      do for Fortran what Java did for C

      hmm... and you left off your CØNTINUE line number for your DØ statement also.. :)

  5. Please no... by drigz · · Score: 0, Flamebait

    "Fortress will do for Fortran what Java did for C" Please no! The cruel b******s!

    1. Re:Please no... by dhakbar · · Score: 4, Funny

      b******s?

      biscuits?

  6. Math++ by Doc+Ruby · · Score: 5, Insightful

    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

    1. Re:Math++ by Anonymous Coward · · Score: 0

      Because compared to Fortran, Mathematica is dog-ass slow. MATLAB is quite usable, though.

    2. Re:Math++ by perkr · · Score: 1

      Isn't Mathematica owned by Wolfram Research? I kind of think Sun would rather roll their own stuff... Besides Fortran is THE number crunching language with lots and lots of legacy code, and lots of people know it. Mathematica takes a while to get used to with their weird notation. Mathematica is quite cool though, had to use it for a course and have to say it was nice to mix mathematical expressions with code.

    3. Re:Math++ by js7a · · Score: 1

      MATLAB was dog-ass slow, also, until they got a byte compiler six years ago. Now it is merely dog slow.

    4. Re:Math++ by gardyloo · · Score: 2, Insightful

      Mathematica is an interpreted language, so of course it's going to be considerably slower than a compiled one.

      *However*, there are ways to drastically speed up one's code in Mathematica (sometimes compiling functions or modules, using functional methods rather than procedural methods, using Range[] arithmetic, etc.).

    5. Re:Math++ by Lally+Singh · · Score: 1

      It's too straightforward. Makes people nervous.

      --
      Care about electronic freedom? Consider donating to the EFF!
    6. Re:Math++ by Florian+Weimer · · Score: 3, Informative

      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.

    7. Re:Math++ by Anonymous Coward · · Score: 0

      Almost every language is A successor to Fortran. Calling something "the" successor is a sign of someone in marketing. Kill on sight.

    8. Re:Math++ by Anonymous Coward · · Score: 0

      Guy Steele knows quite a lot about the design of languages for numeric computing. If you think Java's design choices somehow indicate that you know more about the subject than everyone that works for Sun Microsystems, you're in for one incredibly well-deserved surprise.

    9. Re:Math++ by Anonymous Coward · · Score: 0

      To be precise Mathematica has a bytecode compiler, but that doesn't really matter. Mathematica is a symbolic mathematics package, and not a real contender for the work of Fortran or MATLAB.

    10. Re:Math++ by Doc+Ruby · · Score: 1

      RTFP: "just improve the Mathematica calc engine"

      --

      --
      make install -not war

    11. Re:Math++ by Doc+Ruby · · Score: 1

      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.

      --

      --
      make install -not war

    12. Re:Math++ by The_Wilschon · · Score: 1

      So what you're saying is: the rear end of a dog moves with a lower velocity than the average velocity of the whole dog? In that case, dogs must be constantly getting longer!

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    13. Re:Math++ by Salis · · Score: 2, Interesting

      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.

      --
      Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
    14. Re:Math++ by Anonymous Coward · · Score: 1, Insightful

      Mathematica is a mixed symbolic/numeric system that does everything Fortran and MATLAB do. Arguably a whole lot more too.

    15. Re:Math++ by sketerpot · · Score: 2, Funny

      No, the dog is rotating with the ass nearer to the center of rotation than the rest of the dog.

    16. Re:Math++ by synthespian · · Score: 1

      I thought Mathematica was the successor to Fortran

      Seriously? You thought that? You thought that a symbolic algebra system is the same as a language designed for number-crunching optimizations?

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    17. Re:Math++ by Anonymous Coward · · Score: 0

      http://www.wolfram.com/products/gridmathematica/

      Mathematica product (by Wolfram Research) for running Mathematica on a Grid.

      It runs on a very wide range of platforms too apparently.

    18. Re:Math++ by synthespian · · Score: 3, Informative

      maybe even GNU Octave for those who rightly fear that proprietary software undermines freedom of research

      There is also Scilab, 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 it might change).

      (*)INSTITUT NATIONAL DE RECHERCHE EN INFORMATIQUE ET EN AUTOMATIQUE

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    19. Re:Math++ by Anonymous Coward · · Score: 0

      You mean like transforming it from a symbolics math kernel into an interface for Fortran linear algebra libraries?

    20. Re:Math++ by G3ckoG33k · · Score: 1

      "I have no idea why the folks at Sun think that Fortran is their competitor."

      Maybe because of the inroads from free (GPL) compilers such as G95 and gfortran. Remember, SUN like open source when it suits them.

    21. Re:Math++ by Doc+Ruby · · Score: 1

      I thought that many people who used to use Fortran for numerical analysis, like engineers, mathematicians and physicists, now use Mathematica instead.

      --

      --
      make install -not war

    22. Re:Math++ by Anonymous Coward · · Score: 0

      I thought that many people who used to use Fortran for numerical analysis, like engineers, mathematicians and physicists, now use Mathematica instead.

      Many of the same people use it, but both have different purposes. Fortran is for intensive floating-point operations. Mathematica is used to symbolically solve equations. Physiscists and engineers need both funtionality, but in different situations.

    23. Re:Math++ by synthespian · · Score: 1

      Mathematica is an interpreted language

      Let's have a language war!
      Maple has the algorithms from NAG for large matrix computations! (NAG = Numerical Algorithms Group).

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    24. Re:Math++ by Foole · · Score: 1

      The dog is on fire.

      --
      This is not a turnip.
  7. To the Battlements! by Anonymous Coward · · Score: 3, Funny

    Alright everybody. Man your Fortress!

    1. Re:To the Battlements! by Anonymous Coward · · Score: 2, Funny

      $ man fortress
      No manual entry for fortress

    2. Re:To the Battlements! by Anonymous Coward · · Score: 0

      What the fuck? That's not even a joke.

  8. Please Explain by uberdave · · Score: 1

    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?

    1. Re:Please Explain by drmerope · · Score: 1

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

    2. Re:Please Explain by Anonymous Coward · · Score: 3, Insightful

      its specification allows for more aggressive compiler optimizations than C. fewer aliasing issues for example.

    3. Re:Please Explain by Jrod5000+at+RPI · · Score: 5, Informative

      From the FORTRAN FAQ (http://www.faqs.org/faqs/fortran-faq/) :

      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

    4. Re:Please Explain by ikekrull · · Score: 5, Interesting

      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.

      --
      I gots ta ding a ding dang my dang a long ling long
    5. Re:Please Explain by NoOneInParticular · · Score: 4, Interesting
      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.

    6. Re:Please Explain by SorcererX · · Score: 1

      maybe they prefer the syntax, and find that they can solve their computation problems faster with it. Personally I'm pretty good at C/C++, but I still prefer to use BC for simple calculations.

      --
      Any sufficiently advanced technology is indistinguishable from magic.
    7. Re:Please Explain by afabbro · · Score: 2, Insightful

      Please modify parent -1 "Should have googled obvious question". The Fortran FAQ answers: http://www.faqs.org/faqs/fortran-faq/

      --
      Advice: on VPS providers
    8. Re:Please Explain by Rakshasa+Taisab · · Score: 4, Interesting

      For C this is true, but C++ has gained alot of ground on Fortran through the use of templates and template metaprogramming.

      Blitz++ performs very close to or better than Fortran on many numerical calculations.

      --
      - These characters were randomly selected.
    9. Re:Please Explain by Florian+Weimer · · Score: 1

      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 is much better), but this is just a minor inconvinience C programmers are used to anyway.

    10. Re:Please Explain by erick99 · · Score: 1

      Yeah...what he said.

      --
      http://www.busyweather.com/
    11. Re:Please Explain by Butterwaffle+Biff · · Score: 1
      Why do pipe stress freaks and crystalography weenies prefer Fortran?
      10 WE DON'T LIKE TYPING Z=pow(X,Y) WHEN WE COULD JUST TYPE Z=X**Y
    12. Re:Please Explain by Anonymous Coward · · Score: 0

      Surely there have been updates to both languages in the eight years since that faq was written.

    13. Re:Please Explain by Anonymous Coward · · Score: 0

      Smart people prefer dc. :)

    14. Re:Please Explain by mcc · · Score: 3, Insightful

      C++ has gained alot of ground ... through the use of templates and template metaprogramming

      The phrase "phyrrhic victory" comes to mind.

    15. Re:Please Explain by Anonymous Coward · · Score: 0

      Gee, I wonder if that has anything to do with the overhead of writing, compiling, and running a C program to do a simple calculation vs. doing the same thing in an interpreted glorified calculator environment like bc or dc. Maybe you should try learning a new interpreted language while you're at it, like Python, that you can put on your resume some day. :) I also prefer bc (or my relatively-ancient-in-computer-years TI-82 or TI-36), as it starts faster and supports big numbers, but then again, I already know multiple languages.

    16. Re:Please Explain by LWATCDR · · Score: 1

      " 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 crystallography weenies prefer Fortran?"
      A better questions is what if any advantage in terms of calculation capabilities does C++ or Pascal have over Fortran.
      Actually Fortran is easier to optimize than C but the bigger question is what do you have to grain by rewriting millions of lines of code into some new programing language? Hell there are still places using Cobol and a bunch of machine shops running their CNC software on MS-DOS for the same reason.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    17. Re:Please Explain by Anonymous Coward · · Score: 0

      Python is a baby language; it really is. When you compare its features to those of Perl or Ruby, Python just doesn't make sense.

      Python tried hard to be another Lisp, but it fell short because of stupid syntax (and I'm not talking about the significant whitespace issues). Now the effort is to get rid of its Lispness, i.e. the best features it has. Even if you disagree with that, there're still the dumbass syntax issues (now I am talking about the significant whitespace) to deal with.

    18. Re:Please Explain by Anonymous Coward · · Score: 0
      Fortran...doesn't have pointers.

      Originally, that was true, but now Fortran does have pointers.

    19. Re:Please Explain by Anonymous Coward · · Score: 0

      Fortran is used at my company because the old engineers and old programmers wrote a bunch of Fortran code and there aren't enough new guys to rewrite all the Fortran. Fortran is all these people know.

    20. Re:Please Explain by Mikkeles · · Score: 1
      In addition to the technical details about aliasing and the like (covered in the other responses) is that Fortran is fairly straightforward to learn and use by scientists and engineers (viz. non computer geeks). That is, e.g., a biologist, who is actually interested in his field of study rather than in computers or software, can in short order write a fast programme in Fortran that analyses his data or simulates his problem.

      So, he can get 90% to 110% of the same performance that a team of C gurus would get using twice the time to code (in C).

      (As a long term, reusable library, investing the time in C may make sense.)
      (Also, there were several number crunching packages based on Pascal. The symbolic maths package Maple V has a Pascal like extension language.)

      --
      Great minds think alike; fools seldom differ.
    21. Re:Please Explain by Bananenrepublik · · Score: 1

      This is wrong. Fortran has pointers. Also, arguments are usually passed by reference, so this point is not valid. But: by the language standard, you may not write something like
      CALL some_subroutine (a, a)
      if the subroutine modifies one of its arguments. So in a sense procedure arguments in fortran are equivalent to restricted pointers in C.

  9. Worst language ever?! by Anonymous+Brave+Guy · · Score: 5, Interesting
    Worst language ever. Period

    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.
  10. In my opinion by Umbral+Blot · · Score: 4, Insightful

    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.

    1. Re:In my opinion by Anonymous Coward · · Score: 1, Informative

      One is support for multiple return values, which I love.

      Have you seen the new tuple library being added to C++? See here. GCC 4.0 already supports them. At first I was reading through and wasn't that impressed, but then I saw things like:

      #include <tr1/tuple>
      #include <tr1/functional>
      using namespace std::tr1;

      tuple<int,char,double> doStuff(); ...
      {
      int a; char b;
      tie(a,b,ignore)=doStuff();
      }

      Yes, the above works. And with inlining or the named return value optimization, it doesn't slow down your program. And it shuts up those people who don't like returning data in references :)

      I was reading through the list of things already in the first library addition and got pretty excited. see here. Already added are reference-counted smart pointers (much more impressive than the usual), regexp, standarized hash tables, a new parameter binder, additional support for template metaprogramming and a few other things.

      In the pipeline for TR2 are lambda functions (see Boost.lamba, say: Function F= _1*_2) and a lot of other fun stuff.

      Heh. And Java is barely on templates :P

    2. Re:In my opinion by alfiejohn · · Score: 1, Interesting

      From skimming the language spec I saw a couple cool features. One is support for multiple return values, which I love
      Ohh, you mean like Perl?
      I also liked the fobid clause
      Ohh, you mean like Perl?

      Java runs in a VM, has garbage collection... you mean like Perl. But did you say Java isn't open source? Too bad it's not like Perl!

    3. Re:In my opinion by Ivan+Raikov · · Score: 3, Informative

      Have you seen the new tuple library being added to C++?


      He said: multiple return values. You said: have you seen the tuples library? Two distinct and very different things. Multiple return values means that a function can return several distinct first-class values that have nothing to do with each other. Otherwise, the function could just return a list. Hey, look, multiple return values!

      The distinction helps you when you want to return distinct unrelated objects that don't really belong in the same data structure, such as an error code and a value, for example. There are a million other ways in which you can do that, but this is one of the more elegant approaches.

      Multiple return values are especially useful in compiler intermediate representations, because they allow you to model certain control constructs (exceptions and continuations) explicitly. That turns out to be surprisingly useful to compiler writers.

    4. Re:In my opinion by Anonymous Coward · · Score: 0

      Perl needs to be garbage collected.

    5. Re:In my opinion by Anonymous+Brave+Guy · · Score: 1
      He said: multiple return values. You said: have you seen the tuples library? Two distinct and very different things.

      Why? Are you (mistakenly) assuming that the tuples must contain only objects of related types?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  11. Fortran's Longevity by Noksagt · · Score: 4, Insightful

    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.

    1. Re:Fortran's Longevity by Tim · · Score: 2, Insightful

      "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 fundamentally unmaintainable. No one understands what it does, and nobody wants to devote the man-years necessary to decipher the mess.

      We should be replacing these systems, not glorifying them....

      --
      Let's try not to let fact interfere with our speculation here, OK?
    2. Re:Fortran's Longevity by Decaff · · Score: 2, Informative

      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.

    3. Re:Fortran's Longevity by Anonymous Coward · · Score: 0

      This is part of a supercomputing project that Sun is working on for the U.S. government. As such, the language is probably being designed to fit this application first, and just happened to have enough cool stuff to go, "Hey, we can do research on a new language design on the government's dime, let's have at it." It'll likely be adopted for at least this one supercomputing project, so Sun has a captive audience to a degree.

    4. Re:Fortran's Longevity by Raedwald · · Score: 1
      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.

      Mod that guy +1,Funny. Fortran's longevity is nothing to do with such objective criteria, which would make it a good choice. It is because there is a whole computing sub culture (ghetto would be a better term) that simply knows nothing better. Fortran programmers program in Fortran because that was the only language they were taught, and they lack the knowledge that there could be anything better. They lack that knowledge because, despite spending considerable amounts of their time programming and using computers to run their programs, they do not think of themselves as programmers, and therfore do not fell that learning more about programming is worth their time.

      --
      Ne mæg werig mod wyrde wiðstondan, ne se hreo hyge helpe gefremman.
  12. Reminds me of another language. by DJ+Haruko · · Score: 1

    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
    1. Re:Reminds me of another language. by dr2chase · · Score: 1

      At least one of the people designing Fortress (me) did in fact buy a Matias Tactile Pro keyboard, partly because I like the keys, but more partly to get the special characters on all the key caps (the newer Matias OS X keyboard would be cheaper). One problem now (but not in the future, I hope) is buggy Unicode fonts; I've found problems with mathematical symbols in three different fonts. OS X also allows menu selection of Unicode characters if you turn on the "Input Menu" in the International control panel, but that is vastly less convenient.

  13. YAPL by Anonymous Coward · · Score: 0

    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

    1. Re:YAPL by Anonymous Coward · · Score: 0

      yet another programming language

      No. YALP would be the successor to APL, not Fortran.

  14. Matlab by giampy · · Score: 3, Insightful


    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
    1. Re:Matlab by Anonymous+Brave+Guy · · Score: 3, Informative
      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.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    2. Re:Matlab by chemistry · · Score: 1

      I don't think I would agree with the 90%. As I scientist I have used Matlab, Mathmatica, Maple, etc...but only under linited circumstances. Mostly I would say it is C/C++/Fortran...I hate Fortran. I am a computational chemist and most of our algorithms/programs would be a nightmare in a Matlab like environement. However biologist and other sciences that focus more on statistics vs. algorithms are likey to use something like Matlab. Of course I am only giving my limited opinion on the subject.

    3. Re:Matlab by brsmith4 · · Score: 1

      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, Matlab is inadequate for long-duration jobs that could easily be parallelized though it does seem to take decent advantage of threads on the sun platform. I heard some people were working on a parallel matlab, but I'm not sure how far that project has come along.

    4. Re:Matlab by Anonymous Coward · · Score: 0

      MATLAB is perfect for anything that you would use linear algebra for. If you wanted to work in statistics, you'd probably use R.

    5. Re:Matlab by SuperQ · · Score: 2, Informative

      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.

    6. Re:Matlab by imsabbel · · Score: 1

      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.

      --
      HI O WISE PRINCE. WHT TOOK U SO DAM LONG?
    7. Re:Matlab by mikael · · Score: 1

      Our research lab uses both Matlab, Java, C and C++ (depending upon the preferences of the PhD student).
      Each language has it advantages and disadvantages:

      Matlab: All the functions are prewritten, but execution of image processing operations (FFT, Inverse-FFT, image reading) is slow without the "toolbox", and there is the danger of the odd application crash. This is good enough for someone wanting to prototype algorithms.

      Java has the Java2D library - As with Matlab, all the functions prewritten, but there may be the odd bug (or rather misunderstanding on what effect a particular option has). There is the advantage of object orientated programming, but JIT compiling helps with speed.

      C was used in the past, but the lack of templates, classes and inheritance meant that list/array management for each type of data had to be rewritten. And the other disadvantage was that in many cases, the program writer would make optimisations/assumptions or add process operations unique to his/her project (images are *always* 128x128 or 256x256 for FFT operations).

      The other language used is C++, which is used for inhouse real-time applications with GUI's such as WxWidgets, Qt and MFC.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    8. Re:Matlab by Yokaze · · Score: 1

      > I'm pretty sure that Matlab uses the blas and lapack libraries that are written in good ole Fortran

      Well, at least under x86 for the matrix-kernel it relies on ATLAS, which is implemented in C/ASM.
      Then, I see , there are also libipp*. So, it also relies on Intels IPP. If I'm not mistaken also implemented in C/ASM. Finally, I recognise FFTW, also C.

      --
      "Between strong and weak, between rich and poor [...], it is freedom which oppresses and the law which sets free"
    9. Re:Matlab by brsmith4 · · Score: 1

      Ah, it uses the blas/lapack implementation in atlas... I stand corrected, sir.

    10. Re:Matlab by Anonymous Coward · · Score: 0

      Well based on my experience with universities only in science is MATLAB even a option. As an engineer I would get laughed at for using MATLAB or Mathimatica. Its either C,C++ or FORTRAN. You might get alittle Java or PERL but nothing else. They would fail you if you handed in a project in Python or anything other then an extremly fast language since most engineering applicatiions require millions and millions of calculations. OH and for real time displays and programming you better be using the fastest bloody launguage you can find. Hell for real-time displays I've seem companies ask if I knew Assembly. Lets just say I now know Assembly.

    11. Re:Matlab by Anonymous Coward · · Score: 0

      I know for a fact that in astrophysics fortran and c are used a lot, even the old fortran 77. So it is defenitly not just matlab (or mostly matlab), in fact where i study we learn mathematica (and c).

    12. Re:Matlab by jstott · · Score: 1

      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.

      I find Matlab is also a nice language for prototyping numerical codes. It has its own built-in debugger, it's interpreted so editing is fast, and its syntax for matrix and vector operations is remarkably compact. These all come in handy when you just want to play with some algorithms and see what works. On the other hand, some operations (e.g., any for-loops that it can't unroll) are egregiously slow, so I agree---once you know roughly how to proceed, you're better off scraping the Matlab code and rewriting using a compiled language.

      -JS

      --
      Vanity of vanities, all is vanity...
    13. Re:Matlab by grouse · · Score: 1

      You have any data on which you base that assertion?

      Based upon my experiences, within universities, ONLY in CS departments Matlab is NOT (yet ?) the de facto standard

      Almost no serious bioinformatics work is done with Matlab. Yes there is some, but it is far from the de facto standard.

    14. Re:Matlab by Illserve · · Score: 1

      Actually, I do "serious" science (the GP is ridiculous) and there are remarkably few loops that you can't get matlab to zoom through once you learn what kinds of things tend to cause MATLAB to slow down and tricks to get around them.

      For example, everything big has to be pre-allocated. If you're creating an array of X million items on the fly, pre-allocated it to huge a size with zeroes and then pare it down afterwards. Obviously if you ask matlab to re-malloc its array every time you add something to it, the code is going to be tragically slow.

      Also, I've noticed that if you can avoid reading elements of an array that you are putting numbers into, it can treat that array more quickly.

    15. Re:Matlab by Illserve · · Score: 4, Insightful

      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.

    16. Re:Matlab by corblix · · Score: 2, Informative
      Well, it seems to me that 90% of scientific computation today is done with Matlab and similar languages/environments (well, mostly Matlab).

      True (or nearly so -- I don't know any percentages). However the vast majority of high-performance scientific computing (i.e., large numerical model, supercomputer stuff) is done in Fortran.

      Based upon my experiences, within universities, ONLY in CS departments Matlab is NOT (yet ?) the de facto standard ....

      CS departments don't, as a rule, do scientific computing. Science departments do. CS departments do software development/engineering, algorithms, etc. In the real (non-university) world, exactly 0% of that is in Matlab.

    17. Re:Matlab by Anonymous Coward · · Score: 0

      Sorry, but the performance of Matlab for computationally expensive tasks is very poor. Based upon my experiences, many people start using Matlab, then are forced to resort to C or Fortran for practical purposes.

    18. Re:Matlab by Anonymous Coward · · Score: 0

      No offence, but designating "algorithms" as being a something only CS departments are interested in is risible.

      Also, have you never heard of inter-disciplinary research? You'd be surprised how significant the role of CS departments is in scientific computing.

      Of course, I agree with the Matlab comment.

    19. Re:Matlab by Anonymous+Brave+Guy · · Score: 1
      Btw, your attempt to divide programming into categories of "serious" and not is laughable.

      That claim might be laughable (though I don't think it is; there's a world of difference between how you code a quick and dirty prototype and how you write production code, and only fools allow one to become the other under pressure) but in any case, that's not what I said.

      My argument is that programmers working on maths projects tend to prefer programming languages, and that a large part of the reason for this is that most applications aren't purely computational even for scientific and engineering applications. Many other data structures and algorithms can be useful in manipulating your data before you perform whatever calculations you need on it and/or processing the results afterwards. Matlab simply doesn't have what it takes to do this sort of data manipulation, regardless of its mathematical abilities.

      FWIW, I don't personally agree with your performance claims, either. IIUC, your argument is basically that any code you don't hand-optimise to use only a subset of the available functionality that is efficient is slow. I'd counter that if you need to understand your implementation that deeply and hand-optimise the code to use an efficient feature set, you've already lost most of the benefits of working with a tool like Matlab and might as well use a real programming language anyway.

      However, as I tried to point out before, this whole discussion is comparing apples to oranges anyway. Matlab is a great tool for some jobs in some users' hands, and general programming languages are a different tool that have different advantages for different people. It's not like they're really in competition; they're basically aimed at very different markets, which happen to have some overlap.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    20. Re:Matlab by corblix · · Score: 1
      No offence, but designating "algorithms" as being a something only CS departments are interested in is risible.

      Yes, that was poorly stated. What I was trying to say was that CS programs and CS department research tends to emphasize what people call "mainstream" applications development, methodologies, algorithms, etc. I mean databases, web development, security, graphics, user interface, operating systems, etc. This is not Matlab stuff. Matlab and Fortran are used for computation.

      And if some CS departments have their finger in the computational science pie, well good for them, but I have yet to see one (recently) that has this as a major emphasis.

    21. Re:Matlab by Anonymous Coward · · Score: 0

      C = X
      Matlab = X - Y
      Therefore Matlab = C - Y ?

      Huh?
      Guess I better stop optimizing.

    22. Re:Matlab by Illserve · · Score: 1

      My argument is that programmers working on maths projects tend to prefer programming languages,

      That's hardly surprising given that Matlab's recent advances in code optimization are about 2 years old. It takes a good decade for an entire field to switch over to something new.

      I'd counter that if you need to understand your implementation that deeply and hand-optimise the code to use an efficient feature set, you've already lost most of the benefits of working with a tool like Matlab and might as well use a real programming language anyway.

      You only have to do this for the portions of your code that are computationally intensive. When you're done with that, you get to enjoy the large part of MATLAB's visualization techniques which will blow the doors off anything you can knock together in C.

      Note, obviously you can do anything in C that you can do in matlab, but the ease of these things in matlab means you can cut down the time it takes to explore a large dataset interactively by an order of magnitude. You can put up arbitrarily complex visualizations in 1 2 or 3 dimensions with a single line of code into an interactive shell. The effeciency this provides to a data analysis is mind blowing. To match it in C or Fortran, you'd basically end up rewriting most of Matlab's visualization tools.

      And of course if you really can't wrap your head around vectorizing your code so that matlab can run it fast, just call your C routines and then enjoy matlab's visualization for all the rest of your data analysis.

      There's absolutely no disadvantage to Matlab once you know how to use it properly. But as ever, it takes time for entrenched disciplines to change their techniques. The fact that Matlab isn't used everywhere only means it hasn't been around long enough.
      But the fact that it's gained an enormous foothold across a great tract of the scientific community in just a few short years speaks volumes to its effectiveness.

    23. Re:Matlab by babble123 · · Score: 1

      Indeed, there have been several incarnations of parallel Matlab. One of them is (Star-P) is almost at the level of commercialization.

    24. Re:Matlab by Anonymous Coward · · Score: 0

      I love Matlab, R, and similar languages, so I don't mean to knock it.

      However...

      I think what is happening in numerical computing is that there is a growing distinction between scientific computing and mathematical computing.

      What I mean by that is that there is a difference between writing code to analyze data and writing code to analyze theories, so to speak.

      The distinction is really fuzzy, and I don't mean to suggest that it's an absolute one at all.

      As I've proceeded in my research, it's gotten less and less applied--in the sense of involving analysis of data--and more and more theoretical--in the sense of creating and evaluating statistical methods. As this is happened, I've found that languages such as Matlab/R/Octave/etc.--which are superb and unmatched for analyzing data--become incredibly slow and cumbersome when used for exploring asymptotic results, etc.

      I agree with you, that Matlab and similar languages are irreplacable for analyzing data, even large datasets, and that using a lower-level language such as C/C++/Fortran is almost laughable for such uses. But when you get into very complicated, novel computations that take a month to run to evaluate, the speed issue--not to mention flexibility issue--becomes very salient.

    25. Re:Matlab by dont_think_twice · · Score: 2, Insightful

      here's absolutely no disadvantage to Matlab once you know how to use it properly.

      The cost? 6k dollars seems like a significant disadvantage to me.

    26. Re:Matlab by Anonymous Coward · · Score: 0


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


      Ok, ok, one more time:

      X = sparse matrix operations
      Y = flow control

      Any questions?

    27. Re:Matlab by Illserve · · Score: 1

      More like Y = lazy implementations of flow control.

      A for-loop, with all kinds of branches and conditional statements, when properly implemented in MATLAB, will be blazingly fast.

      I'm betting that most people trying it for the first time throw something together to test it out, break practically every vectorization rule, see some appalling speed, and write off matlab without a second glance.

    28. Re:Matlab by corblix · · Score: 1
      No offence, but designating "algorithms" as being a something only CS departments are interested in is risible.

      ... and it's also risible to expect most /. readers to know the word "risible". I didn't (risible, isn't it?). But, hey, I now know all about "risible", and now I find all those poor saps who don't know about "risible" to be utterly risible. What a great word. Risible, risible, risible. Thanks for the vocab hint.

  15. Optimisation and community, perhaps? by Anonymous+Brave+Guy · · Score: 4, Insightful
    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.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Optimisation and community, perhaps? by Anonymous Coward · · Score: 2, Insightful

      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.

    2. Re:Optimisation and community, perhaps? by mangu · · Score: 1
      Fortran ... does not use pointers


      Wrong! In Fortran, everything is pointers. Variables are always passed by reference.


      Mechanical civila and chemical engineers don't want to be bothered with allocating and deallocating memory


      So, why don't they program in C and use static arrays and matrices, just like Fortran? You don't *need* to be bothered with allocating or deallocating memory in C. You *can* do it, if you know how and want to write a more efficient program. The fact is that C allows one to write a program exactly like it was done in Fortran, but also lets people who knows better to use some improvements.

    3. Re:Optimisation and community, perhaps? by Haertchen · · Score: 1

      No. They're variables that are always passed by reference rather than passed by value. That may be the same thing to you, but to neophytes, its a whole different idea. As it stands in the most recent Fortran standard, it actually is possible to create real pointers, etc. However they are much more limited, fairly recent and not part of the base libraries. Which is a good thing for its intended purposes. From my perspective (as someone who has used both Fortran and C for numerical computing) the biggest thing missing from C is native support for complex numbers. (Don't tell me *anything* about the complex types in C++. They're really inneficient compared to native types, especially if you're executing the same loop 1000000 times.) The second thing needed is native, optimised support for common scientific functions, such as exponentiation and sin(), cos(), etc. If these could be added, then C would be comparable to Fortran in the computing arena.

  16. fortran is good as it is by Anonymous Coward · · Score: 0

    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.

    1. Re:fortran is good as it is by Anonymous Coward · · Score: 0

      Guy Steele is actually more of a Lisp and Fortran guy. But an opinion coming from someone that doesn't even know that must be quite informed.

    2. Re:fortran is good as it is by Anonymous Coward · · Score: 0

      are you idiot or are you applying for a masters in mediocrity, what the hell does it has to do with the worthless atempt to change fortran, stay on topic and go and push your snobism somewhere else.

  17. So they finally admit Java was broken? by synthespian · · Score: 4, Informative

    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
    1. Re:So they finally admit Java was broken? by imsabbel · · Score: 1, Funny

      If this prof writes code like he writes documents, i dont wanna see the results...

      --
      HI O WISE PRINCE. WHT TOOK U SO DAM LONG?
    2. Re:So they finally admit Java was broken? by Anonymous Coward · · Score: 0

      Now that was a smart comment from a Java fanboy!

    3. Re:So they finally admit Java was broken? by Jon_E · · Score: 3, Informative

      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, and a good java floating point paper is also over here

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

    4. Re:So they finally admit Java was broken? by synthespian · · Score: 1

      Wasn't this paper co-authored with Joe Darcy .. now the Java floating point czar working on Tiger (Java 1.5)?

      Yes...Funny how when he got hired by Sun his perspective on things changed, huh? All of a sudden, it ain't broken...

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    5. Re:So they finally admit Java was broken? by k98sven · · Score: 2, Informative
      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 0;
      }
      You'll get a 1 ULP rounding error:
      Result1 = 0
      Result2 = -5.55112e-15
  18. illogical name by jjeffries · · Score: 4, Funny

    One would assume that the successor to Fortran would be called either Nextran or Fivetran.

    1. Re:illogical name by Ulrich+Hobelmann · · Score: 1

      No, the successor of the Formula Translator should be something like Formula Solver, Formula Writer, or Formula Inventor.

      Everything else is just more of the same ;)

    2. Re:illogical name by zippthorne · · Score: 1

      What's wrong with Cas[tle]tran or camptran or bastilletran?

      --
      Can you be Even More Awesome?!
    3. Re:illogical name by Anonymous Coward · · Score: 0

      Formula XP, Formula.NET, Formula 2005, Formula Tournament 2005, Formula Vengeance, Formula without Floride.

    4. Re:illogical name by RedLaggedTeut · · Score: 1

      How about Fortwent, Fortswam or Fortsped?

      --
      I'm still trying to figure out what people mean by 'social skills' here.
    5. Re:illogical name by dodobh · · Score: 2, Insightful

      Alsoran

      --
      I can throw myself at the ground, and miss.
    6. Re:illogical name by Anonymous Coward · · Score: 0

      Formula Nukem Forever?

    7. Re:illogical name by Linker3000 · · Score: 1

      Fordriva?

      --
      AT&ROFLMAO
    8. Re:illogical name by Anonymous Coward · · Score: 0

      You are all wrong,
      FORTRESS for FORmula sTRESS!

      it does fit....

    9. Re:illogical name by Anonymous Coward · · Score: 0

      B-but... Fortress is a feminized form of the name, and we all know the attempt to recruit more females into the industry is a big thing these days.

      Makes sense to me.

  19. Now..... by TheDefenistrator · · Score: 1, Interesting

    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.

  20. FORTRESS AGAINST REALITY by holyshitholyshit · · Score: 2, Funny

    Times change. Fortresses fall. The fortress of FORTRAN must fall too. Let us weep for it.

  21. That's the way they've always done it. by jfengel · · Score: 1

    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.

  22. Why not APL++? by G4from128k · · Score: 2, Interesting

    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.
    1. Re:Why not APL++? by Anonymous Coward · · Score: 0

      APL++ would be a ridiculous name. It should be NAPL for Not ANOTHER Programming Language!

    2. Re:Why not APL++? by Anonymous Coward · · Score: 0

      Obviously, you haven't used Fortran in the last
      15 to 20 years. Array syntax has been a standard
      feature of language since Fortran 90. Want to
      compute the sine of all elements in array X, you
      do SIN(X). Want to add 5 to the positive elements,
      you do "WHERE(X > 0.) X=X+5."

    3. Re:Why not APL++? by TeknoHog · · Score: 1
      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 other Slashdot comments that) this idea has advantages beoynd syntax, namely in optimization. When an array operation is to be parallelized, it is nice if the language can handle the abstraction instead of forcing a serial (looping) form that would have to be painstakingly deserialized by the compiler.

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

      --
      Escher was the first MC and Giger invented the HR department.
    4. Re:Why not APL++? by babble123 · · Score: 1

      You might want to look at ZPL.

    5. Re:Why not APL++? by Anonymous Coward · · Score: 0

      Here's why not:

      When I went to college a while ago (I graduated in '75) programmers used to run around the campus with snippets of APL code saying "I'll bet you can't tell what this code does!" More than once, in fact many, many, many times, I have heard APL described as "write-only" code. The one place where I ever heard of APL being used in a production environment, requirements were that every module (function, subroutine, whatever) be written with enough comments at the beginning to be able to rewrite the entire from scratch. Programmers were given a mandate: if you can't find the bug within 20 minutes, delete everything after the comments and rewrite it from scratch!

      This is certainly enough to doom it to obscurity forever.

  23. Solving the wrong problem by radtea · · Score: 2, Interesting

    "...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.
    1. Re:Solving the wrong problem by synthespian · · Score: 1

      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.

      APL has been superseded by J. IMHO, J will not catch on, not because of the syntax. In fact, APL and J syntax are a feature, not a bug. But J is proprietary, and has small mindshare. So, no, it won't catch on...This is a mistake some people still make...We're not in the 80s anymore.
      APL inventor Kenneth Iverson has passed away, but J has not been released into an open source form.

      Mathematica historically has had a lot of bugs, AFAIK, because the way it was implemented was to write everything in C. Maple, OTOH, first implemented a small language (Maple), and everything else was written in Maple itself, thereby reducing the number of bugs.
      I'm not a user of Mathematica, one has to follow the tradition at their school, and at mine, people prefer Maple; but the few the integrations answers I saw (Calculus I class) had somewhat bizarre answers. Maple had answers that were equal to those done "by hand."

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    2. Re:Solving the wrong problem by beliavsky · · Score: 1

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

      Many equations that you want to code involve arrays, and in Fortran 90 and later versions one can often write a single line of code such as

      xsum = sum(x,x>0.0)

      instead of

      xsum = 0.0
      do i=1,n
      if (x(i) > 0.0) xsum = xsum + x(i)
      end do

      Fortran 90/95 code does look more like math than its predecessors, and I think that's an advantage.

  24. Do they understand why Fortran is liked ? by aepervius · · Score: 4, Insightful

    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
    1. Re:Do they understand why Fortran is liked ? by mbkennel · · Score: 1

      (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 definitely better than C or Java in many cases, is hard enough.

    2. Re:Do they understand why Fortran is liked ? by synthespian · · Score: 1

      Indeed a search of the spec says "no attempt at backward compatibility/this is a new language with little relation to fortran"

      You really seem to be one of those people who can't really tell the difference between programming languages.

      How can you reconcile features like proper tail cails optimisation, first-class functions, and type inference with Fortran? These things are the very result of 20 years of programming language evolution that have been largely ignored by the non-functional programming communities. That is to say, unless you've been keeping up with the functional languages - which means you're a C/C++/Java/etc programmer -you don't understand that these are some of the features that now allow you to code as-a-human, instead of code as-a-machine. Not inherent to all of these features (e.g., Haskell's case), but not opposite to them, is the possibility of crafting compilers yielding optimized, near-C performance code. These are the lessons from SML, OCaml, Clean, and modern Common Lisp compilers.

      If you've been sleeping for the past 20 years, Guy Steele hasn't.

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    3. Re:Do they understand why Fortran is liked ? by SnowZero · · Score: 1

      Well if Java is a guide, they will have something called FNI, which will not be automatically generated in any way, will push all of glue code into Fortran (rather than in Fortress), and allow you to easily screw up the VM. But that's just a guess...

    4. Re:Do they understand why Fortran is liked ? by SnowZero · · Score: 1

      These are the lessons from SML, OCaml, Clean, and modern Common Lisp compilers.

      There were also lessons from their language design, which Java mostly ignored.

      If you've been sleeping for the past 20 years, Guy Steele hasn't.

      Then how do you explain Java being crappier feature-wise than pretty much every functional language? It doesn't even get all of the features from a pure-OOP language like smalltalk either. It took 10 years of thought after C++ to come up with something marginally better? On the bright side though, at least it isn't unityped...

    5. Re:Do they understand why Fortran is liked ? by synthespian · · Score: 1

      Then how do you explain Java being crappier feature-wise than pretty much every functional language?

      My guess is that it's Gosling's fault, since he was the main designer AFAIK. IIRC, Steele was brought in late in the game - and I would guess - probably because they (Sun) screwed up so badly.

      --
      Main difference between the BSD license and the GPL license: one is from California and the other is from Massachusetts
    6. Re:Do they understand why Fortran is liked ? by SnowZero · · Score: 1

      That's an excellent point, and something I hadn't thought about. We'll just have to see how he does when he gets to start with a clean slate.

  25. The dubious whitespace rule is... by Anonymous+Brave+Guy · · Score: 2, Informative

    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.
    1. Re:The dubious whitespace rule is... by tomhudson · · Score: 1
      ... which is why they wre able to say this:
      'do for Fortran what Java did for C
      ... since Java makes C look good! (and yes, I am a true believer in simpler == better)
  26. Do for Fortran what Java did for C? by Ulrich+Hobelmann · · Score: 1

    Doing enough bad things to it that I still use C in preference?

    So many people will go on coding Fortran.

    1. Re:Do for Fortran what Java did for C? by Bill+Dog · · Score: 1
      Wow, I've never agreed so much with a comment on /. as this one. When faced with learning a new programming language or library or technology, it's never even occurred to me to think oo, this is hard, I'll just give up and call it "evil". I just do it. It's what I'm paid to do. I don't even think of sitting and crying as an option.

      All these babies entered the field when HTML was considered "programming", and they think because Java is all they know, it's the pinnacle of programming and all that they should have to do. But why would I hire them, when I could hire high school kids at minimum wage to just as easily program in it?

      --
      Attention zealots and haters: 00100 00100
    2. Re:Do for Fortran what Java did for C? by Anonymous Coward · · Score: 1, Funny
      The Real 1337 H4x0r will not use a programming language that has efficient well-defined built-in threading, extensive class libraries, fast easy automatic memory management, highly optimizing dynamic compilation, portability, wide range of applicability, exception handling that allows robust programs and error recovery, excellent modularity, and other such bull.

      The 1337 H4x0r laughs at high level languages, as he hard codes his algorithms using a soldering iron and a pile of transistors.

      On the rare occasion that the 1337 H4x0r uses a programming language, he won't be caught dead using a good language. He refuses to touch anything that actually helps write good software. No progress is allowed in the 1337 H4x0r's mind. Horrors like type checking or anything that prevents buffer overflows is "castration" to the 1337 H4x0r.

      He will select the most cumbersome language he can find.

      Because only that will let the 1337 H4x0r prove he is Da Man!

      Good tools are for bad programmers. Good programmers use the worst tools they can find. Only that allows them to prove they are Real 1337 H4x0r.

    3. Re:Do for Fortran what Java did for C? by dghcasp · · Score: 2, Informative
      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 slashdot about how cool I am because I used Duff's device in hand coded assembly because I didn't like how to the compiler optimized my code. I also don't have a manual choke in my car, do my laundry on a washboard, sparge my own malts, or still use an email bang-path from ihpn4!... anymore.

    4. Re:Do for Fortran what Java did for C? by David's+Boy+Toy · · Score: 1

      If your chasing down your own memory leaks your not l33t. Thats why I say people need to learn there profession. Atleast in C++ there is no excuse for memory leaks what so ever. In C memory leaks are still a sign of sloppy coding, although its easier for them to squeek by. In C++ you can use the STL and smart pointers where speed isn't super critical. But you can still hand code memory allocation/pointer code when you need to, encapsulating it cleaning in a class. At a high level C++ really doesn't need to look any different than Java, but at a low level you can still go down the the metal. I've got multi threaded C++ server code on linux that runs for years at a time without leaking memory. I've never run it through a memory leak checker, I just coded it without ever using new/delete/malloc/free in the high level code. It has plenty of special purpose code using new/delete/pointers encapsulated in classes where its easy to keep track of stuff.

  27. HEY, MODERATORS by Anonymous Coward · · Score: 0

    In my earlier post I may have come off as a troll

    Mod this guy's previous post -1, troll. Thanks.

  28. Okay, so by mcc · · Score: 1

    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.

    1. Re:Okay, so by Anonymous Coward · · Score: 0

      But I can't look at PDFs where I am now.

      Some of the other treatment I can understand, but banning PDFs??? Guantánamo is starting to go too far.

    2. Re:Okay, so by Screaming+Lunatic · · Score: 1
      Is this language compatible with Java? Can it / is it designed to live on a Java virtual machine, or interact with Java?

      I doubt it. In Fortran all variables are value-types. In Java all variables are reference-types (well, except for primitives).

      As mentioned in other posts, value types are very important for optimization of mathematical code.

      1) The compiler doesn't need to worry about aliasing. Two references may refer to the same piece of memory. Hence that piece of memory may change behind the compiler's back. Hence the compiler must reload the variable being referenced into registers everytime there is a read.

      2) Accessing memory contigously is much faster than accessing memory non-contigously. The JRE does not guarantee that arrays of objects will be allocated contigously. Heck, the JRE doesn't guarantee anything since it is not an ANSI/ISO/ECMA standard legalese like other languages/environments (C, C++, CLI, C#, Fortran, Ada, etc).

    3. Re:Okay, so by Urusai · · Score: 0

      After reading about the language D http://www.digitalmars.com/d/index.html I'm thinking C++ really is hosed.

  29. 'do for Fortran what Java did for C.' by forgoil · · Score: 4, Insightful

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

  30. Fortress's big new deal: parallel-by-default loops by js7a · · Score: 3, Informative
    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.

  31. FORTRAN won't be replaced. by kc01 · · Score: 2, Insightful
    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....)

  32. Re:MORE JAVA!? by Ulrich+Hobelmann · · Score: 1

    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.

  33. Couldn't help but notice by theguyfromsaturn · · Score: 5, Funny

    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?)
    1. Re:Couldn't help but notice by Speare · · Score: 1

      I found Why Microsoft can Blow-Off with C#, but the images appear to have gone stale or something.

      --
      [ .sig file not found ]
  34. Copyright Infringement! by Fortress · · Score: 3, Funny

    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.

    1. Re:Copyright Infringement! by RPoet · · Score: 1

      You cannot copyright a word. You may be thinking about trademark infringement.

      --
      "Oppression and harassment is a small price to pay to live in the land of the free." -- Montgomery Burns.
    2. Re:Copyright Infringement! by Anonymous+Brave+Guy · · Score: 1
      You cannot copyright a word.

      Nah, you just missed the memo. This is 2005, and you can copyright anything. Mwahahahaha!

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  35. Matlab Syntactic Salt and Performance Sludge by yerdaddie · · Score: 2, Interesting

    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.

  36. AC Flaimbait? Well why not.... by CSMastermind · · Score: 1

    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.

  37. Developed by Sun? by Anonymous Coward · · Score: 0

    According to Sun, all code should be written in Java. Why do they need another language?

  38. It's perfectly logical by Anonymous Coward · · Score: 0

    They are using PacMan logic. Remember the successor to PacMan was Ms PacMan? Thus, the successor to Fortran is Fortress.

    1. Re:It's perfectly logical by Anonymous Coward · · Score: 0

      Not MisFortran?

  39. Do for Fortran what Java did for C? by David's+Boy+Toy · · Score: 2, Insightful

    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?

  40. Time. by zippthorne · · Score: 1

    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.

    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 .net, but that doesn't mean it's not used.

    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?!
  41. Guy Steele, eh? by xgamer04 · · Score: 1

    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?
  42. do for Fortran what Java did for C by wideBlueSkies · · Score: 1

    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?
  43. Unicode Operators? by erikharrison · · Score: 2, Interesting

    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.

    1. Re:Unicode Operators? by GeekDork · · Score: 1

      Technically, there is no "= vs. =="-problem, that's what some languages have =, <- or := operators for and what computer science theory has been teaching for ages.

      --

      Fight hunger. Filet a politician and send him to a 3rd world country of your choice.

  44. Application vs tool by NoseBag · · Score: 2, Insightful

    "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.
  45. co-author of Java? by Anonymous Coward · · Score: 0
    Guy Steele, a co-author of Java and member of the Fortress development team

    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.

  46. Please stop the hatin! by Dante+Shamest · · Score: 1

    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! ;)

    1. Re:Please stop the hatin! by cartel · · Score: 1

      Every widely used interface that's been developed for it - namely Swing and SWT - run a lot slower than native C++ GUIs. Also, Swing looks terrible, and you have to start the programs from the console. Java's alright, but those things need improvement.

    2. Re:Please stop the hatin! by jaakko · · Score: 1

      > They said it was slow and consumed too much memory!

      > Look at Java today!

      Yeah, uh... It's even slower and consumes even more memory?

    3. Re:Please stop the hatin! by Anonymous Coward · · Score: 0

      True, Swing is a shining example of OO gone mad.

      Try out SWT, it's far better

  47. Thanks for the link by Anonymous Coward · · Score: 0

    Interesting read thanks for the link

    CrazyEngineer

  48. Here's what's cool by goombah99 · · Score: 2, Interesting
    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 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.
    1. Re:Here's what's cool by goombah99 · · Score: 1
      Oh I forgot to mention automatic Dimensional typing. namely if I were to divide a variable of type meters with one of type seconds then I get a variable of type (meters/second). these will be real types so that other parts of the program can type check. Now that will make the mathematical error checking really tight.

      Obviously one can get something like this with overloads on operators but that can become prohibitive in C++ since one can imagine multiplying and dividing many things on a single line of code and in many possible permuations with many possible parenthetical clauses. This will take care of this. In particular Mass*Distancs*Distance/seconds will be the same type as (Distance/seconds)*mass*distance. Trying to do that by overloading * would make you puke.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    2. Re:Here's what's cool by Anonymous+Brave+Guy · · Score: 2, Interesting
      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 you know what f, g and h are. That does not improve readability, and it sure as hell isn't going to improve your maintainability and/or bug count.

      Please see other people's replies in the discussion for realistic mathematics-based examples where it requires contextual knowledge for a human reader to disambiguate the syntax.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:Here's what's cool by Anonymous Coward · · Score: 0

      Well first I'm glad there are some intelligent commentors aout there, but the knee jerk was pretty accurate summary of the level of discussion here. Best I could do in a sentence. In any event, We both know these design specs are not cast in stone. And in fact I dont see how they can have both white space multiplication and white space delimiting in function args. IN fact from what i have read there will not be white space delimiting in functions. All the example I saw used commas. So I suspect you are mistaken. In any event, the design goal is not clean code like it is in python. the desing goal is mathematical looking code. So I suspect they will keep the space delimited multiplications.

    4. Re:Here's what's cool by Anonymous Coward · · Score: 0

      Maybe nobody's reading this story, but it is unfortunate when a very informed comment is not moderated as such.

    5. Re:Here's what's cool by Anonymous+Brave+Guy · · Score: 1

      Blockquoth the AC:

      And in fact I dont see how they can have both white space multiplication and white space delimiting in function args. IN fact from what i have read there will not be white space delimiting in functions. All the example I saw used commas. So I suspect you are mistaken.

      Hmm... Section 2.3.6, "Function applications", says (emphasis added):

      If a function takes a single argument, the surrounding parentheses may be elided. For example, an application of the single argument function:
      sin(x)
      may be written as:
      sin x

      I'm guessing this is where the example someone mentioned (2 sin x log log x) comes from.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    6. Re:Here's what's cool by Anonymous Coward · · Score: 0

      Oh okay. well that special case is one that's eminently readable and parsable.
      We know that's so because that's how we humans do it when we write down things.

      if I write
      4 sin x
      it's not ambiguous.

      If I write
      4 sin x y

      it is ambiguous so we use parens.

      anyhow i'm pointing out the obvious. if its not ambiguous in standard math notation its not ambiguous in computer notation, ergo it's parsabale.

    7. Re:Here's what's cool by Anonymous+Brave+Guy · · Score: 1
      if its not ambiguous in standard math notation its not ambiguous in computer notation, ergo it's parsabale.

      Indeed, but what about something like f g h?

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  49. CFD by mnemonic_ · · Score: 1

    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?"

  50. F90 sounds like APL++ by G4from128k · · Score: 1

    (*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.
  51. One less dereference for each var access by HornWumpus · · Score: 1
    In addition to all the above mentioned points regarding compiler optimizations.

    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'
  52. If it is it's dead. by HornWumpus · · Score: 1
    FORTRANS successor running on a VM!?

    I think not.

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  53. Dataflex by HornWumpus · · Score: 1
    I think a COBOL programmer got very very drunk with a basic programmer (the old line number basic).

    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'
  54. Shouldn't that be: "....like what Java did for C++ by Univac_1004 · · Score: 1
    Java is a good implimentation of C++ .

    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.

  55. Python to the rescue by utopicillusion · · Score: 3, Informative

    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.



  56. Java has some extremely clever tricks. by rhizomania · · Score: 2, Informative

    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

    1. Re:Java has some extremely clever tricks. by Decaff · · Score: 1

      Java does have some extremely clever tricks, and I'm surprised that more beople don't use them.

      You are right! I was thinking more of things like multiple inheritance and operator overloading, but reflection is very nice, and newer features like Proxy classes and bytecode manipulation libraries can be hugely powerful.

    2. Re:Java has some extremely clever tricks. by Kent+Recal · · Score: 1

      Well, one reason why many people avoid reflection in java is because it's slow. At least it was that way when I checked last time...

    3. Re:Java has some extremely clever tricks. by Decaff · · Score: 1

      Well, one reason why many people avoid reflection in java is because it's slow. At least it was that way when I checked last time...

      I find this a problem. So often on Slashdot I encounter people who comment on Java as it was 5 years ago!

      Reflection is now fast in Java. It has been since Java 1.4.

    4. Re:Java has some extremely clever tricks. by Kent+Recal · · Score: 1

      But how fast is fast?

      When I tried (admittedly it was a 1.3 JVM) most reflection calls would incur a delay of >100ms (some up to 500ms!) on a >1GHZ box.

      If that situation has improved dramatically it could really be a useful tool for on-the-fly things. Back then it was pretty much limited to discovering stuff during init because you wouldn't like that kind of performance hit at runtime...

  57. Re:Fortress's big new deal: parallel-by-default lo by Salis · · Score: 1

    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 /. tagline: "On the eighth day, God created FORTRAN." And it was good.
  58. I don't thinks so--not with Sun involved by cahiha · · Score: 2, Interesting

    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.

  59. Re:fp by Anonymous Coward · · Score: 0
    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.'
    So it's going to make Fortran look good?
  60. cure in search of a problem? by Lawrence_Bird · · Score: 1

    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.

  61. Blitz++ is far from being user-friendly by Krischi · · Score: 2, Interesting

    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.

  62. If anybody can do in Fortran, it's Guy Steele by alispguru · · Score: 4, Informative
    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.

    --

    To a Lisp hacker, XML is S-expressions in drag.
  63. Fortran not broken... Lets fix it!!! by Anonymous Coward · · Score: 1, Interesting

    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.

  64. News Flash: Sun Reinvents Wheel!!! by BigFootApe · · Score: 1

    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!

    1. Re:News Flash: Sun Reinvents Wheel!!! by Anonymous Coward · · Score: 0

      EQUIVALENCE caused me 4 weeks of grief. Prof hands the tape(as in it needed a reel-to-reel machine) that contains code written in FORTRAN IV and says "Get this running on a modern system". I had no FORTRAN experience and mediocre C skills(I'm an EE)
      The original coder had decided to use EQUIVALENCE to save memory when subroutines ran but unfortunately overwrote needed memory. Apparently when you use EQUIVALENCE with an array, the x'th entry in the array become equivlent to the x'th variable defined after the variable the array was set equivalent to. For hours I'm like, "WTF is this variable changing?!?!" when my debugger broke on memory change.
      Of course, there were many other wonderful features. LIKE ALL CAPITAL CHARACTERS, FOR EVERYTHING. The fact that all code started on column 6. Comments were denoted by a C in column 0. Lines longer than 80 characters were extended onto the next line denoted by a 1 in column 5. The wonderful BASIC style line numbers(GOTOs and everything). Great times when I had to add a line between statements 514 and 515.

  65. Give it up, Java Weenies! by Frumious+Wombat · · Score: 5, Informative

    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
    1. Re:Give it up, Java Weenies! by dvdeug · · Score: 1

      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.

      The ease of programming? RATFOR was easier to program in than Fortran; considering it was just a preprocessor to Fortran, that was the only reason to use it. Except for those who know only Fortran, I wonder that any of the above was harder to program in than Fortran.

      PL/I, RATFOR (of course), Ada, Matlab and arguably C++ have complex numbers as a fundamental data type.

    2. Re:Give it up, Java Weenies! by Frumious+Wombat · · Score: 1

      Does C++ now? I remember years of programming examples on how to implement a complex type into C++, which then ignored the problem that Fortran also had exponentiation, multiple-precisions, etc, already defined.

      I'm sorry (truly) that Ada didn't catch on like it should have, as I was trained in VAX Pascal, and am still more comfortable with Pascal-family languages. It's especially strange when you consider that Ada's syntax and F90's are remarkably similar.

      Maybe the problem is that the language has to be named Fortran before scientists will use it?

      --
      the more accurate the calculations became, the more the concepts tended to vanish into thin air. R. S. Mulliken
  66. Sun has competition by babble123 · · Score: 3, Informative

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

    1. Re:Sun has competition by Anonymous Coward · · Score: 0

      a language called X10

      So they're the bastards behind all those banners ads!

  67. MATLAB is written in C, not java. by Ayanami+Rei · · Score: 1

    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
    1. Re:MATLAB is written in C, not java. by Salis · · Score: 1

      I've used the command line option from a remote terminal, but I wonder how much functionality still works without the GUI. Can you still plot figures /etc? Something to try.

      --
      Favorite /. tagline: "On the eighth day, God created FORTRAN." And it was good.
    2. Re:MATLAB is written in C, not java. by Anonymous Coward · · Score: 0

      The plots goes to your X-server; that works the same in both
      remote and local work.

    3. Re:MATLAB is written in C, not java. by joib · · Score: 1

      Works just fine without the gui. However, the help browser in the GUI is quite good. Might be that the help pages are stored as html somewhere though, so you could read them with any web browser? And of course, the editor that comes with the GUI is close to useless, use the matlab.el matlab-mode for emacs that floats around the net somewhere..

  68. "do for Fortran what Java did for C"? by mordejai · · Score: 1

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

  69. Oh, really? by Anonymous Coward · · Score: 0

    "[Some dude] hopes that Fortress will to 'do for Fortran what Java did for C.'"

    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 .ne. readable), but I think the way to go is to build on C++ rather than reworking 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.

  70. This ain't gonna fly by melted · · Score: 1

    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?

  71. Re:Shouldn't that be: "....like what Java did for by mikeoconwarp · · Score: 1

    Assembly is the *only* low-level language! anything that has to be compiled is enefficient!

  72. COBOL Better for Business Apps Than Java by Anonymous Coward · · Score: 0
    COBOL has fixed-point math buIlt-in and is a natural language for accounting applications. In contrast Java still requires libraries (and much debate over which ones) to do useful financial work.

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

  73. -1, Useless Nitpick by gumpish · · Score: 1

    You're right... instead of

    "first mainstream language"

    grandparent SHOULD have written

    "first relevant language"

    1. Re:-1, Useless Nitpick by Anonymous Coward · · Score: 0

      "Relevant" how?

      Relevant to Java fanatics?

      "Sure others were first, but they don't count".

    2. Re:-1, Useless Nitpick by Anonymous Coward · · Score: 0

      [sarcasm]You're right - Basic and Pascal are clearly useful outside of a classroom, as evidenced by their widespread use in the field, solving real world problems.[/sarcasm]

  74. Com'n SUN! by aqk · · Score: 1

    05 COMMENT PICTURE X(63) VALUE IS "Com'n Sun- next give us a worthy successer to COBOL and RPG!" COMPUTATIONAL-3.

  75. C# tries to fix these... by cahiha · · Score: 1

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

    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 .NET platform proprietary, and anything coming out of Microsoft is cause for concern, but this may still work out.

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

    1. Re:C# tries to fix these... by Anonymous Coward · · Score: 0

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

      Er, WTF? OCaml's implementation of parameterized types is similar to that of C#, not to Java's clumsy model based on casting everything to objects. Perhaps you'd like to explain what your objection to it is?

    2. Re:C# tries to fix these... by cahiha · · Score: 1

      OCaml's implementation of parameterized types is similar to that of C#,

      No, it's not. C# generates specialized native code of parameterized methods for type parameters that are primitive types or value classes. O'CAML doesn't even have value classes, and it side-steps the issue for primitives by not really having primitives.

      And, whatever O'CAML does, it just isn't all that fast for numerics.

      I wish it weren't so. I wish the O'CAML developers would add value classes and that they would treat type parameters like C# does. But they don't.

  76. Optimisation and language syntax by iangoldby · · Score: 3, Insightful

    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.

  77. Do for Fortran what Java did for C? by try_anything · · Score: 1

    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.

  78. Homage by Senor_Programmer · · Score: 1


    "...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?

  79. There are no silver bullets for performance by Anonymous+Brave+Guy · · Score: 1
    This is years out of date!

    No, it's not. The theoretically impossible has not magically become possible because of a few more years of hype.

    Optimised Java does not need to do bounds checking, and does not have this overhead. The Hotspot technology does run-time analysis so that the ranges of loops and potential value limits of variables are determined. This means that bounds checking can be removed in almost all cases.

    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.

    The Hotspot optimiser does things that no C compiler can ever do - it can determine at run time the best order for machine code instructions for best use of pipelines in certain processors.

    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.
    1. Re:There are no silver bullets for performance by Decaff · · Score: 1

      No, it's not. The theoretically impossible has not magically become possible because of a few more years of hype.

      Yes it has, because the original post said that Java always needed to do bounds checking. Please don't label actual advances in IT 'hype'.

      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.

      This is not the way Hotspot works. Please go and read about the technology before posting! It does NOT instrument the code this way.

      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.

      You are putting a lot of your own assumptions here: firstly. that monitoring has significant overheads (it doesn't) secondly that optimising at run-time is in some mysterious way automatically inferior to optimising at compile time. The reverse is obviously correct, as run-time optimising is based on evidence of how the program is actually running, not some kind of prediction about how it might run.

      I would, in return, please ask you to look at actual benchmarks and evidence rather than simply publishing your own opinions.

    2. Re:There are no silver bullets for performance by Anonymous+Brave+Guy · · Score: 1
      Yes it has, because the original post said that Java always needed to do bounds checking.

      Java does always need to do bounds checking. That's part of the language spec. Obviously, well-optimised code will minimise the number of independent places where extra logic is needed to provide the required guarantees, but sometime, somewhere, it is still being done. The same is true of checking dynamic types, etc.

      This is not the way Hotspot works. Please go and read about the technology before posting! It does NOT instrument the code this way.

      I didn't say it did; I was simply illustrating the performance hit that actively monitoring code without hardware support typically introduces.

      BTW, before you start making assumptions of your own: I'm very familiar with the ideas behind Hotspot. I write high-performance code for a living, so any potential methods to significantly increase that performance are of immediate interest. I've been monitoring the development of Hotspot, and in particular the approach it's taken to adaptive optimisations, for years.

      firstly. that monitoring has significant overheads (it doesn't)

      That's amazing! The state of the art in software-based profiling technology still incurs massive run-time overheads, yet Hotspot is able to identify highly-used code (and while running as an interpreter at first, too), gather the same sort of information about how it's being used as the profiler, and then perform more aggressive optimisations than a static code generator that's not constrained by how long it takes to run, all without significant overheads? They should file a load of patents, and then release the best C++ profiling tools in the world!

      secondly that optimising at run-time is in some mysterious way automatically inferior to optimising at compile time.

      There's nothing mysterious about it at all. You incur the run-time overheads necessary to identify the code worth optimising, to monitor the contexts in which that code is used, and then to generate the optimised code. Any optimisations you find there must then be more efficient than the statically-optimised equivalent, just to make up for the run-time overheads. Once you've reached that point, then you can start going faster.

      I have always acknowledged that reaching that point is possible. What I'm questioning is how often you're ever going to get the necessary combination of factors in reality.

      The reverse is obviously correct, as run-time optimising is based on evidence of how the program is actually running, not some kind of prediction about how it might run.

      It's not obvious at all. You are assuming that there is sufficient scope in the extra optimisations you can identify based on run-time analysis to make up for and then exceed the time required to gather the necessary information and then perform those optimisations.

      I would, in return, please ask you to look at actual benchmarks and evidence rather than simply publishing your own opinions.

      I'd love to, but I notice you haven't yet replied to the other post that asked you to cite any such benchmarks or evidence. In the absence of that, having extensive experience of producing tightly optimised code in other languages for a living, and having been monitoring Sun's progress with this technology for years, I can only conclude that common sense has not completely left the building, and while Hotspot may improve things, it's probably not the revolutionary step forward you seem to believe it is.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:There are no silver bullets for performance by Decaff · · Score: 1

      There's nothing mysterious about it at all. You incur the run-time overheads necessary to identify the code worth optimising, to monitor the contexts in which that code is used, and then to generate the optimised code. Any optimisations you find there must then be more efficient than the statically-optimised equivalent, just to make up for the run-time overheads. Once you've reached that point, then you can start going faster.

      You have just summarised Hotspot.

      That's amazing! The state of the art in software-based profiling technology still incurs massive run-time overheads, yet Hotspot is able to identify highly-used code (and while running as an interpreter at first, too), gather the same sort of information about how it's being used as the profiler, and then perform more aggressive optimisations than a static code generator that's not constrained by how long it takes to run, all without significant overheads? They should file a load of patents, and then release the best C++ profiling tools in the world!

      I'm assuming that they are going to. This is far easier with Java than C++ as it is a simpler language.

      It's not obvious at all. You are assuming that there is sufficient scope in the extra optimisations you can identify based on run-time analysis to make up for and then exceed the time required to gather the necessary information and then perform those optimisations.

      For a typical program the run time is hugely greater than the compilation time. A compiler can run as a low-priority background thread and still gather enough information to do a good job.

      I'd love to, but I notice you haven't yet replied to the other post that asked you to cite any such benchmarks or evidence.

      This is a lazy answer. I'm assuming people can use google. Just go to www.javasoft.com and look it up! All the information about Hotspot is there.

      As for benchmarks, why not simply try code yourself? If you want evidence, the LinPack benmarks are freely available. Try them.

    4. Re:There are no silver bullets for performance by Anonymous+Brave+Guy · · Score: 1
      You have just summarised Hotspot.

      Indeed I did. I summarised how it works, and the conditions necessary for it to provide a real world improvement in performance. I then contended that these circumstances aren't particularly likely in realistic code.

      A compiler can run as a low-priority background thread and still gather enough information to do a good job.

      No, it can't. That's my point. Look at what it takes just to gather that information in the specialist profiling context I mentioned before. You cannot have this for free, no matter how much you might wish it. Background threads still require processor time. Gathering enough information to do adaptive optimisation still requires a lot of processor time. Where are you magically getting this time from?

      This is a lazy answer. I'm assuming people can use google. Just go to www.javasoft.com and look it up!

      Which part of that site do you think I haven't read many times before? I don't care about trivial benchmarks. The usual LinPack stuff is about as trivial as you can get, and I already dealt with that in an earlier post.

      What I want is a real example of a non-trivial application where Hotspot actually shows Java seriously outperforming properly compiled native C or C++. Just show me one example of such an application, from any context. If you can, I'll be happy to take a look, and to admit that I've been too harsh on the technology in this discussion.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  80. skip thread; read docs & hear talk by dankelley · · Score: 1
    As a scientist who has used pretty much all the languages, I started by reading the thread. Much of it is keyed to the "java and C" phrase, but this does little to inform about Fortress itself, so I hopped to the webpage http://research.sun.com/sunlabsday/talks.php?id=55 and skimmed the PDF and then listened to the talk. Hm. Night and day. The /. thread tells me this is junk (I'm a java hater), and the actual docs tell me that this is really quite promising.

    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.

  81. Re:Fortress's big new deal: parallel-by-default lo by js7a · · Score: 1
    Fortran 95's forall statment explicitly disallows side-effects (like incrementing a scalar), so it only has vector-processing style parallelism. Fortress, on the other hand, has no such restrictions and offers atomic memory operations, so incrementing a scalar inside a parallelized loop will accurately count the number of executions. I do not know if the where statement has the same kind of restrictions.

    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.

  82. Fortress is Sun's strategy to sell parallel server by synthespian · · Score: 1

    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
  83. Some Actual Successors by Anonymous Coward · · Score: 0

    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