Category talk:Non-Programming Languages

From Rosetta Code

What does "non-programming language" mean in this context? --Dmitry-kazakov 07:39, 6 July 2009 (UTC)

HTML and XML are computer languages that focus entirely on data. They are not programming languages. (Note that they can embed source code, but that's a side effect.) —Donal Fellows 08:38, 6 July 2009 (UTC)

The primary focus of the developers isn't to produce a programming language. So sed is an editor as are vim and emacs,bc is a calculator, and m4 a macro processor. The fact that they might accomplish RC tasks doesn't mean that they should be considered as programming languages. Shades of grey. --Paddy3118 09:17, 6 July 2009 (UTC)

But the examples of this category are HTML, JSON, SGML, SVG and XML. Their distinguishing feature is that they are not programming languages at all; it happens that they're all data description languages (and yes, can describe or embed programs). —Donal Fellows 09:33, 6 July 2009 (UTC)

In what sense HTML and XML are not programming languages? Computers are programmed. Data is an input or output of a program. I cannot tell what do you mean under "focusing on data". Probably, it is just a confusion with declarative versus imperative approaches to programming. Languages using either declarative or imperative approach are still programming ones. Anyway, so long a language is a computer language it does program that computer. The text in any computer language is called program. So in what sense a computer language can be non-programming? P.S. Note that for HTML/XML, the source code is the text in HTML/XML correspondingly. Just per definition: the source code of a program is a stored text in the language the program was written. --Dmitry-kazakov 09:34, 6 July 2009 (UTC)

They're not programming languages because they don't give instructions. They just describe a particular pattern of data; there's no execution model. (OK, HTML is a bit of a border case if you're wanting to render it, given the blecherous mess that it has grown into.) To argue that XML is a programming language is really strange. It's just a serialization format of a node tree, and is no more a programming language than ASN.1 or S-Expressions are (though Lisp is built on top of the latter). If you're going to use a non-standard definition of “programming”, I'll not bother arguing with you. —Donal Fellows 09:52, 6 July 2009 (UTC)
I still do not see any definition of non-programming. Your reference to instructions only supports my earlier guess that you are confusing imperative with programming and declarative with non-programming. See also list of programming languages. --Dmitry-kazakov 10:30, 6 July 2009 (UTC)
That's not a definitive list because it is automatically collected from whatever people happened to tag. The point about the data languages is that they just define a human-readable serialization format for a data structure. There is no execution model; they just exist. This is utterly different from real declarative languages like Prolog. —Donal Fellows 13:08, 6 July 2009 (UTC)
HTML, JSON, SGML, SVG and XML are not designed to be programming languages. The maintainers do not expect to support you writing a program in them. (except maybe as a small part of their primary focus, and even then, that part usually comes with its own name such as ECMA script). --Paddy3118 13:34, 6 July 2009 (UTC)
Hmm, this requires a definition of program, provided that programming = writing programs. The traditional definition of program is a syntactically correct, complete sentence in the language. This gives no way to determine what is a "programming language". Is object code a programming language? In the above sense it is. "Focus on programming" isn't really better, because it itself requires "programming". Maybe "programming" merely refers to certain human activity named so? I.e. "non-programming" means not good to be used by a decent programmer, or unusable for software engineering? But people are programming Web pages in HTML, don't they? Consider a program generator that spits C++ code. Does this make C++ not a programming language? Among three key aspects of a language: 1) application domain, 2) syntax and semantics, 3) computational environment (the target), which one should classify it as programming or non-programming? Or to put it in other words, is "programming" a property of the language or else a way of its use [by programmers]? --Dmitry-kazakov 14:31, 6 July 2009 (UTC)

I just want to add my gut-feeling upvote for this category. Apparently details need to be ironed out but there definitely are languages here that just don't seem like "programming" languages. SVG is a good example. Its application is too specific to really be considered for general comparison with definite programming languages like C++. Languages like this can be excluded from minimum penetration consideration because they would have too few tasks available to them. XML seems to be mostly about data description and metadata. I'm really not sure how it could be used to add numbers for example. I'm not saying arithmetic is a good measuring stick, but the fact that it's not really designed for that sort of basic thing makes it seem fishy. --Mwn3d 15:10, 6 July 2009 (UTC)

I've updated the category page with an attempt to formalize what I meant when I created it.

A non-programming language, for the purposes of this category, is a language which is not suitable for expressing algorithms to be executed by a computer: they do not have execution semantics (e.g. JSON which is “just a data structure”) or those semantics are directed towards a particular purpose and are not Turing-complete or not intended to be (e.g. SVG which outputs images).

Don't take this as absolute; I'm trying to make, not a distinction out of principle, but a practical distinction for purposes of "what kind of tasks, mostly, will this language be good for?"

It might be a better idea to not have this "negative" category and instead have positive ones, e.g. "Programming language", "Document language" (html, svg, latex, ...), "Data format" (json), ...--Kevin Reid 14:57, 6 July 2009 (UTC)

I am afraid it still confuses things. This round it is Turing-completeness and the language purpose. A data description language, or a text processing language can perfectly be Turing complete. The notable example is the Conway's life. The "language" of its configurations has no "algorithmic" purpose. Nevertheless it is Turing-complete. Is it a programming language? At the same time SQL is not Turing-complete. Is it a non-programming language then? As for "execution semantics", that rather is a hidden reference to imperative programming. Do Prolog or MATLAB/SIMULINK have it? PCL does not? My opinion is that any computer language is a programming one independently on its power or purpose. --Dmitry-kazakov 21:09, 6 July 2009 (UTC)

According to Wikipedia: "A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer." --Ce 23:10, 6 July 2009 (UTC)