It’s not you. You know English, right? You can obviously do complex natural-style language. Your expectations as to shape of the learning curve have just been determined by object-oriented languages. There is a definite structure of difficulty that most languages follow, but i7 doesn’t follow that at all, and it makes you feel like you are spinning your wheels and not getting anywhere useful at an early stage of learning.
You are used to learning a small instruction set very quickly and then exploring all the possible combinations of it, at leisure. For most of this process you have the comfort of feeling like you have relatively complete knowledge and are merely investigating applications. Not with i7. i7 has a much larger instruction set (especially when it comes to the variety of possible grammars) that you simply cannot pick up in a couple of days. Coming from OO, one has to accept that it is pretty difficult to know everything about i7, and that one HAS to start coding with incomplete knowledge about the language. This drove the obsessive-compulsive side of my nature, absolutely up the wall, absolutely up the wall, at first. I’m a completionist – starting any project without knowing everything I need to know before writing my first line of code, makes me feel naked and foolish.
If you can see your way past this mindset and code with incomplete knowledge about the system then you can get things moving and learn only what you need to learn, as you go (kind of the way I code for the everchanging, near-infinitely fractured web – I just look things up as I need them and don’t learn anything I don’t need, because I can’t possibly know everything – which also used to drive me up the wall back in the 90s, until I got used to it).
I started learning Inform 7, off and on, almost 3 years ago (with about a one year hiatus during which I didn’t code anything and forgot a whole bunch). I am pretty far from being fluent. Most coding questions posted in this forum, I would be unable to answer in a syntactically correct form without first looking at my own code. There is no way that I would still be at such an arrested stage 3 years (heck, even 3 weeks) into learning a new OO language. Partly it’s my own fault for putting it down for a while, but with an OO language, I’d be able to put it down as long as I like and pick it up again very quickly. I have picked up i6 multiple times after leaving it for years, and yes I had to relearn things, but it went so much more quickly. With i7 you really have to keep it up because it bears too little relation to any other language you might use (including English); you gotta refresh those i7 neurons specifically and regularly or they will shrivel up and die, or whatever neurons do when they are poorly interconnected. They go dark.
So Inform 7 is probably much easier for a non-programmer to get into and be able to start producing working code, but there is also no question in my mind that it is way harder for anyone to completely master. I’m pretty sure I never will. (And I’m not a huge fan of blaming myself in this kind of situation – especially since the unreachability of mastery relative to i6 seems clearly to be an inherent property of i7’s design.)
Probably the best advice for someone who has programmed previously and is learning i7, is that you will feel stupider than you have ever felt as a programmer, but don’t panic; it’s not you.
EDIT: Made multiple edits just now @ 7:07AM.