"Give me a list of search engines sorted from best to worst" (an ambiguious english expression - http://www.tallstreet.com/view/Search_Engine/ )
Then people nominate answers (by investing in them), which get weighted by how many people nominated, how they weighted different answers compared to each other, and also takes into account the persons "judgement history" (net worth - i.e. if they have been previously good at making good nominations they have more authority)
An then when people run the "algorithm" they rate the output which is fed back to the nominators who are rewarded or punished based on the quailty of their answers - so over time the system improves.
On one level, you can have someone specify a spec in English so that human workers would execute an algorithm of their choosing on the supplied input.
On another level, you can have someone specify an implementation in English so that human workers would execute that algorithm on the supplied input.
Such a human computer would be extremely slow, but..
- it would have common sense.
- it's a way to give everyone a feeling of what programming is all about
- it's a way to prototype ideas without getting down to specifics
Moreover, you can have an error correction mechanism by making sure that enough human workers have validated each other's work for you to trust the results.
If the algorithm is ambiguous, the people executing the code could use their common sense, vote on interpretations, and even get back to you if they are really stuck.
The execution would be done by hand, although some users who know how to program might write some code to help them out.
You could of course do this sort of thing at a very high-level of abstraction. Consider prototyping a word processor in this way for example.