Path: utzoo!mnetor!tmsoft!torsqnt!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!think.com!barmar From: barmar@think.com (Barry Margolin) Newsgroups: comp.lang.misc Subject: Re: Look ... [or: one, two, three, many] Message-ID: <1991Jan3.004602.18576@Think.COM> Date: 3 Jan 91 00:46:02 GMT References: <23986:Dec2703:47:1390@kramden.acf.nyu.edu> <1990Dec27.043209.7131@Think.COM> <18463:Jan219:52:0391@kramden.acf.nyu.edu> Sender: news@Think.COM Organization: Thinking Machines Corporation, Cambridge MA, USA Lines: 48 In article <18463:Jan219:52:0391@kramden.acf.nyu.edu> brnstnd@kramden.acf.nyu.edu (Dan Bernstein) writes: >In article <1990Dec27.043209.7131@Think.COM> barmar@think.com (Barry Margolin) writes: >> You mean real-world programmers would be happy if we replaced Fortran, >> Pascal, C, and Lisp with raw Turing Machines? >Seriously: No, because once you have equal power you start paying >attention to efficiency. If the hardware is crippled then things won't >run at a reasonable speed. I guess I haven't learned that you require everything spelled out precisely. First of all, a Turing Machine is an abstract device, so it doesn't make sense (to me) to refer to the efficiency of the hardware -- there is no hardware. Since I was talking about replacing programming languages, my sentence wouldn't have made sense if I were suggesting replacing them with hardware. What I was actually referring to was the Turing Machine programming model, which is basically an infinite state automaton. On finite computers this can be approximated by a finite state automaton with a large enough number of states (i.e. a large address space). So, I guess I meant was: you mean real-world programmers would be happy if we replaced their high-level languages with low-level FSA interpreters/compilers, assuming they produce similarly efficient code. I believe the TM model of programming is even more low-level than most assembly languages. And it's well-known that good assembly programmers can produce more efficient programs than high-level language programmers (given the state of most compilers). Yet most people prefer to program in high-level languages. Anyone who prefers high-level languages over assembly is not likely to want a TM. Basically, it is well-known that most general-purpose programming languages are computationally equivalent to each other. Expressive power refers to the *ease* with which they can be used, not to their fundamental computational power. If two languages are identical except that one has a built-in exponentiation operator, the one with is more expressive than the one without, even though exponentiation can be programmed in the one without. (Note that I use "built-in" to include "available in a standard library", since the distinction I am making refers to whether the user of the language is forced to write or obtain the operator versus being able to assume its existence.) -- Barry Margolin, Thinking Machines Corp. barmar@think.com {uunet,harvard}!think!barmar