What's the difference in this terminology? Is one considered more professional than the other?
While the terms can be and often are interchangeable, I view a developer as someone who's involved in the whole process from requirements gathering, through specification and coding to testing and, yes, support. They might not be fully involved in all stages all of the time.
A programmer is someone who just concentrates on the coding and has little involvement in the rest of the process. This may be their choice of course.
As @sunpech points out in his comment most people writing software these days are (or should be) developers. You have to know much more than just how to code to write good software.
It depends who I'm taking to I guess. If I'm talking to average Joe, I just say I'm a programmer because they generally have a clearer picture than "developer".
As Kenny Tilton says:
I actually had a business card that just said "Programmer". Got everyone quite upset, they wanted "Systems Analyst" or "Software Engineer" or "Database Administrator" or something. My point was that one cannot program a computer effectively without doing all those things, so "Programmer" was sufficient.
But what's much more important is not what you think the word means, but what others think the word means. If the HR monkey looking at your CV isn't Ken Tilton, chances are they think programmer == code monkey == glorified typist. I mean, where's "Architect" in the job title?!
I've generally considered "programming" to be the act of writing code. A "programmer" would spend most or all off his/her time in front of a screen coding.
On the other hand, a developer is anyone involved in the development of software- they develop it from idea to product. A developer would, by this definition, be anyone from a code monkey to a tester to a PM. As such, 'programmers' are a subset of "developers".
This is just the general connotations I have in my mind, not a technical definition, of course.
Its again a question of context. Two guys ove beers, one says he's a developer, and one says he's a programmer... there is no meaningful difference. But its certainly possible that companies may have positions with those titles that have some specific meaning to them.
I don't know of any real difference in meaning. Mostly the job designation varies across software shops. I've seen people who basically do the same things being called "programmer","developer","IT engineer", etc. A lot of people use these and other similar terms interchangeably.
Another thing that I notice, which is perhaps a local phenomenon and might not apply where you live, is that some people try to avoid associating themselves from the term "programmer" or "coder". Sometimes it is because they perceive that actually writing the code is like manual labour, while calling themselves a "developer" or something else gives them a more white-collar feel. Sometimes its just because people actually do not know how to code very well - and they would get embarrassed if someone starts a conversation about programming, and prefer to avoid introducing themselves as a "programmer" for that reason. Almost always it is a mixture of both cases.
Nowadays, developer sounds more sex appealing than programmer - developers make those cool shiny apps for iPhone, programmers make accounting software. ;)
I think it's more a question of fashion. At the moment the "cooler" term tends to be more "developer".
Anyway, I prefer more the term "developer" as I think it implies that the work can be programming, but also other things, like integrate and configure an existing tool in your system. Or take some responsibilities on the management of the project. Or even making some UI design... But that's just how I understand the word, not necessarily that someone defining himself as programmer it's not doing that kind of things...
The short answer is that there is very little difference (perceived or actual) between these two general labels amongst those of us who make our living in this domain. However, as many folks have already said, some individuals or organizations apply very specific definitions to these general nouns...and that can sometimes cause a perceived or actual difference, especially to non-technical types.
Basically, if these two terms mean something dramatically different to you, then you either a) have been in a context where different specific definitions were applied to those labels or b) you get your technological savvy from reading InfoWeek (no offense intended to the lovely people at InfoWeek) and the occasional Dilbert.
I also personally tend to think that the term "programmer" was used earlier in history than the term "developer". For example, you always hear about "COBOL Programmers"...never "COBOL Developers". The term "developer" wasn't in wide use way back in the day. If you go look at job titles at technology organizations that were around in the beginning of computing (NASA, IBM, Unisys, Boeing) you either had "programmers" or "software engineers"...never "developers". And I bet if you troll said companies' sites right now you'd see very similarly titled results in their job opportunities.