"Powerful" is a term thats too subjective. Assembly language is extremely powerful if you want to tune your code to direct the actual chip instructions and memory operations - there's almost no faster code.
"Powerful" could also mean the language with the most concise and easiest to use framework, where there's a lot of features for relatively low syntax. Perl, C# and Java provide some of this.
"Powerful" could also mean a language that can be used to write multi-platform and highly-scalable components that can be reused with little effort, enabling a programmer to leverage a lot of their prior work. C++, Smalltalk, ADA can be used this way.
"Hard" has another entire set of definitions, and is equally subjective.
It goes on and on.. The smarter question (no insult intended) would be to ask about the "best" language for a certain task. Quick: What's the best language to quickly build a VSAM file parser on an IBM 9370? (Rexx?) Howabout the fastest way to spider the WWW? (Perl?) What's the most efficient way to code a large web site? (RubyOnRails?)
I'm sure you didn't intend to fan a sophomoric flame war about programming languages, but such questions egg on the unenlightened to soapbox about syntax and feature when really almost any language has a place somewhere.