But in practice, if you can understand the core abstractions and principles behind higher level constructs (loops, functions, objects and their representations), you do not need to internalize their details to a level that you can do daily work with them.
I know this is not what you were looking for, but basically, my advice is to go with whatever language you like.
I like to say that you are allowed to use anything that you have an idea of how would you implement it yourself (maybe not as optimally, and with infinite time :)). Eg, if you understand hash tables, just go ahead and use a language that has them as built-ins. That makes you a CS guy, rather than just a developer!