It's a very good means for some attributes of a language (I've done a handful in 3 or 4 languages), but it doesn't tend to exercise any object-like behaviors or give you any idea of how the language helps you manage complexity. Lots and lots and lots of practice with arrays and core math libraries, a smallish chunk with strings and even less file IO, but not a whole lot else. The utility of PE for language testing / fluency drops off dramatically after a short while, and starts being almost exclusively about the algorithms, which translate almost identically across similar language types.