I always giggle when someone says that learning C is difficult, complex or confusing when it's one of the easiest and most straight-forward languages to master. There's no layer of abstraction to deal with and it only has a handful of logical constructs - once you know what a loop (do x for y amount of times, do x while y is true), a conditional statement (do x if y happens) and a variable (any form of data) are, you're practically set - everything else is a matter of convenience. Actual functionality can be easily looked up, you don't need to know it. There isn't even a garbage collection system - all the data you use is wherever you declared it. It's scripting or interpreted languages that are confusing because they deal with abstract concepts like inheritance or classes, C is as baseline as it gets.
As for my criticism of GM's, as I said, they're an excellent gateway into the world of programming and great teaching tools, but they only go so far. Sure, it's my opinion, but you shouldn't rest on your laurels if you master a GM - you don't *really* know what your program is doing, you're just slapping together pre-made statements that mean nothing outside the obfuscated layer of abstraction.
As for limitations enhancing creativity, I call nonsense - the only limiter of your creativity should be your imagination. Instances when limitation gave birth to a more enjoyable final product are few and far between. I don't like limits, I like having more resources than I could possibly spend because I don't want to worry about how to implement something, I'd rather spend that time making more content. Optimization is not a creative use of your time, it's a necessary evil. The less problems you have to deal with when programming the better, platforms already impose real-life limitations of hardware, nobody needs additional made-up limitations in their life.