Punishment is a solution. I'd be happy to say there are other potential solutions, too. The most basic solutions begin early in the development of a child. If they grow up with parents who don't know how to live in a "civilized" society, then it's hard for them to learn how to be "civilized". In this case, I'm defining civilized as being in accordance with behavior that society doesn't want to punish.And it has been demonstrated quite well that society cares not to punish those who use drugs...and a majority seem to favor legalization of marajuana...
I'm less likely to want to punish the guy that stole $2.5 million of some corporation's money (unless some of it was mine) than I am the guy who broke into a house to steal a TV. Call it what you want, that's just me; and I think most people feel the same. If you can maneuver and blend within society, society is more likely to accept you. That's a basic trait of society.
So, if you're looking for a "solution" in addition to punishment, I suggest first admitting that the welfare state has failed. 2nd, eliminate support of the "anti-social" immediately...Well, that includes me !. And, 3rd, wait about 15-30 years for the current anti-social generation to age. During that time, use harsh punishment and long jail terms for offenses demonstrating a lack of knowledge about what society expects.