Stop Calling HTML and CSS Programming Languages

Christopher Lam
The FOSS Albatross
Published in
3 min readFeb 3, 2023

I hear way too many people calling HTML and CSS programming languages when asked what programming languages they know!

I see the same on a multitude of resumes as well!

HTML and CSS are not programming languages, and here is an explanation of why.

HTML — Hypertext Markup Language

HTML, as stated in its name, is a markup language. The purpose of HTML is to create and arrange components to be displayed on a web page.

CSS — Cascading Style Sheets

CSS, again as stated in its name, is a styling language. The purpose of CSS is to make elements look pretty.

Programming Languages

By contrast, programming languages such as JavaScript, C++, and Python can implement the logic of algorithms for purposes like sorting, searching, and graph theory. See where this article is going?

Turing Completeness

The Game of Life is actually Turing Complete!

Neither HTML nor CSS are Turing complete unlike languages such as JavaScript, C++, and Python. This key differentiating factor is why HTML and CSS are not true programming languages.

Turing completeness is the ability of a language to simulate the behaviour of a Turing machine, which is a mathematical model of a general purpose computer created by the great computer scientist Alan Turing. Generally speaking, a programming language is Turing complete if it can implement any logic that can be described as an algorithm.

Here are the main requirements for a programming language to be considered Turing complete:

  • The ability to perform arithmetic operations (addition, subtraction, multiplication, division)
  • The ability to move data between memory locations and perform tests on the data
  • The ability to loop and repeat operations based on conditions
  • The ability to call subroutines and return from them

HTML and CSS clearly do not satisfy these requirements!

There’s no way to implement basic algorithms like bubble sort or even basic addition with HTML and CSS! Do I even need to go into their inability to access memory and call functions?

Turing completeness is essential for the functionality of modern software! As such, no language should be considered a true programming language if it cannot offer this functionality.

What To Actually Call Them

HTML and CSS are not programming languages, so stop listing them as such! They are just normal languages to help us make software.

The same goes for other non Turing complete languages like XML, SQL, and YAML.

So next time someone asks you what programming languages you know, please don’t list languages like HTML and CSS!

The same goes for programming languages on your resume! They’re just languages, and there’s no need to give them any more credit than they deserve.

--

--

Christopher Lam
The FOSS Albatross

Christopher Lam is a Canadian student with a passion for writing and sharing ideas. Read about technology, watches, business, politics, history, and lifestyle.