Eliezer_Yudkowsky comments on Open Thread: March 2010 - Less Wrong

5 Post author: AdeleneDawner 01 March 2010 09:25AM

You are viewing a comment permalink. View the original post to see all comments and the full post content.

Comments (658)

You are viewing a single comment's thread. Show more comments above.

Comment author: Eliezer_Yudkowsky 03 March 2010 04:44:09AM 4 points [-]

Um... I think it's a worthwhile point, at this juncture, to observe that Turing machines are humanly comprehensible and lambda calculus is not.

EDIT: It's interesting how many replies seem to understand lambda calculus better than they understand ordinary mortals. Take anyone who's not a mathematician or a computer programmer. Try to explain Turing machines, using examples and diagrams. Then try to explain lambda calculus, using examples and diagrams. You will very rapidly discover what I mean.

Comment author: Morendil 03 March 2010 08:33:57AM 3 points [-]

A friend of mine has invented a "Game of Lambda" played with physical tokens which look like a bigger version of the hexes from wargames of old, with rules for function definition, variable binding and evaluation. He has a series of exercises requiring players to create functions of increasing complexity; plus one, factorial, and so on. Seems to work well.

Alligator Eggs is another variation on the same theme.

Comment author: SoullessAutomaton 03 March 2010 05:35:37AM *  3 points [-]

Are you mad? The lambda calculus is incredibly simple, and it would take maybe a few days to implement a very minimal Lisp dialect on top of raw (pure, non-strict, untyped) lambda calculus, and maybe another week or so to get a language distinctly more usable than, say, Java.

Turing Machines are a nice model for discussing the theory of computation, but completely and ridiculously non-viable as an actual method of programming; it'd be like programming in Brainfuck. It was von Neumann's insights leading to the stored-program architecture that made computing remotely sensible.

There's plenty of ridiculously opaque models of computation (Post's tag machine, Conway's Life, exponential Diophantine equations...) but I can't begin to imagine one that would be more comprehensible than untyped lambda calculus.

Comment author: Tyrrell_McAllister 03 March 2010 12:23:31PM *  1 point [-]

I'm pretty sure that Eliezer meant that Turing machines are better for giving novices a "model of computation". That is, they will gain a better intuitive sense of what computers can and can't do. Your students might not be able to implement much, but their intuitions about what can be done will be better after just a brief explanation. So, if your goal is to make them less crazy regarding the possibilities and limitations of computers, Turing machines will give you more bang for your buck.

Comment author: wnoise 03 March 2010 05:51:18AM *  2 points [-]

You realize you've just called every computer scientist inhuman?

Turing machines are something one can easily imagine implementing in hardware. The typical encoding of some familiar concepts into lambda calculus takes a bit of a getting used to (natural numbers as functions which composes their argument (as a function) n times? If-then-else as function composition, where "true" is a function returning its first argument, and "false" is a function returning its second? These are decidedly odd). But lambda calculus is composable. You can take two definitions and merge them together nicely. Combining useful features from two Turing machines is considerably harder. The best route to usable programming there is the UTM + stored code, which you have to figure out how to encode sanely.

Comment author: wedrifid 03 March 2010 06:23:47AM 2 points [-]

You realize you've just called every computer scientist inhuman?

Just accept the compliment. ;)

Comment author: wedrifid 03 March 2010 06:01:31AM 1 point [-]

If-then-else as function composition, where "true" is a function returning its first argument, and "false" is a function returning its second? These are decidedly odd)

Of course, not so odd for anyone who uses Excel...

Comment author: SoullessAutomaton 03 March 2010 06:09:48AM 2 points [-]

Booleans are easy; try to figure out how to implement subtraction on Church-encoded natural numbers. (i.e., 0 = λf.λz.z, 1 = λf.λz.(f z), 2 = λf.λz.(f (f z)), etc.)

And no looking it up, that's cheating! Took me the better part of a day to figure it out, it's a real mind-twister.

Comment author: Douglas_Knight 03 March 2010 05:26:49AM 0 points [-]

Maybe pure lambda calculus is not humanly comprehensible, but general recursion is as comprehensible as Turing machines, yet Gödel rejected it. My history should have started when Church promoted that.

Comment author: rwallace 03 March 2010 04:51:25AM 0 points [-]

It's much of a muchness; in pure form, both are incomprehensible for nontrivial programs. Practical programming languages have aspects of both.