Forgot your password?
typodupeerror
Programming IT Technology

Should Undergraduates Be Taught Fortran? 794

Posted by CmdrTaco
from the or-spend-it-building-forts dept.
Mike Croucher writes "Despite the fact that it is over 40 years old, Fortran is still taught at many Universities to students of Physics, Chemistry, Engineering and more as their first ever formal introduction to programming. According to this article that shouldn't be happening anymore, since there are much better alternatives, such as Python, that would serve a physical science undergraduate much better. There may come a time in some researchers' lives where they need Fortran, but this time isn't in 'programming for chemists 101.' What do people in the Slashdot community think?"
This discussion has been archived. No new comments can be posted.

Should Undergraduates Be Taught Fortran?

Comments Filter:
  • by sharkette66 (256044) on Thursday June 11, 2009 @07:50AM (#28291847)

    But only if they have to do it on punch cards, like I did. Give each student a can of WD40 to keep the machines working smoothly, too.

    • Nah, make them learn VB6, if for no other reason for enjoying the screams of horror from 'real" programmers when they come across some VB6 app. Take that, real programmers! For extra evil teach them GOTO. I've found watching the facial ticks and foam build up around the mouth from real programmers when they encounter a GOTO to be quite entertaining!
    • Re: (Score:3, Insightful)

      by maj_id10t (725114)
      I too had to learn FORTRAN (it was v77 then) as part of my undergraduate degree as did my now wife. We were both studying Environmental Engineering. There are many US Federal government agencies (e.g. EPA) who have mathematical models that are programmed in FORTRAN as per the federal regulations mandate. For those students who will be studying to work in this field it makes perfect sense for them to study FORTRAN. There are no plans I am aware of to update these environmental modeling programs from FORT
      • by v1 (525388) on Thursday June 11, 2009 @01:26PM (#28297557) Homepage Journal

        I specialized in programming languages in general in school. I'm one of those people that can honestly say he has forgotten more languages than most people will ever learn. While fortran isn't a language I ever intend to use, having learned it was a useful experience. Other odd languages like lisp, algol, assy, sequence/state, etc, also provide you with unique insight into how to do things. I occasionally run into problems today where I think "that would be SO much easier to do in (name a language)", and that gets me to thinking of how to modify the simple solution in the other language to the language I'm currently working with. It's a bit like the towers of hanoi problem, it seems dreadfully complicated until you realize that done correctly the solution is very simple, and you just need to change your point of view.

        This also makes you extremely flexible. I have absolute confidence that I can sit down at any new job using any language I've never so much as heard of before, and be able to read and understand the existing code immediately, write useful code that same day, and be highly proficient with it in under a week. The only reason I can do this is I've "seen it all" for the most part and so I've already beaten the basic obstacles like "object oriented", "pointers", "procedural based" etc that a new language might throw at me and would at least temporarily derail/disorient another newbie.

  • Oh come on. (Score:5, Funny)

    by geminidomino (614729) * on Thursday June 11, 2009 @07:50AM (#28291849) Journal

    --No one-- should be taught FORTRAN. Ever...

    *sobs in fetal position*

    • Re:Oh come on. (Score:5, Insightful)

      by Opportunist (166417) on Thursday June 11, 2009 @08:00AM (#28292009)

      Right. Teach COBOL instead!

      Job security well into the next millenium!

      • The Mayan Long Count Calendar turns over in 2012 [today.com]. Mayan date 12.19.19.17.19 will occur on December 20, 2012, followed by the start of the fourteenth cycle, 13.0.0.0.0, on December 21st.

        The event was first flagged by megalith scientist Terence McKenna. The end of the thirteenth cycle would break many megalith calculations — which conventionally use only the last four numbers to save on standing stones — with fears of spiritual collapse, disruption of ley lines, Ben Goldacre driving the chiropractors back into the sea and the return of the great god Quetzalcoatl and the consequent destruction of all life on earth.

        Megalith programmers from 4000 years ago are being dredged up from peat bogs and pressed into service to get the henges updated to handle the turnover in the date. "It could be worse," said one. "I could still be programming COBOL."

    • by scubamage (727538) on Thursday June 11, 2009 @08:06AM (#28292095)
      Yep, real men use ADA.

      ...And drink very heavily.

    • Re:Oh come on. (Score:5, Interesting)

      by mabhatter654 (561290) on Thursday June 11, 2009 @08:15AM (#28292215)

      but for math geeks FORTRAN is probably the easiest language to get from pencil-n-paper to computer. Math functions in FORTRAN translate nicely from their paper counter parts. If you can do math and "show your work", or punch numbers in a calculator, you're 2/3 of the way to a FORTRAN command line program.

      I don't think it's a useful first language anymore. Something like Python would be more useful "out of college". FORTRAN is really easy to pick up later anyway as it's "old fashioned" and line numbered based. I'd think the biggest problem teaching the class now would be getting students to take it seriously because it's a much older way of thinking about programs from our modern OOP languages.

      • Re:Oh come on. (Score:4, Interesting)

        by beelsebob (529313) on Thursday June 11, 2009 @08:24AM (#28292385)

        but for math geeks FORTRAN is probably the easiest language to get from pencil-n-paper to computer. Math functions in FORTRAN translate nicely from their paper counter parts. If you can do math and "show your work", or punch numbers in a calculator, you're 2/3 of the way to a FORTRAN command line program.

        Yes, but with a good functional language like Haskell, you're 9/10 of the way there, not 2/3.

    • Re:Oh come on. (Score:5, Interesting)

      by beelsebob (529313) on Thursday June 11, 2009 @08:23AM (#28292371)

      Indeed, even the creator of Fortran said "actually, that was a shit idea, we should all ignore it and use functional programming instead" in this paper [stanford.edu].

    • by golodh (893453) on Thursday June 11, 2009 @09:16AM (#28293339)
      Lets face it: Fortran (even Fortran-90) might not be fashionable, but it's a lot simpler (and therefore quicker and easier to learn) than C++, much faster than Python, and it lends itself well to the implementation of massive calculations.

      It's definitely not a language for amateurs in the sense of people who like to fiddle with the system, are interested in how the compiler works, or who just want to make gee-whizz web mashups. It's a language for people who don't care a rat's *ss about computers or programming, but who need to get their calculations done without wasting time on fiddling with pointers and who need reliable answers without being bitten by silent array-boundary overflows to boot. So Slashdot might not be the best place to ask for an opinion.

      Besides, most of today's numerical libraries (BLAS, LAPACK, ATLAS, EISPACK, FFT) are written in Fortran. If you want to use them, you could do worse than learn Fortran.

      True, it's not a language you'd want to do sophisticated datastructures in, or tree-searches or text-processing or payroll accounting or database manipulation. But especially chemists (and to a lesser extent physicists) have more call for numerical software than they have for non-numerical software.

      So no. It's not at all ridiculous to teach Fortran as a first programming language to non-computer-science students. Alongside Matlab (or Octave or Scilab) it will do fine for chemists.

    • Re:Oh come on. (Score:5, Insightful)

      by Z00L00K (682162) on Thursday June 11, 2009 @09:42AM (#28293725) Homepage

      Fortran has it's place, even though it's a bit of a fringe language today.

      It has evolved since Fortran 77, and is better. It's also one of the languages where it doesn't require the programmer to have a detailed knowledge about how to parallelize a problem since later versions has those features built in. The programmer just have to be aware that it can be parallelized, but not waste time on the details about how to do it. Unfortunately GNU Fortran doesn't support this yet (unless it has been enabled lately).

      Python is certainly not an alternative - unless you want to have a replacement for Basic.

      Education shall primarily be done in type-safe languages that forces the developers to learn the importance of type safety. Way too many bugs have been created through history that are related to operations that aren't type-safe. Ada is one language that is really strict. Java is acceptable. C# is not acceptable since it has some unsafe parts when it comes to data typing.

      And Visual Basic should be taken out, shot, drowned, burnt and sterilized for all it's abilities to make things unsafe and bug-ridden.

  • How would you learn? (Score:4, Interesting)

    by CRCulver (715279) <crculver@christopherculver.com> on Thursday June 11, 2009 @07:51AM (#28291855) Homepage
    Are there any cheap but quality tutorial for Fortran? O'Reilly has no contemporary introduction to the language and their last book on Fortran, Migrating to Fortran 90 [amazon.com] , came out nearly two decades ago.
    • by wireloose (759042) on Thursday June 11, 2009 @07:55AM (#28291927)
      google Fortran tutorial download

      How new does the book need to be for the language standard when it hasn't changed much in 2 decades? It's a simple, easy to use tool for serious engineering.
      • by bunratty (545641) on Thursday June 11, 2009 @08:33AM (#28292525)

        How new does the book need to be for the language standard when it hasn't changed much in 2 decades? It's a simple, easy to use tool for serious engineering.

        Actually, Fortran has changed quite a bit in the last two decades. The Fortran 90, Fortran 95, and Fortran 2003 [wikipedia.org] standards have come out during that time. They added quite a number of major features, such as free-form source code, recursive procedures, operator overloading, dynamic memory allocation, and object-oriented programming. The Fortran of 2009 is not like the Fortran of 1989 at all.

        • Re: (Score:3, Interesting)

          by wireloose (759042)
          I really just meant from Fortran 90 like the previous poster. 95 is really pretty minor in changes. 2003, yeah, big changes. How many systems are likely to have 2003 on them? I can usually find a Fortran 90 compiler freely available for lots of platforms, and lots of the companies I know that use it use 90 or 95 because they had it already for their older legacy hardware. Specifically, I prefer Gnu and its current production release (4.30) really isn't 2003 compliant yet. http://gcc.gnu.org/onlinedocs [gnu.org]
    • by oldspewey (1303305) on Thursday June 11, 2009 @07:56AM (#28291947)
      All the good tutorials are on punch cards, so unless you have a reader handy you're SOL.
  • by wireloose (759042) on Thursday June 11, 2009 @07:51AM (#28291859)
    Fortran is still one of the best, fastest, most optimized tools for number crunching. It's also very easy to write simple programs in it. No way I'd use Python for serious large data set numerical calculations.
    • by MathFox (686808) on Thursday June 11, 2009 @08:10AM (#28292147)
      First I wonder which Fortran you refer to; Fortran 66 is quite a different language from Fortran 95. I agree that all Fortran variants are pretty good languages for number crunching, but Fortran 77 and older lacked support for data structures, making it hard to teach students about them and advanced algorithms in general. (Yes, I've tried.) Fortran 90 and 95 are much better in those respects. On the other hand: C and C++ are not so far behind in speed to rule them out.

      It is my opinion that learning two fundamentally different languages makes someone a better programmer. I see value in teaching both Fortran and (for example) Python, using Fortran for number crunching and Python for smarter algorithms.

    • by ChienAndalu (1293930) on Thursday June 11, 2009 @08:10AM (#28292159)

      Use both. I used Fortran to create some python modules at my last job, and it was dead easy. Take a look at this [cens.ioc.ee].

    • by jstults (1406161) on Thursday June 11, 2009 @08:17AM (#28292251) Homepage

      Fortran is still one of the best, fastest, most optimized tools for number crunching.

      Agreed.

      It's also very easy to write simple programs in it.

      This is a strength of Python too.

      No way I'd use Python for serious large data set numerical calculations.

      It's not either/or, with F2Py you can put your inner loops in Fortran, and deal with the higher level abstractions with Python. So you get fast number crunching and all the 'batteries included' too.

    • by aaaaaaargh! (1150173) on Thursday June 11, 2009 @08:23AM (#28292357)
      Mod parent up. Students should learn to choose the right tool for the right purpose and not be drawn into stupid "my language is best" discussions. Python is too slow for serious number crunching and Fortran is widely in use for exactly this purpose. Python is suitable for many other tasks, though. To give another example, if somebody studies astronomy and will have to work with old legacy Forth code, he should better be taught to program in Forth at university. And somebody who needs to quench maximum speed out of hardware or wants to implement compilers should better learn assembler. I've studied linguistics and learned to program in Prolog and Common Lisp at University, now what's wrong with that? Both are still widely in use in NLP and you need to no the basics of them when you're working in that domain even if you don't use them.

      In my experience the majority of people that think that advertise one programming language above all others tend to have no clue about programming languages in general and what other languages exist apart from mainstream languages like C/C++ or Ruby, and I'm afraid this holds particularly for Python and Java enthusiasts---both of which are relatively mediocre and outdated languages in terms of their general features and usefulness, although they can of course be the right choice for many tasks.
      • ...if somebody studies astronomy and will have to work with old legacy Forth code, he should better be taught to program in Forth at university...

        This is exactly the wrong reason to teach any programming language. You teach a language to teach programming concepts and methodologies, and so you use languages that emphasize the concepts you want to teach.

        You don't teach a language so someone will know it later. That makes no sense at all.

        The plus of teaching Python is that it's a badass OOP language with clean and simple syntax. It's an excellent language for conveying object oriented methodologies.

        You learned Lisp and Prolog? I learned Scheme and Prolog. Wasn't because anyone thought I'd ever actually professionally program in those langauges, it's because they represent different paradigms, and, as a student, I learned something from seeing the different types of programming languages.

        After you've mastered the basics, you go out in the world, and use the right tool for the job. For all that you argue against fanboyisms, you commit a few of them yourself. Keep an open mind.

    • Dude... (Score:3, Interesting)

      by Balinares (316703)

      ... You're WAY behind the times.

      I got a buddy who is an astrophysicist and worked at NASA, and he tells me his department ditched FORTRAN years ago in favor of Python+Numeric.

      I hear you about the need for badass number crunching tools. It's your assumption that only FORTRAN fits that particular bill which is erroneous.

      Not to say that FORTRAN doesn't have its use. It's just that other tools have since become better at some of those.

      Python Numeric homepage [scipy.org]. Check it out.

  • How about Cobol? (Score:3, Informative)

    by PIPBoy3000 (619296) on Thursday June 11, 2009 @07:51AM (#28291861)
    Ironically we're doing an implementation of a "new" HR system and a big chunk of it was written in Cobol. We have one guy past retirement age who knows it, but otherwise the bulk of our developers just know those fancy new languages.

    Some of those older languages have a surprising amount of life left in them, out in the real world.
  • Python is hard too (Score:3, Interesting)

    by vikstar (615372) on Thursday June 11, 2009 @07:53AM (#28291891) Journal

    Isn't as hard to write fast python code as fortran code? When you're paying large money for supercomputer time, your multi-day molecular dynamics simulations better run quickly.

  • So what? (Score:4, Insightful)

    by bsDaemon (87307) on Thursday June 11, 2009 @07:53AM (#28291897)

    Does it really matter what language they're taught in? They should be learning the concepts of programming, not just a language. However, FORTRAN has the benefit of already having a large existing code base and deployment in the field in which students in those particular disciplines are studying. There's no reason for them NOT to learn it, and if they feel like learning Python later, then then may. Python isn't the solution for every god damned thing in the world, even if it can do it.

  • Disclaimer: I went to the University of Minnesota for my BS and George Mason University for my MS both in Computer Science and I didn't learn one single thing about Fortran other then that it existed. People in other disciplines around me (ME, EE, etc) seemed to bitch about 77 versus 44 or whatever--I was too busy studying to care.

    What do people in the Slashdot community think?

    The easy route is just to let them teach what they want to. Professors will talk and push whatever they feel is valuable and they sure the hell aren't going to listen to a Slashdot user half their age that will get on his knees and write Java for an extra buck. If you get a whack job professor teaching only archaic languages, the University will probably hear complaints from alums about getting into the job market and wishing they had learned R instead of Fortran. I don't know about the other engineering programs but I'd sure rather be a master with R than Fortran. Is Fortran more efficient? Depends on if you're talking about cycles or amount of time it takes to write a quadratic sieve for prime numbers.

    I had to learn C and I actually like plain jane C in all its simplicity. I think colleges should stick to a low level language for numerical computation courses (in my case C but I believe Fortran would function fine), an intro course to an interpreted language like lisp scheme perl whatever and should of course offer full courses in whatever is the latest craze for usable languages like C++, Java ... maybe even Ruby?

    I wager this will be a hot debate and I think it's fine if people want to teach Fortran, I learned scheme and I've never used it in my professional work! Just so long as when they enter the job market, they're prepared.

  • by lkcl (517947) <lkcl@lkcl.net> on Thursday June 11, 2009 @07:55AM (#28291919) Homepage

    i spoke to someone studying engineering in 1990 who was being taught fortran. they were using a mathematical library that would solve partial differential equations, by presenting the user with the actual mathematical formulae to them.

    these kinds of libraries are staggeringly complex to write, and they have been empirically proven over decades of use to actually work.

    to start again from scratch with such libraries would require man-centuries or possibly man-millenia of development effort to reproduce and debug, regardless of the programming language.

    so it doesn't matter what people in the slashdot community think: for engineers to use anything but these tried-and-tested engineering libraries, that happen to be written in fortran, would just be genuinely stupid of them.

    • by UID30 (176734) on Thursday June 11, 2009 @09:13AM (#28293277)
      Awwww c'mon. This is just plain silly. Since the late 80s, "Fortran" on most major computing platforms has been nothing more than front end language parser for a multi-pass compiler system ... just like "C" and "Pascal". Whatever language you choose, they all pass their assembly output to the same back-end assembler, and binary machine code generated is pretty generic.

      Back when I was in college, I maintained a Fortran77 program that was a custom built TCP/IP client-server system. But wait! F77 didn't know what a socket was! right. The network code was written in C and compiled into object code which was directly linked into the F77 project.

      Great. So there are these massive libraries written in Fortran to do wonderful things. Best case scenario is you can link them directly into your language of choice. Worst case, call them from the scripted language of your choice with a wrapper ... Swig [swig.org] anyone?

      Bottom line? Program in what you are comfortable with. Would your peers would frown on your efforts if you learned anything but ALGOL? Fine. Use ALGOL. There are valuable lessons to be learned in any language. Strong vs weak typed, functional vs object oriented, structure, best practices ... hell, how to write "fast" code. I've been a programmer for near 20 years and I'm still learning that lesson on a daily basis.

      The surest way to corrupt a youth is to instruct him to hold in higher esteem those who think alike than those who think differently. - Nietzsche

  • by sigxcpu (456479) on Thursday June 11, 2009 @07:55AM (#28291925)

    If all you need is to crunch numbers, Fortran is a good choice even today.
    It might not be the best language to introduce someone to computer science, but it is very powerful for anything that has to do with matrix operations.

    A few years ago in a physics graduate course we had a simulation project which left the choice of language to the student.
    We compared performance between implementations in C C++ and Fortran.
    Fortran was consistently faster by a big margin.
    It's also very easy to learn.

    That said, I do most of my coding in C.

    • Re: (Score:3, Interesting)

      by NekSnappa (803141)

      My first engineering class after leaving the Marine Corps in '86 was a 3 credit hour class that met twice a week. The first class each week focused on engineering graphics (drafting), the second was Fortran 77 programming.

      The computers in the lab were, I believe, 286 based Epson machines with dual 5.25" drives, running MS-DOS. As an added bonus our "development environment" as you say now, was edlin!

      At that time I had no personal experience with computers. I didn't know the difference between the OS, the

  • by rotor (82928) on Thursday June 11, 2009 @08:00AM (#28291993) Homepage

    There's no problem for teaching Fortran if it's the right tool for the job. It was 13 years ago that I took Fortran in College. It went great with physics and modeling courses. These days I write web-based database apps in Java/Perl/whatever language-du-jour is required of me, but I wouldn't want to use many of these languages for scientific purposes. I'll leave that to Fortran and C.

  • by ZenGeek (98904) on Thursday June 11, 2009 @08:04AM (#28292047)

    I work at a university research lab and Fortran is still very much present. If nothing else, students need to be able to work with legacy code. I agree, however, that new projects should make use of more modern languages. Special consideration should be given to functional programming which naturally fits many science problems and is easily parallelizable due to its "no side effects" philosophy.

  • PYTHON???? (Score:5, Insightful)

    by Fantom42 (174630) on Thursday June 11, 2009 @08:08AM (#28292127)

    Are you serious? Python?

    I am somewhat a Python fan boy. I love it. Its freaking wonderful for prototyping and really has a great, natural flow that reminds me a lot of pseudocode I might just invent on a napkin. Great language. But its also a factor of 30 times slower than a compiled language like C.

    (http://www.osnews.com/story/5602/Nine_Language_Performance_Round-up_Benchmarking_Math_File_I_O/page3/)*

    And Fortran is able to do optimizations (due to differences in the language for evaluation of expressions) that C is unable to do. This has to do with guarantees of ordering that Fortran does not give that C does. My point is that Fortran is even faster than C. Why do you think its still around?

    The physical sciences aren't using a fast language because they are bored, or obsessed with speed for the hell of it. They use them because the problems they solve are typically deep into polynomial space, like O(n^3) or O(n^4). Having something 30 times faster means they can run 30 simulations instead of just 1. It makes a big difference to them.

    I think the author of this article has lost some of this perspective.

    That said, what this article should have tackled is, what do we want to teach engineering students about computer science? Right now, they take a class that teaches them C++, Java, Python, or whatever. They get some procedural programming skills with maybe a little tiny bit of object-oriented stuff (without really covering OO fundamentals IMHO, which are a more advanced topic) and they are thrown into a world where they are writing code in C for embedded controllers or Fortran for computational codes. As a result, there is a huge body of code out there written by people who know how to get the job done, but don't exactly write code that is very maintainable. They relearn the lessons of CS he hard way over 10-20-30-40(?) years of experience. Are we really giving these young students (who are not CS majors) what they need? What kind of curriculum would be ideal for someone who is going to end up writing code for something like a robot control system in C?

    * I didn't really look too closely at this particular source, but I've seen numerous benchmarks all saying the same thing. If you want a surprise, go look at how LISP stacks up compared to C. It is better than you think.

    • Re: (Score:3, Insightful)

      by slim (1652)

      You're advocating premature optimisation.

      Now, I'm speaking from a position of ignorance about Fortran - but I'm guessing if it were as expressive as a modern scripting language (Python, Ruby, Groovy etc.) then it would be more generally popular.

      The new scripting languages are *so* condusive to exploratory programming, it seems to me a no-brainer that undergrads would benefit from learning one. When speed becomes an issue, optimise whichever 1% of the routines are taking up the time.

    • I'm a scientist who does the bulk of his programming in Python. Numpy (the numerical package for Python) runs at only a 30% overhead over C. When that's not fast enough, I drop into C/C++ for bottlenecks and wrap that back into Python (using the Python C API more often than swig/boost). When there's a great Fortran library that's fast and battle tested, I wrap that into Python using F2Py--and I don't even know that much Fortran.

      Just like it's good to know more than one spoken language, it's good to k
  • by SpinyNorman (33776) on Thursday June 11, 2009 @08:10AM (#28292153)

    IMO universities should be teaching core principles and methods, not attempting to impart up-to-date job skills.

    If you are going to teach FORTRAN because it's of use in the real world, then why stop there? Why not also (god forbid) teach .NET. JavaScript, C#, etc. May as well teach them Excel macros and how to interact with Microsoft Clippy while you're at it.

    No!

    Teaching programming should be done in a langauge that imparts the principles easily and teaches good habits. You could do a lot worse than Pascal which was often used in this role, or maybe today just C++. I'd argue against Java and scripting languages as the core language since they are too high level to learn all the basics. You could throw in Perl, Python or any modern scripting langauge as a secondary, and for a Computer Science (vs. Physics, Engineering, etc) it's appropriate to teach a couple of other styles of programming - e.g. assembler, and functional programming.

    • by Rhys (96510) on Thursday June 11, 2009 @08:30AM (#28292483) Homepage

      We're not talking CS here, we're talking Engineering. Teaching them a specific language used in their field /is/ teaching them core principles and methods. Think of it like a basic diffeq class, giving them the tools to be able to learn their field, as opposed to more advanced math classes that underly diffeq.

    • IMO universities should be teaching core principles and methods, not attempting to impart up-to-date job skills.

      IMIO, Fortran is not about "imparting up to the date job skills" as much as showing students a powerful tool to accomplish a high-level task that they'd otherwise have to learn more programming to do - and that takes from time spent with the science they are trying to learn.

      Just because something is real does not make it a "trade skill" with al of the scorn you heaped upon it bountifully.

  • by Churla (936633) on Thursday June 11, 2009 @08:19AM (#28292293)

    Nail guns have been around for a while, but a lot of houses still get built with hammers.

    If a simple tool does a job efficiently and effectively then why "change for the sake of change"?

    • Re: (Score:3, Insightful)

      by Jawn98685 (687784)
      Errrmmm..., you haven't built many houses, have you? If you had, you'd know that nail guns are far more efficient for most fastening tasks. Even the fastest old-school framer or roofer with a hammer can't come close to keeping up with a worker armed with a nailer. Yes, there are tasks where the nailer won't do the job; because it's to big to fit into the work area, or because the work demands a level of precision that the nailer can't provide. Both cases represent a tiny fraction of the set. So to, I guess,
  • by laxsu19 (1256044) on Thursday June 11, 2009 @08:20AM (#28292315)
    I am a manager in a highly technical organization that relies on computer codes to do our job. In my experience, there isn't ENOUGH FORTRAN teaching in the college level. Maybe its location based, but most of our new-hires (we get most from the northeast, but still get a noticeable amount from as far away as University of Washington, Univ of Hawaii, and USC) actually are NOT taught FORTRAN and instead are taught something object-oriented, typically C++ or Java. I know for a fact that Penn State suggests C++ for all undergrad engineers (FORTRAN is offered though - the classes hold less than 50% total students than does the C++ course). In my organization we also have a 'double-hump' age distribution: lots of people ready to retire (or could have retired 5 years ago...) and lots of people who are within 5 years of their first day on the job. This creates a problem of knowledge management; our new guys need to know the details of the FORTRAN code they are using every day to the extent that our ready-to-retire guys know it, and fast. If they are not taught FORTRAN, this creates an even larger learning curve for them which isn't desirable. So one option would be to 'rewrite the code for the future generation'.. We definitely do not have the resources to rewrite our workhorse codes that have been in use and development since the 70s. I don't know if an organization as large as Microsoft could rewrite Windows in a new language. Also, we can't retire our old codes because they are still actively needed to respond to emergent issues (it is easier to maintain the codes than it is to make a new model to be inputted into a new code). So, our hands are tied (mine specifically!) and my organization actually needs MORE FORTRAN programmers coming from the university just to maintain the status quo.
  • Sillyness (Score:5, Insightful)

    by T.E.D. (34228) on Thursday June 11, 2009 @08:35AM (#28292565)

    This was clearly written by someone who doesn't actually do any scientific computing.

    As hard as it may be for some CS-types (myself included) to believe, Fortran is still the language for scientific computing. I've worked at flight simulation companies for two different companies (and 5 different groups) for the last 15 years. The math required to simulate a flying aircraft in realtime is ungodly hairy. It also has to get done fast. We typically have 50 or so different simulation models (plus all the I/O) that have to run to completion 60 times a second. That's about 17ms, or 8ms if we want %50 spare. In addition, for a realtime app like a simulatior it needs to take the same time to execute every time (no runtime dynamic allocations, GC, etc.) or things "jitter".

    Everywhere I've worked, with the exception of Ada mandated jobs, had this code done in Fortran. Yes that includes today. We are today writing new Fortran, and we are not alone. When we request models from the aircract manufacturers, they come in Fortran (or occasionally Ada). Fortran is still, and quite possibly always will be, the language for Scientific Computing.

    Suggesting non-CS math and science students learn some other programming language instead is just wrong. Further suggesting that it should be the author's favorite hip new interpreted languge is just laughable.

    • Re:Sillyness (Score:5, Informative)

      by apoc.famine (621563) <<apoc.famine> <at> <gmail.com>> on Thursday June 11, 2009 @10:20AM (#28294313) Homepage Journal

      I'll add a "+2" to this. My background is in Astrophysics, and the coding there is largely done in Fortran. The friends and people I know spread between 4-5 different universities all program in Fortran. I'm moving into Geophysics/Atmospheric/Oceanic sciences, and all that work is done in Fortran. From fluid dynamics to stress fault calculations, Fortran is the de facto language.
       
      To be clear, we're not talking about programming here. We're talking about math. Pure, hardcore, overwhelming math. The crunching of terabytes of data. Matrices with millions upon millions of cells, being combined with more of the same.
       
      If we were talking about pure programming, Fortran is a terrible language. What we're talking about here is automating massively complex mathematical calculations on enormous amounts of data.

  • by dw_g (627284) on Thursday June 11, 2009 @08:47AM (#28292801)
    I'm an engineer with a large aerospace firm. All our major programs are in Fortran and have to be used, modified, and maintained. I remember a few years ago we hired a new grad from MIT; she had studied Basic, Pascal, and C; so of course we had to teach her Fortran so she could do her work. The engineering world is heavily dependant upon Fortran, and to not know it puts you at a huge disadvantage.
  • by 93 Escort Wagon (326346) on Thursday June 11, 2009 @09:11AM (#28293229)

    The Elders feel that if they had to go through it, so do the young'uns gol durn it!

    Seriously, though - as far as I know, Fortran has always been the language of those humonguous numerical models because of its optimizations with regard to array handling. I think it makes perfect sense as a first (or second) language for science majors. However I imagine the person asking this question is likely one of the young'uns being forced to learn it; and that person doesn't really have the perspective as to *why* this is so. After all, he's been hacking around in C and Python for years - they're in his comfort zone and have been good enough for the sorts of things he's been dealing with.

There is no royal road to geometry. -- Euclid

Working...