I'd distinguish between useful and necessary here. A user with no programming knowledge can clearly do a lot more now than they'd have been able to in 1993 let alone the 1980s, enabled largely by UI improvements: first the GUI revolution of the Eighties and early Nineties, then more incremental improvements as GUI idioms were refined over time, then innovations building on these trends. I expect this to continue.
If we stop there, however, we ignore the other side of the equation. A user with basic programming knowledge and the right mindset can now do everything a naive user can and much more, thanks among other things to an explosion in easily available libraries and the increasing popularity of capable high-level languages with intuitive semantics. Moreover, there are wide domains that UI changes haven't touched and basically can't, such as all but the simplest forms of automation: it's a rare UI that exposes so much as a conditional outside of one-time user interaction, and the exceptions (like the Word and Excel features Gwern mentioned in a sibling post) often implement scripting languages in all but name. I expect these trends to continue, too.
Taken together, that gives us a gap in capability that's likely to increase in absolute terms, even if the proportions narrow or remain stable. I'm betting on "stable", myself.
Certainly a more capable user can do more than a less capable user, but that's just restating the obvious.
I would argue that there is a more important trend here: the growth and accumulation of software -- accumulation which continues to reduce the need to program something from scratch. 30 years ago if you wanted, say, a tool to convert metric amounts to imperial and back you had to write it yourself. Nowadays your task is to select one of a few dozen apps that can do it. Most needs of an average user (ones that he himself recognizes as his needs) have be...
P/S/A: There are single sentences which can create life-changing amounts of difference.