I’ve always heard people talk about how the programming languages of the web are html and css. But learning them is so different from any other language it doesn’t really feel like it should even qualify as a programming language. Funnily enough… it isn’t.
But wait a sec — if it’s not a programming language, then what is it? Well lets get this straight first… it is a language. More specifically its a “Markup Language”. In fact thats what the “ML” in HTML stands for! Problem is we still haven’t identified the difference, I mean, whats really going on here that separates HTML (and css) from the other languages?
The answer is very simple actually; Logic. The difference between HTML and other languages like Python, C++, Ruby, etc. is really the difference between writing an english paper and a math paper. In fact let’s break that down.
Let’s say that HTML is like writing in english. What you see is what you get and it’s very straight forward. Nothing going on behind the scenes. With other languages — the programing ones — its more like writing a math problem. instead of writing “2”, we could write 1+1.. or even more so write X+Y and take input from the user, do work on that input, and then output a different value! And thats the difference!
Easy enough right?! Well…. This is all true so far and if you want to stop here you will know about this concept, and all the information here is true. However, there is a bit of a rabbit hole I stumbled into while researching HTML and css that I’m going to dive into now, so if you’re still with me then buckle up, this will get a bit crazy.
Ok so the confusion comes from these things called cellular automatons. The most popular one being Conways game of Life; they are a set of rules for how adjacent cells interact with each other in a grid. One of these cellular automaton — Rule 110, is capable of universal computation, which means its turing complete!(this is kind of complicated and I would recommend doing some research on rule 110 if you’re interested in this concept). But why does this matter anyway?
It turns out that using css and HTML and a tiny bit of help with some user input you can actually build cellular automatons with checkboxes! This means that HTML + CSS + human input is actually turing complete and capable of universal computations and logic!
However, after reading a TON of blogs and articles about cellular automatons and how you can use css and checkboxes to KIND OF make them I think it’s still safe to say that css and HTML are still NOT Programing languages.
Even though they aren’t technically programming languages I think its important to point out though that they are still extremely important and aren’t any less important than other languages! If we take a step back to look at the math and english example its easy to see that math isn’t any more important than written language! They are just different and that ok! It’s a good thing!