It has been identified that an issue preventing user’s from fully understanding, and taking design decisions in the development of technology projects is the lack of ability of typical users to create code themselves, and articulate their ideas fully.
To truly engage a user as a design partner, it therefore seems useful to make programming accessible to them. This is the goal of natural language programming, which is my focus for today.
Natural language programming is the idea of allowing people to type code using natural syntax and language they’ve learnt from typical communication, for example “if the player is inside the cave, then the dragon attacks the player”. As an idea, it has been around a long time, yet difficult to implement, since natural language syntax is almost infinitely complicated and subjective. Perhaps one of the most interesting projects which implement aspects from this field is the computational engine WolframAlpha, which will attempt to compute any free-text query entered into it.
So could natural language programming allow users to become designers? By breaking down the barrier between users and programmers, it’d allow the users to be engaged as equal stakeholders. They would be able to make changes directly, without having to have their ideas filtered through a third party, and reach a purer representation of their desired outcome.
However, current implementations of Natural Language Programming have revealed a number of issues preventing NLP from being the perfect tool for engaging users on an equal footing. Currently NLP languages such as Supernova are still dependent on the correct use of syntax, even if the syntax is closer to written language. For example, the condition of an if statement would need to be presented after the if statement (not “kill the player if players health is 0”). Other programming concepts, such as for, if and while still need to be known to be utilised, otherwise the language won’t understand it, or the user will not fully articulate the conditions.
A team at the University of Sussex has been looking into this, with the Flip project, which identified that a better way of making un-technical users, such as children, successfully create working code was not through the use of NLP, but through the implementation of constraints. By giving the users an accessible, but limited tool set of coding concepts, and allowing them to utilise them by filling in the blanks (such as the actors), children were successfully able to create Neverwinter Nights 2 scenarios. This approach can also be seen in the game WarioWare DIY, which allows users to create mini-games by ‘slotting in’ pre-defined elements of code, to build a complete game.
In these instances, constraining the way in which code can be input into pre-defined ‘chunks’ reduced the error rate, and gave important signposting towards the format and syntax that important concepts needed to take. It seems that this is a much more effective method of allowing users to become designers.