Pages

Apr 7, 2011

I had a discussion with Maya

Recently I had a discussion with Maya (a colleague of mine from the university). I tried to convince her, and I hope I did, about the sweetness and bitterness of software. Okay we have some software for nuclear spectra analysis, but mostly in any lab I've been there is a different set of programs used. It really would be great if there was a unified software. Furthermore I really believe it is possible to create such a tool. If I was not busy I'd even start to create it (opensource of course) ... but for the time being it's just dreams.

I'd still describe my idea though. The proposed software would consist of server and client (terminal). The terminal would be a graphical program where scientists would be able to see what's going on over the server. The server would be just a daemon connected to the detectors and all that complicated stuff we use to collect data for analysis. The data would be collected in a SINGLE unified file format on the server, and would be accessible through the terminal program (including exporting/importing). More or less it should work as the X server. The application would be very modular, organized in plugins which are binary compatible, not some monolithic stuff which wouldn't compile at all, if something is not right with a single function (which is probably not used anyway). To be honest, there are some programs doing similar things, but I don't like them ... and I'll even give an argument why.

Let's take Midas - it has only two problems ... it is ugly, which is manageable, and it is slow, which is not. In fact it is so slow that I'd rather kill myself (not literary) or destroy the computer I'm working on (quite literary), instead of using it. But sometimes one doesn't have a choice ... unfortunately. I don't know if it can be run on both Windows and Linux, but with that speed it doesn't really matter.

Okay next on the block is radware - it is quite good program, with one exception ... getting it to build and run is a pain, and it only works on Linux (naturally?!). Aside from these two technical difficulties, it is really good for processing spectra. Ah, and I almost forgot ... it has terrible learning curve ... you have a lot of different files for different things and bad support for external file formats. No good option to export your spectra in graphic files is also a drawback.

In our labs we have a local program - ANL - which is just an antique, it runs only under DOS and in practice cannot do much.

In HIL, Poland (where I was an Erasmus student) there is another local program widely used - SMAN. It has quite a lot of capabilities, including scripting and drawing two dimensional spectra. It's not bad really, but I saw a little problem in it's monolithic nature. Also it runs under DOS (come on, who uses DOS anyway?!). I doubt it runs under Linux at all, although I'm not sure, it may. Another thing I find inappropriate is that it's written in pure C ...
I really don't get it. Why people still use pure C, it is old stuff, we have classes, and interfaces, and tools to create new software which is bug free (for the most part) and easy to maintain. If I didn't create that program how would I ever find my way in its millions lines of source code?! The guy who created that software even tried (unsuccessfully) to convince me that C++ is no good ... well it is way better than C, but hey, he is entitled to have an opinion.

I won't talk about root, since I haven't used it. But from what I hear ... it's not very convenient, or easy to learn.

For stuff written in Fortran I won't even start. This language is just stuck in the 60's. I can relate that physicists are not programmers, but Fortran ... really?! It is just archaic, with bad syntax, a lot of reserved words, a lot of implicit conventions (like variable types depending on name?!) ... do I have to go on ...

In conclusion, you can see my frustration - just to perform some experiment you'd have to know different programs, use different scripting languages. This is the reality, but I'm pretty sure that the time is right to create something good for the community, which has steep learning curve, and is fast enough to be used in real experiments.