[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Low-level vs. High-level programming (was My First Computer)
- Subject: Re: Low-level vs. High-level programming (was My First Computer)
- From: mjmahon@aol.com (Michael J. Mahon)
- Date: 19 Jun 2003 19:32:52 GMT
- Newsgroups: comp.sys.apple2
- Organization: AOL http://www.aol.com
- References: <dAcIa.6183$J52.2411@fe02.atl2.webusenet.com>
- Xref: archiver1.google.com comp.sys.apple2:31499
Randy McLaughlin wrote:
>In a previous post you will see I stated that HTML would never be able to
>help you balance your check book. It is not a mathematical language.
>Surprise there are more than one type of computer language.
>
>I don't know if you are aware of it but you seem to be stuck in the concept
>that since a Turing machine is an example of a computational engine and the
>machine that is running the HTML code is a computational device (a computer)
>ergo the whole world is a Turing machine. I'm afraid it's not true. A
>computer is flexible enough to run computational programs as well as others.
>The thread is about Low-level vs. High-level programming. HTML is a very
>useful High-level programming. It is not an example of getting the most
>efficiency out of the computer.
Randy, I think the question hinges on what is a computation.
HTML is the input language for the "browser" virtual machine. It is
capable of instructing the browser engine to do whatever can both be
expressed in HTML and interpreted by the browser. This set of
operations (with HTML alone) does not include being able to set
a variable and retrieve or modify its value in any useful way, nor
is HTML able to cause the browser to re-ingest its rendered output,
so it is not possible to express arbitrary computations in HTML.
I think you agree with this statement.
In mathematics and computer science, a mechanism is deemed
capable of arbitrary computation if it is "Turing equivalent", meaning
that it can perform any computation that a Turing machine can
perform. By this definition, all computers and all the usual things
called "programming languages" are equivalent in the range of
computations they can express. They can make that expression
easier or more difficult, but none of them can perform any
computation that all the others cannot perform, given enough
time, resource, and effort. This is a mathematical result, and
not of great practical importance, except as a touchstone for
whether the mechanism is, in fact, a general computational
device.
It is actually quite remarkable that all the advances in speed
and capacity of computer systems have done nothing to extend
the range of what they can _theoretically_ compute beyond what
a Turing machine can compute. Of course, the _practical_ limits
continue to be extended remarkably.
I believe that it would be more useful to consider the discussion
you are having as a _definitional_ argument, to arrive at suitable
terminology for 1) languages capable of expressing general
computations, and 2) languages that express operations
which do not constitute a complete computational set.
Certainly, HTML is a "language", but by conventional definitions
it is not a "programming language". Some might call it a "data
language" since it is primarily data, with embedded descriptive
information--like musical notation, for one unusual example.
It prescribes what a browser should do to produce the resulting
page rendering (on whatever output device is being used) just
as musical notation describes what a musician should do to
produce the intended sounds (on whatever instrument is being
played). (BTW, musical notation is one of the _very_ few
human notations that describes explicitly concurrent actions. ;-)
-michael
Check out amazing quality 8-bit Apple sound on my
Home page: http://members.aol.com/MJMahon/