
Is HTML a Programming Language? - brudgers
http://web.media.mit.edu/~pliam/res/blog_1.html
======
eurleif
This article does not mention the phrase "Turing completeness" once. The core
of its argument is just a half-assed comparison between HTML and machine
language, because neither has explicit control structures, and HTML links are
kind of like implicit control structures if you squint really hard. Lame.

~~~
rayiner
Ran here to see this comment. If it isn't Turing complete, it's not a
programming language. Arguably it's not necessarily a programming language
even if it's Turing complete. E.g. c++ templates.

~~~
spacehome
> If it isn't Turing complete, it's not a programming language.

Says who?

Turing completeness is nice and all, but it also comes with some baggage and
difficulties. There's value in having constrained domain specific languages.

~~~
cbd1984
> Says who?

Says most of the people who care, and who therefore use the term the most.

------
bunderbunder
This article prompts a staccato of reactions in me.

The first is to observe the Argument of the Beard.

Next is to think about how telling your VCR to start recording whatever's on
TV at 3pm and stop at 4pm is known as programming it.

After that I get lost in a quagmire of musing whether SQL is a programming
language.

After that I start thinking about Turing completeness, followed quickly by the
observation that there are things that are Turing complete that I would not
consider to be programming languages.

And then at some point I realize we're just idly shuffling words and the
meanings of words around the table. That's where I suddenly lose interest
because I've really got no reason to have a problem with the current
vernacular meaning of the term.

~~~
cbd1984
> there are things that are Turing complete that I would not consider to be
> programming languages.

Like what?

~~~
dllthomas
Lots of cellular automata, probably.

------
dotdi
Quote: "However, if you are configuring an application by setting its
preferences, or an operating system by manipulating its system files, or a
webpage by marking up its text with HTML, anything that will set up the future
behavior of the computer to accomplish something for you, then these are
activities that are so closely akin to anything essential that can be said
about what programming is, that I no longer see the point in trying to forge a
distinction."

Not programming, not programming and, yes, not programming.

------
halosghost
Honestly, I was expecting this article to go a completely different way.
Namely, I expected it to talk about how <canvas> is Turing complete (and
therefore, should be valid consideration as a programming language as much as
LaTeX or Cxx templates are).

There's certainly use in confronting elitism and FUD, but having a technical
kernel (see what I did there? :P) of truth supporting a more abstract argument
would be far more compelling imho. I'd really love to see more discussions
about <canvas> and what it means for the future of HTML as a language (and
whether or not it will come to be a more fully-fledged programming language
itself).

~~~
mrj
And yet he attacks elitism with his particular kind of elitism.

I'm not sure this is at all useful.

"Go get some more education at an institution other than a glorified
vocational training center."

~~~
brudgers
I believe that "glorified vocational training center" is a self-depreciating
reference to the author's home institution, MIT. I suspect that other members
of the MIT community were the first order audience for the article and the
thrust of his critique is that claims that HTML is not a programming language
are structured as arguments from authority.

What makes

    
    
      (print "Hello World")  ; MIT/GNU Scheme
    

a proper program, and

    
    
      <p>Hello World</p>
    

something else seems more rooted in opinion than any intrinsic difference.

~~~
eurleif
How about this for an intrinsic difference: one language is capable of
performing arbitrary computations (it's Turing complete), and the other is
not?

~~~
halosghost
The only problem with that is that, recently, there has been a resurgence of
the notion of sub-turing complete languages as still being valid programming
pursuits. E.g., see Coq.

I have not really come down on one side or the other (mainly because I do not
have the requisite experience and have not yet had the time to research the
question thoroughly enough to form a well-founded opinion). But, that
programming languages must be Turing complete is not necessarily a given.

~~~
brudgers
The classification of Coq versus HTML is like that of classifying people as
expats versus migrants, it reflects more upon the affinity of the person
classifying for what is being classified than upon any objective distinction.

Computer Scientists use Coq and Web Designers use HTML. Denying HTML is a
programming language is a mechanism for denying a particular form of
legitimacy to a particular cluster of activities. It's not like you're average
Java programmer could actually prove that Java is Turing Complete in
polynomial time. Most people take it on authority that C is Turing Complete,
and that's reasonable because that's the way science largely works.

~~~
halosghost
It feels like you may have misunderstood my purpose. My point was not that
HTML should be denigrated from the status of programming language where Coq is
a programming language. My point was that the line is blurry (I think you and
I agree on this), and that it is not a given that a “programming language” is
necessarily Turing complete.

~~~
brudgers
It feels like you may have considered my reply an argument rather than a riff
on your observation that Coq gets props as a programming language. When I see
a programming language that comes with an infinite tape, I'll take the idea of
Turing Completeness as a necessary condition for a programming language more
seriously.

My point is that excluding HTML from the family of programming languages is a
social distinction. And mentioning Turing Completeness is usually a way of
cutting off conversation not opening it up.

~~~
halosghost
Ahh, I must have misread; it seems you and I are on exactly the same page :)

------
hyperliner
If we define a programming language as a "language designed to communicate
instructions to a computer," and then we observe that most "traditional"
programming languages require an intermediary to make the computer "do what
the program intends" (such an intermediary being a compiler or a runtime or
some other transformation), then one could argue that HTML is a language, and
the browser is such intermediary.

Therefore, HTML is a programming language, IMHO. It may be "primitive" in the
pecking order of programming languages based on some arbitrary definition of
sophistication, but it rises above the stated definition.

~~~
zzalpha
By this definition any input that a program processes would qualify, since
inputs by definition "instruct" the program how to operate.

At that point you've robbed the term of any useful meaning.

~~~
hyperliner
Inputs are not instances of a computing language. They are arguments or
parameters to the program.

~~~
zzalpha
HTML is not an instance of a "computing language". HTML is simply an input to
a program.

------
projectramo
There are two ways to go about answering this:

1\. You could try a formal definition -- such as Turing completeness

2\. You could accept a colloquial definition. This definition has to be
extracted from the things that people call programming languages.

If you opt for #1, then you have to accept you have abandoned #2. There are
things that are Turing complete which people in the ordinary use of English
may not think of as programming languages. (For instance: an actual Turing
Machine with the infinite tape).

If we go with #1, knowing full well that it may be counter-intuitive, then we
are left with a technical question which, at least, can be answered. You can
see if rule 110 or whatever can properly be implemented. You can decide if
some feature of the browser allows for it and so forth. At least you know what
the exercise is.

If you decide you want to capture people's intuitive sense of a "programming
language" then you have to intuition monger. I think intuitions are informed
by the use of the word "language" as well.

So, for instance, people may "program" a VCR, but no one calls that using a
programming "language." This is because it does not feel language-like to us.
Same with an actual Turing machine. If you transcribe the instructions of the
Turing machine into instructions like "1 - go forward, 2 - print a 1, 3 - go
back" etc, then suddenly it "feels" like a language.

If you accept that you are intuition mongering, I think you would have to poll
people who are familiar with HTML and other languages and ask them. (I suspect
they would say, in general, that it is not).

Of course, #2 may change as the language evolves and our sense of what a
"language" is evolves with it.

------
oxymoron
I'm not sure where you're seeing all this controversy, nor do I quite
understand why you're so upset about it. Nevertheless, why don't we just judge
HTML in terms of its intended purpose? Before CSS and Javascript and the
separation of semantics, presentation and behavior I might actually have
agreed with you. At this stage, though, I'd venture that HTML is designed for
the purpose of describing the semantic notions of a document rather than
computation. Since you ask us to be humble I'll oblige and concede that not
all programming languages have to be turing complete (there are useful
languages that aren't). But surely it has to be designed with computation as a
purpose? Even CSS fullfills that criteria to a higher degree. If not, you
might as well argue that any arbitrary language at any level in Chomskys
hierarchy constitutes a programming language. It's been a while since I read
SICP but I really don't think this is what Abelson and Sussman had in mind.

~~~
cshimmin
> I'm not sure where you're seeing all this controversy, nor do I quite
> understand why you're so upset about it.

FWIW, the post is from September 2003:

[http://web.media.mit.edu/~pliam/res/blogettes.html](http://web.media.mit.edu/~pliam/res/blogettes.html)

------
orionblastar
HTML is a presentation language, XML is a data language, JavaScript is a
programming language.

HTML is more like Powerpoint, XML like MS-Access.

~~~
mattmurdog
HTML is like Powerpoint? Wow, if only it was that easy. It's more like Excel
IMO if we really want to make such an asinine comparison.

~~~
crimsonalucard
how would I add two numbers in html? <p>1+1=2</p>

~~~
nabaraz
<p><script>document.write(1+1);</script></p>

~~~
cbd1984
Javascript is not HTML. Both can usefully exist without the other.

------
fungos
No.

------
drew-y
The green text on a black background makes this incredibly hard to read.

~~~
vorg
Just whip up a little Javascript function and drop it into your HTML between
the relevant tags and refresh your cached page. Oh wait... I meant reprogram
the color settings in your HTML.

~~~
AlexeyBrin
Or you can modify the CSS:

    
    
        <style type="text/css">
          body {
              background-color: white;
          }
            
          .bodytext {
              color: black;
          }
        </style>

