It's not turing complete. There are limits to the types of computation that can be performed with it.
It's not silly -- it's a meaningful distinction.
As an example: if you use a Game Maker application to construct a video game where your inputs are the graphics, the level design, and some basic scripting to connect them up, is the resulting output "not a program" because the input scheme that you used in order to define its behavior was not Turing Complete? You could make an argument that, in the context of Quines, this isn't relevant because the Program is not outputting its own source code but only the top-most layer of its definition, but then again that's true at some level for any Quine not written in machine code (and even then it'd probably be missing much of the OS / display drivers / etc.).
Edit: removed an example about "programmable TV remotes" because it wasn't a very good example, and added a note about Quines.
Limitations of those instructions is the key aspect. You couldn't use any English or natural language expression for example. It might seem obvious but complexity of those instructions is what makes the language abstract. Having complicated instructions isn't always desireable though e.g. the CISC vs RISC debate.
An HTML file cannot be a Quine because an HTML file is not a program because HTML is not Turing Complete.
Adding two numbers in HTML might be expressable but clearly it's much easier in Javascript.
Cellular automation is Turing-complete, but is not a program.
Turing-complete is a fun thing to talk about in college theory classes, but has limited practical use outside of academia.
https://github.com/ainfosec/crema
Also, you can generate RSA key pairs using HTML: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ke...
IMHO, the better mental model is that HTML is a declarative programming language that is very abstract.
My point is let's stop being so pedantic in the soft spaces. This isn't a discussion about "should I use HTML to write my kernel?"
For example, a Lisp based on JSON:
https://github.com/kanaka/miniMAL
A program:
["+", 2, 3]
I suppose this is still not a proof that JSON is (or can be) a programming language, since it covers only the notation.I also did not say HTML is not a programming language.
Doesn't the "to be rendered" part make it instructions? Its like there are two labels for a bottle of poison: "poison" and "poison: do not drink". But the label that says "poison" is of a shape, color, and design that is commonly understood to be a label that tells the reader not to imbibe the contents of the bottle to which it is attached.
I do think that, in specific technical contexts, a useful distinction (though still fuzzy on the margins) can be made between programming languages and markup languages.
that is my real point
HTML with either CSS3 or JavaScript is definitely a program, though.
So GET and POST are figments of my imagination then?
Saying that HTML can send HTTP messages is like saying that HATEOAS API responses[1] can send HTTP messages. They can't without a separate program (written in a non-HTML language) to interpret the HTML and send the message.
Then so is something in HTML that doesn’t use CSS3 or JavaScript, for the same reason that a C program that contains no loops is still a program.
HTML is not "C without loops". It is, by definition, a subset of the string type. All HTML is a string, but not all strings are HTML.
The following is valid C, but I would absolutely argue that it isn't a program:
char str[] = "Geeks";
It's a declaration, just like HTML is. It is a string that is being declared and stored.Still, that C example is more of a program than any HTML is because it contains an instruction. It manipulates memory.
HTML is literally just a file format. It is not any more of a program than a PNG file is.
Neither can an ELF binary. It needs a loader to execute it.
> It can't run or be executed.
Yes it can, with a runtime that understands HTML.
> It doesn't transform state or even have state. It's not Turing complete.
That's not a requirement for a program.
Remember that html files are not just html. The way we use them today they are fully functional programs.
It seems we agree that HTML (a language, not a file that also includes other languages) cannot create a game like Mario or even Pong.