May 17, 2021

Tennant’s Simple Guide to Programming Languages

programminglanguagesA colleague recently pointed out that IEEE Spectrum had an interactive tool by which you could explore the top programming languages in various areas (e.g., mobile, web, enterprise, and embedded). Besides noting that my favorite web programming language barely made it into the top ten for the Web (Perl, which they mistakenly called PERL), I was astonished by something.

They included HTML and called it “A specialized language for describing the appearance and content of Web pages.” Say what? If they had called their tool “The Top Languages” (leaving out “Programming”), then fine, but they didn’t.

This nonsense, especially coming from IEEE of all places, set me off. I decided I would have to instruct them about what makes a programming language. I fired up OmniGraffle and got to work. Soon I had the chart you see here, which defines what makes a programming language a programming language for IEEE or anyone else who needs help figuring it out.

Then a different colleague pointed out the XSLT edge case. It’s an edge case because although you can use it to write loops, you can’t run it independently — you need a separate XSLT processing engine like Sax or XSLTproc to execute it. So it is really the combination of XSLT plus a processing engine that can be considered a programming language, given my definition above.

But one thing is perfectly clear — HTML does not make the cut. Also, oddly enough, when you look at only the “Web” programming languages HTML comes in 8th in the list — that’s right, 8th! — below my favorite language Perl. Go figure that one out.

Roy Tennant About Roy Tennant

Roy Tennant is a Senior Program Officer for OCLC Research. He is the owner of the Web4Lib and XML4Lib electronic discussions, and the creator and editor of Current Cites, a current awareness newsletter published every month since 1990. His books include "Technology in Libraries: Essays in Honor of Anne Grodzins Lipow" (2008), "Managing the Digital Library" (2004), "XML in Libraries" (2002), "Practical HTML: A Self-Paced Tutorial" (1996), and "Crossing the Internet Threshold: An Instructional Handbook" (1993). Roy wrote a monthly column on digital libraries for Library Journal for a decade and has written numerous articles in other professional journals. In 2003, he received the American Library Association's LITA/Library Hi Tech Award for Excellence in Communication for Continuing Education. Follow him on Twitter @rtennant.


  1. Warren Layton says:

    It’s HTML, not HTPL. This is beyond pathetic by the IEEE.

  2. Peter van Boheemen says:

    What do you mean with ‘run independently’ . Any program language needs a processing engine. Certainly interpreted languages, but even compiled languages. So that is a weird argument. XSLT certainly is a programming language. I would even say it is a functional programming language:

    • Peter, Good point, and I agree that XSLT is a programming language, although I still think it is an edge case because it requires a third component — an XML document to process. This is not a requirement of other programming languages.

  3. Peter Van Boheemen says:

    Well, the XML document is input. XSLT does not need an input file. But any program in any language needs input to do something. I would not recommend XSLT for a problem that does not involve an XML doument to be processed, but I would not recommend any other program language to process an XML document :) (Most programmers hate XML and love JSON, just because it is hard to process XML in other languages but XSLT)