I am not sure I agree with Enthusiastic Student. There are two points to consider here:
- Do they really need a strong programmer, or is this just something that they traditionally write into their position announcements without giving it much thought? Frankly, in industry like in academia, job descriptions are often given much less thought than people seem to assume. In my old group, we basically had one boilerplate job requirements text which was used for all kinds of positions. This included pretty much the cited text, but we certainly had PhD students that were not good programmers and they still (sometimes) did ok.
- Can you learn to program sufficiently, either before starting or at least within acceptable time frame after starting? This largely depends on how good a programmer they really need, how much you currently suck at programming, and whether you learn to program quickly or not (programming, specifically, seems to be one of those skills that comes much more easily to some than to others).
To figure both things out, you should get in touch with the professor or one of his students to get a feel for what their stance on these issues is. For some position, you really need to be an excellent programmer, and for those, there is indeed no point in applying. For others, being able to hack together a workable prototype in reasonable time is sufficient, and most people should be able to learn that. When contacting them, be diplomatic and don't tell them outright that you are bad at programming. Get a feel for what you are really supposed to do, and decide for yourself whether you will be able to do it or learn to do it quickly. Then decide whether to apply.