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