Hacker is one of those terms that has a different meaning depending on who uses it. Among programmers, to be a hacker is to be a star. Hackers are programming code jockeys that can throw together bits of miraculous pieces of programming seemingly at will. They are gurus. People who modify computer and other pieces of electronic hardware are also sometimes called hackers.
Being a hacker can also be a bad thing. A hacker or hack can sometimes be someone that has no grace or elegance in his work and throws his projects together haphazardly. Among the general public (thanks to the media and perhaps Hollywood), a hacker is a person who gains illicit access to a computer and steals stuff or breaks into military networks and launches missiles for fun and with no conscience.
To complicate things even further, those that are hackers in the break-and-enter sense consider themselves crackers or black-hat hackers .
And among people who eat cheese, crackers are savory biscuits.
So you see the problem here. For simplicity's sake, I am going to use the popular mass-media definition of hackers interchangeably with crackers. Both terms refer to bad people who divine access to your computer across the Internet by compromising its defenses or using electronic loopholes.