<style type="text/css">a[data-mtli~="mtli_filesize161MB"]:after {content:" (1.61 MB)"}</style>{"id":12133,"date":"2024-12-19T22:11:00","date_gmt":"2024-12-19T21:11:00","guid":{"rendered":"https:\/\/monodes.com\/predaelli\/?p=12133"},"modified":"2024-12-19T09:32:38","modified_gmt":"2024-12-19T08:32:38","slug":"is-html-a-programming-language-webbed-briefs","status":"publish","type":"post","link":"https:\/\/monodes.com\/predaelli\/2024\/12\/19\/is-html-a-programming-language-webbed-briefs\/","title":{"rendered":"Is HTML A Programming Language? (Webbed Briefs)"},"content":{"rendered":"\n<p>Today I stumbled into this Fediverse post:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>A great conversation in the supporter Discord\/Matrix reminded me that it&#8217;s about time to share this fantastic item by <a href=\"https:\/\/mastodon.uno\/@heydon@front-end.social\" rel=\"noreferrer noopener\" target=\"_blank\">@heydon<\/a>.<\/p>\n\n\n\n<p>Anyway, yes HTML is a programming language and folks who argue with this statement in my comments will be muted, blocked, defederated, or all three.<\/p>\n\n\n\n<p><a href=\"https:\/\/briefs.video\/videos\/is-html-a-programming-language\">https:\/\/briefs.video\/videos\/is-html-a-programming-language<\/a><\/p>\n<cite>From <a href=\"https:\/\/mastodon.uno\/@vkc@linuxmom.net\/113669662074489728\">https:\/\/mastodon.uno\/@vkc@linuxmom.net\/113669662074489728<\/a><\/cite><\/blockquote>\n\n\n\n<p>I was naively answering a sound <strong>no<\/strong>, then I took the time to read the transcription at  <em><a href=\"https:\/\/briefs.video\/videos\/is-html-a-programming-language\/\">Is HTML A Programming Language? (Webbed Briefs)<\/a><\/em> (also copied at page 2 of this post).<\/p>\n\n\n\n<p>Well, that&#8217;s an interesting reading.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>As an aging grumpy person I even missed the fact that CSS is Turing complete! Indeed it is, see <a href=\"https:\/\/brandondong.github.io\/css-turing-machine\/\">https:\/\/brandondong.github.io\/css-turing-machine\/<\/a><\/p>\n\n\n\n<p>I tend to agree with <a href=\"https:\/\/mastodon.uno\/@mausmalone@mastodon.social\"><strong>mausmalone<\/strong><\/a> who wrote<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><a href=\"https:\/\/mastodon.uno\/@vkc@linuxmom.net\" target=\"_blank\" rel=\"noreferrer noopener\">@vkc<\/a> I work on web dev and I personally have never considered HTML a programming language and I never understood what the debate was all about or why it was contentious. I&#8217;m glad now that I&#8217;ve never bothered to argue about it, because I wholeheartedly believe that web professionals and web work are undervalued.<\/p>\n<cite>From <a href=\"https:\/\/mastodon.social\/@mausmalone\/113670088334657621\">https:\/\/mastodon.social\/@mausmalone\/113670088334657621<\/a><\/cite><\/blockquote>\n\n\n\n<p>As far I could understand the issue is undervalueing work made by other people and overvalueing your own work<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<h2 class=\"wp-block-heading\">Title:Is HTML A Programming Language? Published:5th March 2022<\/h2>\n\n\n\n<p>It\u2019s been a long time! Glad to be back. In this episode, I ask a question that has <strong>never<\/strong> been asked before and has <strong>certainly not<\/strong> in any way caused a great number of arguments and <strong>nobody<\/strong> has ever been blocked or muted on social media for asking it. Bon app\u00e9tit.<\/p>\n\n\n\n<p><a href=\"https:\/\/war.ukraine.ua\/donate\/\">Help Ukraine defend itself<\/a>.<\/p>\n\n\n\n<p>These things take a solid <em>frickin\u2019<\/em> week to make so, if you\u2019re able, support me on <a href=\"https:\/\/opencollective.com\/webbed-briefs\"><strong>Open Collective<\/strong><\/a> or <a href=\"https:\/\/webbed-briefs.teemill.com\/collection\/new\"><strong>buy a T-shirt or hoodie<\/strong><\/a>!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Transcript \u2193<\/h2>\n\n\n\n<p>In this episode of Webbed Briefs, I shall be asking the question, <em>\u201cIs HTML A Programming Language?\u201d<\/em> And\u2014spoiler alert\u2014I shall be answering that question, quite emphatically, with this word: <em>\u201cYes\u201d<\/em>, which is the standard British English term for <em>\u201cYes\u201d<\/em>.<\/p>\n\n\n\n<p>That\u2019s the easy part out of the way. Now let\u2019s examine some of the objections to the unequivocally true statement, <em>\u201cHTML is a programming language\u201d<\/em>.<\/p>\n\n\n\n<p>(1) \u201cYou can&#8217;t write a program with HTML\u201d<\/p>\n\n\n\n<p>What is programming? Programming is giving computers instructions. It\u2019s telling them what to do. Programming languages are grammars understood by and intended for computers.<\/p>\n\n\n\n<p>With that in mind, your first clue that HTML is a programming language is that you don&#8217;t see HTML tags on a rendered web page. That&#8217;s because they are not intended to be seen and read directly by human visitors to that page.<\/p>\n\n\n\n<p>Your second clue that HTML has gone and done some ruddy programming all up in your computer is the graphical topography of the web page you are looking at. Without HTML <em>instructing<\/em> the computer to structure and format it according to the HTML author\u2019s instructions, it would look something like this.<\/p>\n\n\n\n<p>(2) \u201cHTML is not Turing complete\u201d<\/p>\n\n\n\n<p>Neither are the languages SQL, Sequel, or Skwool.<\/p>\n\n\n\n<p>Turing completeness is <em>one<\/em> way of measuring the capacity of <em>general purpose<\/em> programming languages, not a test for programming <em>per se<\/em>.<\/p>\n\n\n\n<p>HTML is a domain specific programming language, not designed for anything but rendering web documents: a singular but important purpose. I feel like this is a fairly simple diagram to understand. So this shouldn\u2019t give you much trouble either. Or this.<\/p>\n\n\n\n<p>(3) \u201cHTML isn\u2019t a programming language, it\u2019s a markup language\u201d<\/p>\n\n\n\n<p>Sure, and this isn\u2019t a quadruped, it\u2019s a horse. A markup language is not a natural language; it has strict syntactical rules intended to be understood by computers. And the only reason we want computers to understand those rules is <em>in order to tell the computer what to do<\/em> AKA programming.<\/p>\n\n\n\n<p>What you really mean when you say <em>\u201cHTML isn\u2019t programming\u201d<\/em> is <em>\u201cHTML isn\u2019t the kind of complex or impressive programming I\u2014a person desperate to make claims of intelligence\u2014could possibly lower myself to be associated with.\u201d<\/em> Which is all the more embarrassing for you when the HTML you <em>do<\/em> end up writing sucks so much ass.<\/p>\n\n\n\n<p>(4) \u201cYou can tell HTML isn\u2019t programming because it doesn\u2019t have <code class=\"\" data-line=\"\">if<\/code> statements\u201d<\/p>\n\n\n\n<p>First of all, yes it f**king does. But also: do you see any <code class=\"\" data-line=\"\">if<\/code> statements on this, a punch card? Even one? No you can\u2019t. And if punch cards <em>\u201caren\u2019t programming\u201d<\/em> then we\u2019re missing a rather important antecedent to the programming that does fit your wild preconceptions.<\/p>\n\n\n\n<p>Also, what the f**k is this expression? No <code class=\"\" data-line=\"\">if<\/code> statements here, can\u2019t be programming then.<\/p>\n\n\n\n<p>Instead of getting hung up on specific language features and formats, a much simpler way of determine whether some text is programming or not is to try and use it to tell a human being to do something.<\/p>\n\n\n\n<p id=\"forgiveness\"><em>Director\u2019s note:<\/em> Forgiveness<\/p>\n\n\n\n<p>And don&#8217;t be fooled by HTML pages still rendering when you write broken markup. That\u2019s because it is a <em>forgiving<\/em> language\u2014or rather, the browsers that render it are forgiving\u2014not that it isn\u2019t a programming language at all.<\/p>\n\n\n\n<p>If you don\u2019t believe HTML is a programming language because it is declarative and you simultaneously believe procedural JavaScript is improved by adopting a more declarative style, you may have brain worms.<\/p>\n\n\n\n<p id=\"objection:-html-doesn't-even-compile\"><em>Director\u2019s note:<\/em> Objection: HTML doesn\u2019t even compile<\/p>\n\n\n\n<p>Python, JavaScript, PHP, Perl, Ruby, and BASIC do not need to be compiled either. People are obsessed with making JavaScript <em>into<\/em> a compiled language but that\u2019s another matter for another day.<\/p>\n\n\n\n<p>(7) \u201cHTML doesn&#8217;t do anything on its own, it needs a browser to work\u201d<\/p>\n\n\n\n<p>We\u2019ve only just met, and this is crazy, but all programming needs something <em>to<\/em> program and an environment in which to perform that activity. Unless your intention is to, let\u2019s say, sell the text representing an unexecuted program as an NFT, your program has no value in and of itself. NFTs don\u2019t actually have anything but a purely transactional value anyway, but that\u2019s beside the point.<\/p>\n\n\n\n<p id=\"why-does-it-matter-if-html-is-a-programming-language-or-not\"><em>Director\u2019s note:<\/em> Why Does It Matter If HTML is a Programming Language or Not?<\/p>\n\n\n\n<p>If you expect HTML to manifest some sort of intrinsic worth like a rare mineral while accepting that other languages require runtime environments, that tells me you are applying more emotion than logic to the subject of whether HTML is or is not a programming language.<\/p>\n\n\n\n<p>(It is one.)<\/p>\n\n\n\n<p>(8) \u201cIf HTML is a programming language, then a Word document is a programming language\u201d<\/p>\n\n\n\n<p>A Word document is not a language at all, you absolute f**khead. You are reaching so hard to support your parochial views on programming, you\u2019ve conflated markup with the graphical user interface of a proprietary desktop publishing application.<\/p>\n\n\n\n<p id=\"why-does-it-matter-if-html-is-a-programming-language-or-not\"><em>Director\u2019s note:<\/em> Why Does It Matter If HTML is a Programming Language or Not?<\/p>\n\n\n\n<p>Well, programming is a relatively well paid occupation, largely because we consider it a difficult thing to do well. Even though, say, nursing or retail are probably a lot harder on a number of levels.<\/p>\n\n\n\n<p>By <em>othering<\/em> HTML (and related languages like CSS) as <em>just code<\/em> and <em>not really programming<\/em>, the implication is that they do not deserve the same care and attention as other languages.<\/p>\n\n\n\n<p>This can lead to a couple of unfortunate outcomes:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>People who specialize in HTML and CSS are not valued or paid as well as they deserve to be, or<\/li>\n\n\n\n<li>People who do so-called \u201creal programming\u201d are given the responsibility over a language they have no respect for because <em>\u201canyone fucker can write this shit\u201d<\/em><\/li>\n<\/ol>\n\n\n\n<p>Skilled professionals go underpaid or can\u2019t find work and the web itself becomes stuffed with hideous \u201cdiv buttons\u201d: keyboard and screen reader inaccessible faux button elements.<\/p>\n\n\n\n<p>In summary:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>HTML is a declarative language<\/li>\n\n\n\n<li>HTML is a domain specific language<\/li>\n\n\n\n<li>HTML is a markup language<\/li>\n\n\n\n<li>HTML is a Turing incomplete language<\/li>\n\n\n\n<li>HTML is <em>not<\/em> a natural language<\/li>\n\n\n\n<li>HTML is a programming language<\/li>\n\n\n\n<li>And so is CSS<\/li>\n<\/ol>\n<cite>From <a href=\"https:\/\/briefs.video\/videos\/is-html-a-programming-language\/\">https:\/\/briefs.video\/videos\/is-html-a-programming-language\/<\/a><\/cite><\/blockquote>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p class=\"excerpt\">Today I stumbled into this Fediverse post: A great conversation in the supporter Discord\/Matrix reminded me that it&#8217;s about time to share this fantastic item by @heydon. Anyway, yes HTML is a programming language and folks who argue with this statement in my comments will be muted, blocked, defederated, or all three. https:\/\/briefs.video\/videos\/is-html-a-programming-language From https:\/\/mastodon.uno\/@vkc@linuxmom.net\/113669662074489728&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"https:\/\/monodes.com\/predaelli\/2024\/12\/19\/is-html-a-programming-language-webbed-briefs\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[171],"tags":[],"class_list":["post-12133","post","type-post","status-publish","format-standard","hentry","category-ethics"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6daft-39H","jetpack-related-posts":[{"id":9416,"url":"https:\/\/monodes.com\/predaelli\/2022\/06\/03\/c11-iso-standard\/","url_meta":{"origin":12133,"position":0},"title":"C11 ISO Standard","author":"Paolo Redaelli","date":"2022-06-03","format":"link","excerpt":"The official draft of the C programming language 2011 edition (C11)\u00a0 Here also in HTML and plain text","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1229,"url":"https:\/\/monodes.com\/predaelli\/2016\/04\/01\/minimal-programming\/","url_meta":{"origin":12133,"position":1},"title":"Minimal Programming","author":"Paolo Redaelli","date":"2016-04-01","format":false,"excerpt":"Such an interesting site this Minimal Programming. Feels old school, written by proficient people! Therefore, minimal programming means minimal code: no code duplication maximal expressiveness: readable code that directly reflects the underlying task minimal overlap: every piece of information can be found in exactly one place maximal orthogonality: clear separation\u2026","rel":"","context":"In &quot;Documentations&quot;","block_context":{"text":"Documentations","link":"https:\/\/monodes.com\/predaelli\/category\/documentations\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2137,"url":"https:\/\/monodes.com\/predaelli\/2017\/02\/02\/kotlin-programming-language\/","url_meta":{"origin":12133,"position":2},"title":"Kotlin Programming Language","author":"Paolo Redaelli","date":"2017-02-02","format":false,"excerpt":"Kotlin Programming Language Statically typed programming language for the JVM, Android and the browser 100% interoperable with Java\u2122 In bold the little difference between a successful language and a niche one.","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":7070,"url":"https:\/\/monodes.com\/predaelli\/2020\/04\/03\/which-programming-language-is-fastest-computer-language-benchmarks-game\/","url_meta":{"origin":12133,"position":3},"title":"Which programming language is fastest? | Computer Language Benchmarks Game","author":"Paolo Redaelli","date":"2020-04-03","format":"link","excerpt":"Which programming language is fastest? | Computer Language Benchmarks Game","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9332,"url":"https:\/\/monodes.com\/predaelli\/2022\/05\/01\/liberty-liberty-eiffel-programming-language\/","url_meta":{"origin":12133,"position":4},"title":"Liberty | Liberty Eiffel programming language","author":"Paolo Redaelli","date":"2022-05-01","format":false,"excerpt":"Liberty Source: Liberty | Liberty Eiffel programming language","rel":"","context":"In &quot;Liberty Eiffel&quot;","block_context":{"text":"Liberty Eiffel","link":"https:\/\/monodes.com\/predaelli\/category\/eiffel\/liberty-eiffel\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":9236,"url":"https:\/\/monodes.com\/predaelli\/2022\/04\/04\/c-isnt-a-programming-language-anymore-the-register\/","url_meta":{"origin":12133,"position":5},"title":"C isn&#8217;t a programming language anymore \u2022 The Register","author":"Paolo Redaelli","date":"2022-04-04","format":"quote","excerpt":"C isn't a programming language anymore \u2022 The Register C is often praised for being \"close to the metal,\" for being a \"portable assembly language.\"It was, once, but it hasn't been since the 1970s; the underlying computational models of modern computers are nothing like the one that C represents, which\u2026","rel":"","context":"In &quot;Senza categoria&quot;","block_context":{"text":"Senza categoria","link":"https:\/\/monodes.com\/predaelli\/category\/senza-categoria\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/12133","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/comments?post=12133"}],"version-history":[{"count":0,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/posts\/12133\/revisions"}],"wp:attachment":[{"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/media?parent=12133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/categories?post=12133"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/monodes.com\/predaelli\/wp-json\/wp\/v2\/tags?post=12133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}