Friday, 17 June 2011

Why formal logic fails

Formal logic, in terms of using it to program a computer, is a bit of a failure. Not only are the vast majority of programs procedural/imperative, but even teaching students formal logic and logical/declarative programming has a massive failure rate. Why is this?

It's because logic isn't specified in any language students can understand.

Let's be quite simple here. If you put a symbol on a page, then a person must understand that symbol in order to make sense of what you're trying to say. The more symbols you use, the greater understanding- and memory- a person requires. This means that the more strange symbols you put on a page at once, the vastly less likely it is that a poor student will actually understand your communication- let alone what it actually means.

Let's run a theoretical experiment. Instead of , we will just use "and". Then, we will replace the other logical symbols similarly- (a or (b and not(c))). So which of these is going to be easier for unlucky students to learn?

Or,

if (holding(at(agent, X), S) and adjacent(X, Y))
    poss(go(X, Y), S)
if (portable(G) and (holding(at(agent, X), S) and holding(at(G, X), S)))
    poss(grab(G), S)
if (holding(has(G), S))
    poss(release(G), S)


When teaching English students in the English language- why not just stick to English? There's a slim chance that if you speak the same language, you may get further. Of course, bonus points for meaningfully defining holding, at, agent, X, S, Y, G, portable, grab, release, has, and poss beforehand.

No comments:

Post a Comment