views:

535

answers:

8

At my current place of employment there are a handful of maybe two to three employees that add and maintain functionality of legacy fortran77 code. When I was first hired I briefly considered trying to become fluent in the ancient language, soon after I changed my mind.

This conclusion came from a combination of reasons; initially I admit the steep learning curve pushed me away. (Directly related to having a majority of my experience programming in a much higher language. Not so much that Fortran had advanced complex functionally that was mind-boggling. ) But even after I began to develop a trivial understanding of the language I found that I never had any useful ‘projects’ I could contribute. Which lead me to the realization, what good would Fortran77 be on my application if I were job searching again? It occurred to me that, unless I was interested in maintaining legacy code that some unknown long since retired employee had written thirty+ years ago, I should spend my time learning a newer, more utilized, language.

Google trends makes an interesting graph, to my point, when given Fortran.

Also interesting to note is that the combined sum of Fortran tagged questions on stackoverflow is less than 100 at the time of this post.

So what new projects and applications are suitable for a groundwork built in Fortran? Is there a large need for Fortran engineers to develop new products, or mostly to maintain old code? Has anybody heard of any recent application development surrounding Fortran?

Ultimately, is the return worth the investment in learning Fortran for a new engineer these days?

+1  A: 

I think learning new languages in general is always a good thing. That said, if you're learning to enhance your own value (and not just for the fun of it), it's probably better to just learn something a little more relevant/in demand in your job search area. This will give you a better return for your time investment, IMHO.

Robert
+5  A: 

A qualified yes but mostly no...

For me Fortran is used similarly at work it is possibly worth the investment since it makes you better at your job. However as a purely academic exercise I wouldn't think so. In my understanding is nothing makes it especially important to learn from a stand point of personal improvement.

If it will really help in your job its worth it to familiarize yourself with any language. They are all so interrelated its not that big a deal to learn a new language if it helps you at work.

But for purely academic language learning work on something fun like Haskell or something that can help to you build your understand of the hardware like assembler or C.

A similar post with some good information can be found here.

Copas
+3  A: 

...is the return worth the investment...

If it interests you then yes. Period.

Colin Burnett
Yep, the return on investment depends on the interest rate. Wait, are we talking Fortran, or finance?-)
Alex Martelli
Usually all programming languages interest me. So its not a question of if it interests me. I'm wanting to know if in today's market-place learning Fortran is a good move for building your career profile for a new engineer entering the field.
Gnatz
If it interests you then learn it. Having a broader understanding of languages is always a benefit, not a hindrance. Your question is nowhere near the decision like journalism vs. physics. If you want to learn it, put it on your list, prioritize to your own life, and pick it up when you get a chance. It's as simple as my answer.
Colin Burnett
+1  A: 

I think it depends on where you want to be. There are a lot of older systems that were developed in Fortran and need to be maintained. There's probably a lot of money in this.

But if you want to be cutting edge (and possibly less stable..) then learn Java or C#, or Ruby/ PHP/ ASP.NET for web dev.

ChristianLinnell
+1  A: 

Does your boss think it would be helpful to him/her? Not to be a total brown-nose, but this person should have an immediate impact on your situation and it makes sense to make their job easier.

If there are other languages you can put to use at your job, learn those.

Although FORTRAN may not open any job opportunities, the fact that you learned the language needed to do your job shows you're capable and you care. You don't want to be sitting in your next interview describing your current tech. situation and mention the use of FORTRAN which you have zero understanding (OK, you could probably avoid that with little effort.).

I learned FORTRAN in grad. school, created one app (Couldn't get it to compile on Win98) and haven't used it since - no regrets.

Jeff O
+12  A: 
ldigas
+1 for thorough answer
Paul Morie
Answers: Industry: Aviation (engine development and testing.)The learning curve was steep for me because the majority of my programming experience is in python, perl, java, and other higher-level languages. I’m would not say incomprehensible, more tedious and just generally different then my experience with other languages.I’d like to hear of the development and what is going on with new Fortran applications. That’s one primary reason I posted the question.
Gnatz
That comic is wonderful.
Tim Whitcomb
+1 for not just thoroughness, but for saying everything I would have said (and more) better than I would have said it.
PTBNL
+1 Great answer !
Magnus Skog
If you're, on the other hand, interested in development of the language, and where is it going, you could take a look at comp.lang.fortran, on usenet - there are several people there that were or still are were highly influental in evolution of the language as it is today. They certanly know more about it, and would probably answer all your questions if nicely asked.
ldigas
+3  A: 

I work in high-performance computing and numerical weather prediction, and we are definitely using Fortran for new and old projects. I can't speak for other shops, but I know that several of us use Fortran 90 exclusively, but there are many that still use FORTRAN 77 because it's what they know, what they're comfortable with, and apparently things like dynamic memory allocation, and free-form formatting aren't important to them.

If you're in one of these areas where it's prevalent, I think it would be useful to have a basic reading knowledge of the language. Even when the paradigm moves from pure Fortran from beginning to end to something like Python for the high-level control and Fortran for the "hard" parts, knowing your way around will suit you well. Depending on previous language experience, I don't think that would be too difficult to pick up.

While there is still development and ongoing work in the Fortran language itself (e.g. Fortran 2003), I'd be thrilled if we finally got everyone caught up to Fortran 90!

Tim Whitcomb
+1  A: 

Like @Idigas, I was going to comment on "steep learning curve," which made me chuckle.

But then I realized what's hard about Fortran (and old-style BASIC, and assembly language) to a modern programmer is the discipline to prevent the code from turning into spaghetti.

Is that what you meant by learning curve? Because both Fortran and BASIC seem like languages you pick up in an afternoon.

Nosredna
Yes, the famous arithmetic GOTO and the "spaghetti al dente" programming. Fortran90 took care of those that 20 years ago ... like Tim Whitcomb said, "I'd be thrilled if we finally got everyone caught up to Fortran 90!". And what's even worse, people don't realize how useful "that GOTO" was for several decades. For some things it is still today a most effective solution (not the arithmetic one, but the GOTO).
ldigas
Some versions of BASIC had a computed goto also.
Nosredna
No, I'm not arguing that point. I'm not arguing any points actually. Just pointing out that modern fortran has solid features for code organization (there is a better term than "code organization", but it's late and I can't remember how it's said in english)
ldigas
I think perhaps I should edit the post. It reminded me of assembly, which I had to use in college. Assembly wasn't hard to learn once you get past idea that it isn't your favorite scripting language. But it took me some time to get into the correct mindset.
Gnatz