Let me start with the fact that this is a bit o***eneralization and I may have some facts wrong, but I invite corrections.
OK I am here to throw fuel on the fire. The original definition of a hack is a piece of quickly written and undocumented code written to make something happen now instead of building it right. You will notice this ties in with fordem's definition nicely.
These hacks were so commonly used to breach security measures that people trying to break this security became known as hackers, the people designing the security measures usually did so on a fat budget (both time and money) and so developed clean and concise code (ideally). It should also be noted that at this time the hackers were largely a beneficial force to do what's now called “penetration testing”.
As the amount of new code used in exploits dropped and scripts came of age and pre-written tools became more powerful, there were now people accomplishing the exact same thing as before but not with "code".
These people were also less likely to be of professional or academic interest. The formerly jovial game of testing defenses became a war as more people took to making a profit at. Many of the older hackers have been quoted as saying they just wanted to see if they could give their entire area code free calls, not because they needed free calls but to see if they could turn that light on from a state away. Most newer hackers (the big cases mind you) are in it for money (ID theft correlates nicely).
This new generation quickly acquired the ire of the older generation, terms like script-kiddies became popular. Additionally to separate themselves the following classifications were attempted.
Black/White hats, the color defining the intent of the hacking.
Hackers/Crackers, the same idea as before, to demonize a new word (cracker) in order to take unwanted media attention from the older word.
Needless to say this never worked particularly well.
What does this all have to do with this thread, nothing! Other than to say that history is fun.