I think everyone will have a slightly different idea of just what constitutes a "programmer", but I think I'd have to say someone who programs as their primary job.
I wouldn't say that being a "professional" would qualify you as a programmer. Take for example John Carmack (Lead programmer at ID Software), he was programming some simple game engines long before he was hired anywhere. I do think the best programmers are the ones who have wide range of languages and experiences under their belts (excluding VB, ).