***  For details on how to be removed from this list visit the  ***
***          CCP4 home page http://www.ccp4.ac.uk         ***


Although my native language is of course Fortran, I spent some time this year learning C++, primarily so that I can understand what my students (and children) are doing. I was less impressed than Kevin and Phil appear to have been. Take string handling for example. This is fine if you can write pure C++, but of course half the libraries and toolkits still expect C-style string handling, which (in my hands) produces a mess in which I am continually having to convert from one type of string to another. Fortran string handling is much more elegant! I wouldn't write a GUI in Fortran but will continue to use Fortran for serious number crunching. The more recent SHELX programs use a few Fortran-90 facilities - allocatable arrays are particularly convenient - but they are otherwise written in a small and very robust subset of Fortran-77. There are a surprising number of good modern Fortran compilers for Linux, I have excellent results with Intel ifort 9.0. I am personally quite happy to pay for it; though I distribute my own programs as Open Source I do not subscribe to the view that it is immoral to use software that costs money (provided that it is good).

George

Kevin Cowtan wrote:
***  For details on how to be removed from this list visit the  ***
***          CCP4 home page http://www.ccp4.ac.uk         ***


I am comming to the conclusion that the merits of a language (or otherwise) are pretty much irrelevent when it comes to what is popular.
More important issues are:
1. What are other people using?
2. What are students learning?
3. What are the libraries written in?

So for example, Objective C is probably the best native-compiled language available(1), and yet we use C++. Why? Because C++ is the most widely used native-compiled language in the world.

Timing is critical: I am lead to believe that Ruby is superior to Python, and yet Python was there and was good enough when the need for a well designed OO scripting language was there, and so it filled the hole.

Java is the most widely used language in enterprise computing, has awesome libraries and tool sets unavailable in any other language(2), is a complete no-brainer for most DB and web applications, and is widely ignored in science because for the first ten years performance wasn't good enough for numerical applications. (It is now.)

Then we have the two schools of competing languages for MS and non MS people: C++/C#/VB and C++/Java/Python.

What do computer science students learn? C++, Java, Python, C#, maybe Ada. Maybe a few physics departments still teach Fortran, but I couldn't name one off the top of my head.

What are modern tools written in? If I want to talk to databases or web services the natural languages are Java, Python, and C++. The same for the tools for GUI work or XML. If I ask google for libraries for Markov chains or neural nets, the main results are Java, C#, C++, C, and python. Some of these get Fortran wrappers in time, but even when they do they are limited, late, and often poorly supported.

These last two points for me are critical in determining that Fortran is a dying language. There is still a huge range of traditional functionality available in Fortran libraries, but the new techniques and the new programmers simply aren't there.

...

(1) To see what Objective C can do, go here: http://www.gnustep.org/experience/Gorm.html Basically you get all the late-binding goodness of an OO scripting language in a full native-compiled language. Instead we're stuck with C++/python.

(2) If your jaw is not well attached to your skull, you probably don't want to read the list of Java projects supported by IBM and/or the Apache foundation.

Joe Krahn wrote:
***  For details on how to be removed from this list visit the  ***
***          CCP4 home page http://www.ccp4.ac.uk         ***


Is Fortran re-gaining any popularity among crystallographers? It seems that some people are finding Fortran more useful for several reasons:

1. F2003 has some improvements that alleviate some of the pain of using Fortran (but still has a ways to go). 2. The things that Fortran is really bad at are more often done in a scripting language. 3. G95 and/or gfortran are making F95 and parts of F2003 widely available. 4. C++ can be an excellent alternative, but it's extensibility leads to a wide variety of coding styles which can make C++ rather complex and hard to understand.


Joe Krahn




--
Prof. George M. Sheldrick FRS
Dept. Structural Chemistry,
University of Goettingen,
Tammannstr. 4,
D37077 Goettingen, Germany
Tel. +49-551-39-3021 or -3068
Fax. +49-551-39-2582

Reply via email to