Proposal: Programming Language Design and Implementation

I saw a question about esolangs, which mentioned that

... Esoteric languages are still programming languages ...

But what are programming languages at all?

I remember some internet debate on whether SQL/HTML/Markdown are programming languages, because they're not really used to express logic or procedures like esolang/low-code tools/traditional programming languages like C/Java do. One may argue that LaTeX is Turing-complete, hence can be used to do something like C/Java, but it is mainly used for producing a PDF, we may also consider it a format for typesetting, like Markdown.

There are also configuration formats like json, ini, yml, toml, dhall, etc. -- some of them even have a type system!

Are we encouraging discussion on these "debatably-programming" languages?

  • 1
    Perhaps this would help Commented Feb 6, 2023 at 8:29
  • the way i see it, if you can write programs in it, and execute the file using its compiler/interpreter, it's a programming language
    – somebody
    Commented Feb 6, 2023 at 8:45
  • 3
    the issue with being too lax with the definition is that at some point, it stops being discussion about language design and implementation, and starts being a discussion about parsing - since (especially in the case of data languages) parsing is a huge part of the implementation, and there's little in the way of designing semantics, implementing VMs/interpreters, and things like that
    – somebody
    Commented Feb 6, 2023 at 8:48
  • Maybe this question would better be phrased as "Would markup languages be on topic for PLDI?"
    – mousetail
    Commented Feb 6, 2023 at 12:04
  • How about industrial DSLs like CNC commands?
    – warren
    Commented Feb 28, 2023 at 13:43

5 Answers 5


This is Better Suited as a Meta Discussion Once the Site Launches

That's not to say this question is a valid question...hell, it's actually something that'll need to be defined pretty quickly once private beta starts!

It's just to say that this discussion will be better suited for the on-site meta, where it can be referred to without having to rely on Area51 decisions.

  • The existence of "meta" kinda defeats the purpose of having an A51 Discussion zone, but since our site is showing potential I guess it doesn't matter Commented Feb 6, 2023 at 12:12
  • 4
    @UndoneStudios not really - A51 discussion zone is for discussing the site creation process like what example questions should be allowed and why certain things are happening in the A51 environment, while site metas are for specific community things like what's on and off topic.
    – lyxal
    Commented Feb 6, 2023 at 12:18
  • 5
    I mean Definition phase exists to decide on the site scope, and this is a big part of site scope. We'll probably need to go over it in more detail later on, but figuring out a rough set of rules now can't hurt. Commented Feb 6, 2023 at 16:17

For this purpose, I think it makes sense to open it fairly broadly to any language with a non-trivial notion of computation. In a sense that's sweeping the problem under the rug, because what exactly counts as computation and what makes computation trivial or not? But I do think that helps to come to some form of useful dividing line.

JSON would count as trivial, but Dhall needs to have some evaluation for the limited recursion it supports, for example. A subset of JSON with "sufficiently advanced" added semantics would also count as a programming language.

This would count LaTeX, Postscript and SQL, but not Markdown, or any configuration format listed other than Dhall. Notably, you can implement a Turing machine in HTML + CSS, so while HTML or CSS individually may not be included, I would argue the union of the two should definitely be included on the site.


The "ML" in "HTML", "XML", etc. stands for Markup Language, and the "QL" in "SQL" stands for "Query Language". They make no claims to being Programming languages, and if they happen to have become complex enough that they could be used as such, that doesn't change their basic nature or purpose.

The site should decide whether to accept:

  • Only languages that were originally designed to be programming languages.
  • All well-defined languages that are machine understandable with no ambiguity (thereby eliminating all natural languages and other created human languages such as Esperanto or Toki Pona).

Arguing for a compromise position does not seem like a good idea.

  • 1
    I don't think judging the "intention" behind the language is a good idea. It would exclude languages like PHP which was intended as a templating language initially
    – mousetail
    Commented Apr 18, 2023 at 9:01
  • @mousetail, without a clear definition of what this site considers to be a programming language, there'll be a lot of disagreement (e.g. are questions about the design of how microwave ovens can be programmed by their users suitable?). I'm not arguing either way, I just think it would be best if the rule, whatever it is, were well defined. Commented Apr 18, 2023 at 11:50
  • 1
    A strict definition might be needed, but original design doesn't seem a reasonable definition
    – mousetail
    Commented Apr 18, 2023 at 12:26

"Programming language" is a prototype category. ALGOL is a programming language, lambda calculus is a programming language, Turing machines are a programming language... and things like them are programming languages.

Esolangs? Sure. A penguin is a 100% bird, even if it's not a great example of a bird.

EDIT Someone who has never read any Wittgenstein downvoted this.

  • 4
    I didn't downvote your answer, but I believe the reason for the downvote is that you didn't exactly classify what you consider a programming language (especially the other points about markup languages), you merely stated some examples. Also, I do believe this question is better suited as a meta question, as lyxal mentioned above. Or, they might just disagree with you, which is a perfectly fine reason to downvote an answer :P
    – math scat
    Commented Feb 28, 2023 at 12:45
  • As noted in my comment, Wittgenstein would point out that there isn't a set of features that all programming languages must have, or all non-programming-languages must not have. Rather, "programming language" is defined by reference to examples. Things like those examples are programming languages.
    – Pseudonym
    Commented Feb 28, 2023 at 22:37
  • 4
    True, but Wittgenstein's view might not necessarily be the best for our site, (but it is a valid opinion). Perhaps you could explain that a bit more, rather than providing examples.
    – math scat
    Commented Mar 2, 2023 at 16:15
  • I don't think reading Wittgenstein is required for this site, so probably there are many people who haven't read Wittgenstein here. If you expect them to downvote then they probably will.
    – ice1000
    Commented Apr 19, 2023 at 19:26

If we allow questions about parsing programming languages, why not allow questions about parsing other computer-readable languages? If we allow questions about interpreting programming languages, why not allow questions about interpreting bytecode formats? etc.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .