Friday 12 October 2007

Layman's programming language

Making a programming language simple enough that any user can master it is the easy part. It's the higher-level thinking that users struggle with, because they think in an event/response loop while traditional programs work in a sequential fashion. The same requirements specification from a typical user vs a typical programmer would look very different. The user would specify a number of "when ... do ..." statements, while the programmer would say something more like "the X function takes input of the form Y and produces output in format Z, meanwhile storing results in the database". Maybe we've been doing it wrong the whole time.

A functional specification in the "when ... do ..." format can be checked automatically for overlapping conditions. It's not object-oriented or anything like that. It's event-oriented. Granted, structuring a specification this way does not automatically confer some user-centric design on the program, but it's simple and clear. Given to a novice programmer with a traditional language, it will be a struggle. Given to a user with a novel programming language, it will be trivial.

Mokalus of Borg

PS - I'm not aware of any languages that do things this way.
PPS - But I don't know all languages.

No comments: