The basic thesis here is that "an intuitive conceptual model of application structure and a correspondingly intuitive construction process used together, will replace conventional programming behaviors by hand-eye-brain tracking."

I think this relates to another critique of conventional programming: "Programming today involves editing code while simulating how that code will run in our head to ensure that program goals are met. To augment this mental simulation, editing is periodically interrupted by bouts of debugging to get feedback on how code really executes." [1]

I don't think that conventional programming can or should be replaced, but there are a lot of people who are not professional programmers, but who have other talents and creative content that they would like to produce and distribute through computers. New approaches to programming will definitely emerge in the future as an easier and more productive method of implementing sophisticated custom software for domain specific tasks.

Human language is a highly effective method of communicating between complex information between humans, but humans frequently augment natural language with diagrams, tables plots and mathematical notation in order to communicate complex ideas. Human languages are especially poor at expressing algorithms, numbers and mathematical operations, which is why the number system, mathematical notation and programming languages exist, which are all different systems of symbols and grammars.

Programming languages are like the blueprints of a complex, abstract machine. These abstract machines are called applications and they are very much like physical machines, except that instead of being made using lathes, mills and metal, they are made using compilers, IDEs, programming languages, memory, CPUs, GPUs, etc.

No one thinks that it is a good idea to design entire physical machines using only programming languages, between periodic bouts of running the program to product the physical machine in order to check if it looks even remotely correct. No other engineering discipline restricts blueprints and prototypes to programming languages.

It is also the case that both the abstract machines (applications) and the tools for creating then (IDEs, compilers, etc) can and do both run concurrently on the same universal machine that is called a computer. This means that it is not difficult at all to envision a more advanced abstract machine building tool that improves the "hand-eye-brain" feedback loop that is so critical to builders of physical machines. There is a growing and improving diversity of human-computer interfaces, beyond plain text that will further enable this possibility.

Just as diagrams and mathematical symbols can never replace human language, programming languages will always have a ubiquitous role to play in programming, but they will be augmented with other advanced programming interfaces. The people who will benefit the most of form this are those who do not think of themselves as "programmers," and who do not have any great interest in programming, but they find themselves building, debugging and understanding custom applications as part of their daily jobs. Those who think that programming will never evolve beyond its current state are usually professional programmers, who are so used to "simulating code in their heads" that they are unaware of the problem that it poses for people in other professions who also need to create software application in order to analyze and solve problems in the world beyond the world of IT and programming professionals.

[1] http://research.microsoft.com/en-us/people/smcdirm/liveprogr...