I suggest you give Ruby a shot. It is one of the popular languages, that has gotten the furthest away from the machine. I find it highly enjoyable and the book I linked proved a very good introduction.
High level languages are often frowned upon and some people claim, you should start with low level languages and work your way up.
I am quite convinced, you should do this the other way round. Low level languages teach you how computers work. They teach you to provide solutions expressed in a way they actually work in the computer.
High level languages deal with far more abstract concepts, trying to be closer to human thought patterns. Thus they allow you to focus on modelling a given problem and creating simple, elegant solutions.
A problem is defined in terms of constraints and abstracting those away, that are given by the hardware results in reducing the problem to its actual essence.
I am saying this, because when I first started with higher languages, it took me a while to wrap my head around many popular concepts. I tried to understand them in terms of what I had learnt before. But when I looked at them from the opposite side, they seemed quite natural. So if you start with a high language, try not to classify everything you learn in terms of what you know. Consider this a fresh start.
At some point, you will realize, that you need to get beneath the present level of abstraction (usually because you lack control or speed or both). This is the right place to use the knowledge you have from low level languages.