Grooving Pains

I’m having some trouble moving ahead with Groovy Science, but ironically it’s because I can do too much.

I’ve always been a fan of Lisp despite the fact that I can’t get past the syntax to actually code anything. When I first saw Groovy, one of the many reasons I liked it was that it seemed to be a great step on the learning curve from Java to Lisp. What I didn’t realize was how deep of a step it was. Now that I’ve used Groovy for a while, I’ve started using it to prototype all of my ideas, as expected, but it turns out that it’s so easy to make these prototypes that I’m not sure exactly what work I’m saving Groovy programmers by writing a library. On the contrary, I’m starting to think the extra work of studying a library API might hinder people who want to do tasks as simple as this.

Well, I can sort of answer my own question: A library like the Java Collections Framework doesn’t solve a problem that is particularly difficult to get around on a case-by-case basis. It solves the frustrating task of making the same “easy” abstractions over and over again and coercing them to work with each other. This library is similar; treating something as a symbolic expression is already easy to do in Groovy, and that’s exactly why it can become a common metaphor, come up again and again, and eventually demand its own library.

Much of what I’ve been planning to contribute by Monday has been in the form of a Groovy prototype. I’m not sure exactly where to start translating that into actual library code, and that’s why I haven’t been submitting it. Whenever I figure out where to put it, it’ll start making its way into the library, I think.

3 thoughts on “Grooving Pains

  1. I work in computational biology. My background is computer science, but the vast majority of my colleagues are biologists (i.e., know very little about programming).

    Sometimes, when asked the best way to process a certain biological file format (say protein sequences) I sometimes suggest to do direct file processing (instead of using am exsiting bio library). The point is that, in some cases, learning the library is MORE COMPLICATED than doing the text processing (some formats are really easy).

    Of course, if I think the person will be redoing the same type of work again and again, I suggest using the libraries. The cost of learning the library will pay off in the long run. As you say, it gives a common metaphor. Not only within your code, but when you are discussing your work with colleagues (if they use the same library, there is a part of the discourse that is common).

    Anyway, and talking about groovy science. I expect to check it out this Tuesday and start giving feedback. I will try to use it in my own work. I am doing some modeling (basic, very basic algebra) on the spread of drug resistant malaria and I will try to use groovy science for it.

  2. I’d be surprised if you actually found it to be a helpful library at all at this intermediate stage, but I’m eager to know whether there are shortcomings you notice that I’ve missed… and, simultaneously, whether what I’ve put into the library so far can actually go to good use for you.

    When I say I can do “too much,” I’m talking about the expressive power of Groovy, not a particular level of maturity in the library. ^_^

  3. I am not expecting it to be helpful at this point in time, it is too soon. But my work is also long run, so I can wait and go along.

    Again sorry, for not being very helpful. I am finalizing the conversion of a malaria simulator from an original Fortran version to C. My life as been hell in the last few weeks. But today or tomorrow I should be free from this…

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s