Design Principles for Creating a Domain Scientific Library

What are the good principles when developing a software library for scientists to use in a particular discipline? By this I mean areas such as chemistry, physics, materials science, microscopy, bioanalysis, astronomy, etc. I exclude such general libraries as SciPy, R, Matlab, JAMA, etc., which cover a number of disciplines or are specifically mathematical or for data analysis. (Currently, many of us are involved in creating open source libraries in chemistry, and it would be useful to learn the experience of other domains).

I appreciate that this is an ambitious task, and it is not easy to finance, but it is becoming increasingly important for reproducible and verifiable science.

+4
source share
4 answers
  • This should allow its users - scientists - to do science in this domain instead of programming. The less thrust has purely software concepts, such as “handlers”, “controllers”, “pointers”, “memory leaks”, etc., the better it suits your end users;

  • This should allow people who find your library interesting to maintain it after you leave it. In short, it should not be designed as an “ejection code,” or it should be done in a “good” watt. See your own question on this.

  • To develop the API, an expert should be involved who will use this library. He should know what a regular program needs to solve problems from the library you are writing, and identify the basic concepts that you must implement. Build your API after what the expert says, and not the way you see it. If you are also an expert, then anything, invite another guy who is not involved in the development. The reason is that developers tend to develop APIs in the way they look natural, natural for implementation. While this should be natural for the problems in which he is involved.

+4
source

"What are the good principles when developing a software library for scientists to use in a particular discipline?" - Above all, is an expert in the field, IMO. The types of packages that are usually successful in these areas are written by chemists, physicists, biologists, etc.

You should ask yourself if a scientist in one of these areas can learn programming or a programmer in order to learn a scientific discipline.

Judging by the number of books that I see for learning the X language for 21 days, and those who claim that during the same time I can learn art in chemistry, biology or physics, I would suggest that scientists are more likely to program your own solutions.

+2
source

It's good to think about a good generic API designer, no matter how domain specific it is, so check out this talk on google tech . (Joshua Block)

+1
source

My advice is to evaluate the general programming skills of the scientific community that you want to achieve (most likely yours!) And develop what they can use (or it requires only a little training, but not too much). Keep it simple or hide complexity in deep interior parts. Scientists are not professional programmers.

0
source

All Articles