>In the pre-Internet era, tools like Hypercard and Visual Basic allowed hundreds of millions of semi-technical people to become software developers. Since then, there hasn’t been much work in these areas, but from what I’ve seen that might change soon.
I doubt that there will be much progress on this in the foreseeable future. Not for general purpose programming anyway. It's not true that there hasn't been a lot of work in these areas since Visual Basic. Not a week goes by without news about some tool that finally allows everyone to create UIs easily, wire up some logic and one-click-deploy everything on the web and mobile devices all at the same time.
But the bottleneck is somewhere else entirely. It's thinking in terms of models. Formalizing and abstracting what we know intuitively about the world and about the things we want to automate.
In my opinion, there have only been two inventions that really "democratized" access to thinking in models: Spreadsheets and SQL. Both are from the 1970s. There has been no progress since then, perhaps with the exception of some of the visual things you can do with modern game engines. Maybe R and Matlab deserve mentioning but they are for people who know exactly what they're doing.
I think the next step has to be abstracting away some of the intelligence required to analyse data and make all the tedious micro decisions about how to transform it into something fit for the task. What we need to make progress is some kind of AI enhanced version of Excel.
* Not a week goes by without news about some tool that finally allows everyone to create UIs easily *
That's because they start at the easy part (the UI) and move down until they hit that this is a hard problem. But there's reason for hope: there are breakthroughs happening in this space (reactive like spreadsheets, declarative like SQL). The results are really exciting.
I am the developer of HiveMind (crudzilla.com), it is a web app platform that aims to tackle web app development in a way that moderately skilled developers could do a lot with.
> But the bottleneck is somewhere else entirely. It's thinking in terms of models. Formalizing and abstracting what we know intuitively about the world and about the things we want to automate.
This is a bottleneck but one that exists even without programming.
In my opinion, the biggest bottlenecks are two fold. Software frameworks are coded to be coded against and the abstractions we use to communicate between sub-systems in programming languages require us to code (parameterized sub-routines).
Software frameworks that are composition centric (you hook up parts instead of calling parameterized sub-routines) make programming a lot easier. You don't even need to code against composite centric frameworks: you can just hook things up using general purpose VPLs.
Parameterized sub-routines lead to way too much specialization of interface making software frameworks both difficult to use and not composition centric. This is why we have to code against our software frameworks. I also feel that parameterized sub-routines are the reason why "there has been no progress since the 1970s".
Apple's objective-c and associated framework were designed to be coded against (and even though it supports message passing, it still heavily uses parameterized sub-routines).
A lot of 3d modeling software provides frameworks where you hook things up instead of coding out solutions (Foundry Modo, Eyeon Fusion, Dynamo are a few). These are very domain specific and not designed to work as general purpose languages/frameworks.
Funny, I was just looking at Google Apps Script with the idea of making an add-on for Documents. The tool looks brilliant. It supports many Google services (from fusion tables to Gmail to...), provices simple sharing with anyone and proper authentication. But it does not provide any tool for building better models or architecture. It's VBA on the web.
"A Small Matter of Programming" by Bonnie Nardi is an excellent book which delves into the history of end-user programming. Spreadsheets, CAD and so on, all based on researching users.
> Since then, there hasn’t been much work in these areas
Our startup is working on exactly this, with a simple block-based system which is easy to use (like Scratch) but still very powerful (working with lists of objects, recursive functions, loops, local variables etc). It's for our general purpose game editor Construct 2 (http://www.scirra.com), which is far, far beyond "create UIs easily".
Another huge innovation in modeling is machine learning, and it can build very complex models(in many cases far accurate than rule based models) using a relatively simple interface.
The conversational programming idea you pointed to in the other post looks interesting, because a conversation provides information to both the human user and the learning algorithm at the same time.
I always felt that the feedback in supervised machine learning is too far removed from the actual usage of the system. Robotics seems to be the most natural area where this could be improved.
Those aren't democratized. Other examples like Matlab or Mathematica come to mind, where you use a domain language to simplify the programming model drastically.
agree on spreadsheets but i think the promise of sql was not fulfilled
what about visual xml mappers? for business analysts - non-coder domain experts. they are selling, but i don't know how well this aspect has worked out... as a coder, i wouldn't hear about it even if it was a success...
I doubt that there will be much progress on this in the foreseeable future. Not for general purpose programming anyway. It's not true that there hasn't been a lot of work in these areas since Visual Basic. Not a week goes by without news about some tool that finally allows everyone to create UIs easily, wire up some logic and one-click-deploy everything on the web and mobile devices all at the same time.
But the bottleneck is somewhere else entirely. It's thinking in terms of models. Formalizing and abstracting what we know intuitively about the world and about the things we want to automate.
In my opinion, there have only been two inventions that really "democratized" access to thinking in models: Spreadsheets and SQL. Both are from the 1970s. There has been no progress since then, perhaps with the exception of some of the visual things you can do with modern game engines. Maybe R and Matlab deserve mentioning but they are for people who know exactly what they're doing.
I think the next step has to be abstracting away some of the intelligence required to analyse data and make all the tedious micro decisions about how to transform it into something fit for the task. What we need to make progress is some kind of AI enhanced version of Excel.