3 ms·
This has to be the stupidest critic I have seen yet on this whole thing. In particular, complaining that the code is not commercial quality is laughable. Most
by cdavid 17y ago
This has to be the stupidest critic I have seen yet on this whole thing. In particular, complaining that the code is not commercial quality is laughable.
Most of the scientific code is awful, in climate science and elsewhere, because the constraints are totally different than commercial code. Maintainability is not so much a concern, and it is only a tool to obtain a result, not an end in itself. People don't care about the code quality most of the time.
There is another concern, which is that you rarely know what you exactly want when programming for research. You don't always have the time to design reasonable API, because the requirements keep changing - and keep in mind that you cannot spend too much time on this because you have to write papers, do some actual research, etc...
Even in my field, which is engineering and where people are expected to be more "programming methods-aware", most of the code is awful. My own code for research is awfully bad compared to what I release as open source for scientific programming: when I release something, I easily spend several times as much work on the thing, because of documentation issues, etc... Doing this for all my code is simply not possible.
If you want to dismiss climate science because of code quality, be ready to throw away the majority of science, from biology to IA through EE. Just look at lapack code: the code is awful, using goto to avoid structured programming, etc... (e.g. http://www.netlib.org/lapack/double/dsgesv.f http://www.netlib.org/lapack/double/dsgesv.f). And it is used by 99 % of code which does linear algebra, including commercial software.
- AndrewO 17y agoThat's a pretty cavalier attitude to have when so much depends on the results (and I mean research programming in general, not just the CRU case). Maintainability may not be a concern, but verifiability certainly should be.
- cdavid 17y agoVerifiability in science is not a matter of having one program checked by different people. The reality is much more complex than that. This so called climate-gate says more about the perception of research than climate science (although it has certainly became a PR-nightmare for climate science). I think it is just another case of people have an idealistic, out of reality knowledge of how science works. Verifiability is less a concern than most people meant it to be for research. In an ideal world, it should be, but it isn't how science has been done - I would argue it has never been the case. Scientists are actually very conservative for most parts exactly for this reason: in practice, it is just not possible to rely on consistent repeatability, etc... When you have an established, widely shared view on a topic, it takes great leaps to break it. Most research is not done to break the consensus, but to reenforce it. That's why today, if you want to show that climate is not caused by human activity, you will need to present data which are not as good as the ones one has now, but which are much, much better. So it is most likely true that if you want grants, etc... the easy way, going along the consensus is the right path. That may not be how people think science should be done, but that's how it is done in practice in my experience. I think that for most researchers, all this affair sounds like a storm in a teapot. The behavior may look shady at times, the experiment is not always great, but that's exactly why for a new consensus to be created, you need to have better proof than the existing consensus. And yes, politics come into play, yes a lot of it is mean and some of it is not ethical. But this does not invalidate science in general - it invalidates how people think science works.
- cdavid 17y agoConcerning the practical issue of repeatability, that's why most fields require a new fact to be independently repeated by several people. At last year Scientific Python Conference, A. Martelli made an interesting point about verifiable software: the best way to know for sure if your software gives the right answer is to have several, different implementation done by different people. He gave the example of the space shuttle, which has several independent systems with a vote in case they don't agree (wikipedia has some information on it:http://en.wikipedia.org/wiki/Space_Shuttle#Flight_systems http://en.wikipedia.org/wiki/Space_Shuttle#Flight_systems).