I think it essentially boils down to two schools of thought.

1. Learn at the metal first (C etc.) so you understand whats actually going on. Then if your looking to get some rad going move on to higher level stuff.

2. Essentially the opposite.

I personally think it comes down to your individual tolerance for learning curves. If its low go with option two but if you have the determination to slug it out old school go with option one.

As for specific languages, seeing as how this is a bactrack forum I would say C/C++ and python for low and high respectively.