Argh! - I lost another post when I hit submit and was timed-out by forum! :x
(Hope the site update takes care of this - that was my best post ever :roll: )
Anyway - what I meant to say earlier and lost my focus - was there is no good reason to not program in Fortran - just mix programming languages to implement those features Fortran is weak on: GUI, Web, DB.
Python is an excellent language - and since it is imperative it has similarities with Fortran (so infact does Java - but its C/C++ syntax and its strong OOP support are probably going to throw you - rest assured if you know Fortran fairly well then you actually understand the concepts, just have to get around the syntax).
F# is a functional (mixed actually) language, so its syntax and methodology is different. However, most people find this simpler and more efficient - especially when implementing numerical methods.
F#'s numerical support is even better than Fortran's. It has built in big integer and arbitrary sized rational arithmetic support and its syntax matches the way we write equations much better than an imperative language. It even includes unit of measure.
Python is nowhere near as robust in this area. You can add extensions (numpy, etc.), but these add complexity, are still often slow and are not often stable.
It is also designed to be interpreted (though there are compiled versions - it is not well optimized for such) and thus is far slower than Fortran when it comes to many number crunching apps. What takes minutes now may take hours in Python.
Once you get past F#s own cryptic syntax ( |> and the like - which is designed for terseness, not intuitive clarity) and learn to program using functions passed to functions and even recursion it is very powerful and very intuitive and does things in very few lines of code compared to other high-level languages. And F# is fairly fast - likely comparable to Fortran. As a bonus, it supports parallel (multi-threaded) programming with almost no effort - which can make it even faster on most modern CPUs (multi-core/hyper-threaded)
As a full fledged member of the .NET family of languages it is supported by MS and all the tools are free (Visual Studio Express and .NET platform are all that is required - and the professional version is usually given away free at no-cost MS conferences whenever a new version comes out). It can directly interact with any other managed code language (C#, J#, VB.Net, A# , etc.) and call code from other compiled languages (C, C++, Fortran, etc. - there is overhead and caveats to this method, but it works really well).
This means it also has direct access to OpenGL, DirectX, ADO and ASP and all the other goodies of the .NET platform. And the tools are excellent with intellisense, project setup, debugging support, etc. Plus any knowledge here is directly transferable to the other .NET and Visual Studio languages.
Since I lost my original post this one is not as succinct - but, my point is that if I were to choose between Python or F# for your application domain (scientific) - I would try F# with Fortran. Since you can call your compiled Fortran directly from F# code and pass data (not so easy to do in interpreted Python) and F# has better buit in numerical support likely to be needed for later translation (if you so desire). Not to say Python isn't a great language - it just wouldn't be my first choice in this instance, unless I was working with other Python programmers.
FYI - Fortran.NET also exists - but it is not MS and it is not free (or even cheap). Also, IronPython is available for .NET (written in C#), but I have yet to try it (and it likely lacks the stability and support of F#, which has been in development for 5 years before its release last fall and which is monentarily supported by MS).
P.S. - if you have the bandwidth the video
here is well done.