Every now and then we read debates that HTML is a programming language, that it isn't a programming language... I don't understand the point of the debate. It seems to come from a group of people that want to gatekeep who gets to be called a programmer. In any case, having this debate without defining what we understand as programming language makes no sense. So let's look into that.

The canonical source when it comes to programming language classifications is Jean E. Sammet 1969 book Programming Languages: History and Fundamentals. She was an early computer pioneer, where she helped design COBOL among other programming languages. She was the first female president of the ACM so that says a lot about her career impact in computer science.

In that book she provides a couple of defining characteristics for programming languages. Let's see if HTML meets them:

Machine Knowledge Is Unnecessary

In this case "a programming language requires no knowledge of the machine code by the user". The user shouldn't learn about registers, how numbers are represented by the machine, and so on. This doesn't not mean, as Sammet clarifies, that the programmer cannot learn about these characteristic of the machine in order to write better programs, is that it is not required to know them to use the language.

HTML meets this characteristic.

Potential for Conversion to Other Computers

From the previous characteristic we can derive the second one. If the user can ignore the machine in which the program is going to run, a programming language thus must be able to be ported to different machines. Programming languages should be machine independent as Sammet says.

HTML meets this characteristic. It runs in every browser in most modern computers out there.

Instruction Explosion

In this case when the program is translated to machine code, each statement in the program should produce multiple machine code instructions. Also says Sammet, the user doesn't need to write any of this machine code for their program to work.

HTML meets this characteristic.

Problem-Oriented Notation

"A programming language should have a notation which is somewhat closer to the specific problem being solved than is normal machine code". So instead of doing:

CLA C
MPY D
ADD B
STO A
Enter fullscreen mode Exit fullscreen mode

A problem oriented language would have a syntax like this:

A = B + C * D
Enter fullscreen mode Exit fullscreen mode

HTML meets this characteristic. It's pretty clear that HTML fits this requirement.

So based on her selection criteria I would assume that HTML would have made it into her book mentioned above.

Where is Turing Completeness?

As you can see, in Sammet requirements for programming languages, Turing completeness is not part of them. Even more, Alan Turing is not cited in the book, among the hundreds of references cited there, not one of the was Turing. Which makes us wonder what was the influence his ideas had back in the 60s when we had the programming language explosion.