
How would you build a human computer so that people can write possibly ambiguous code in high-level English and have it "execute" by others using common sense? - amichail

======
gibsonf1
You would need to have precisely defined concepts from standard English in
genera/differentia format in such a way that the system could determine
contextually which concepts are being used in the user's query, and with that
you could execute whatever you wanted. The differentia would have to be framed
in a logical format, preferably using Fred Sommer's Term Functor Logic
(dramatically superior to First Order Predicate Logic. This is the problem our
startup was first working on last September (we started research for this in
1997 - we are deploying a very "lite" version of this in our new application).

The biggest barrier to solving this problem is the difficulty of formally
defining English words. It took us several years to figure that out (with the
Epistemolgy Aesthetics Study group and heavy reading of Aristotle's Organon)
and we ultimately found that definition through an inductive approach was key
to success. There will come a time in the not too distant future that people
who can correctly define concepts will make serious money.

------
amichail
Consider for example writing a sorting algorithm in plain English and
"executing" it on sample inputs using crowdsourcing.

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.

~~~
gaz
I'm not sure if this is what you mean, but for example:

"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.

~~~
amichail
You can explore such a human computer along multiple dimensions.

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.

------
pg
The right way to do such a thing would just be to have a very abstract
language with "common sense" embodied in the right defaults.

------
timg
is anything closer to a layman's pseudo-code than python?

