⚠️ Warning: This is a draft ⚠️

This means it might contain formatting issues, incorrect code, conceptual problems, or other severe issues.

If you want to help to improve and eventually enable this page, please fork RosettaGit's repository and open a merge request on GitHub.

What does "non-programming language" mean in this context? --[[User:Dmitry-kazakov|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.) —[[User:Dkf|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. --[[User:Paddy3118|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). —[[User:Dkf|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. --[[User:Dmitry-kazakov|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. —[[User:Dkf|Donal Fellows]] 09:52, 6 July 2009 (UTC) ::I still do not see any definition of non-programming. Your reference to [http://en.wikipedia.org/wiki/Instruction_(computer_science) instructions] only supports my earlier guess that you are confusing [http://en.wikipedia.org/wiki/Imperative_programming imperative] with programming and [http://en.wikipedia.org/wiki/Declarative_programming declarative] with non-programming. See also [http://en.wikipedia.org/wiki/List_of_programming_languages list of programming languages]. --[[User:Dmitry-kazakov|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]]. —[[User:Dkf|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 [[JavaScript|ECMA script]]). --[[User:Paddy3118|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]? --[[User:Dmitry-kazakov|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. --[[User:Mwn3d|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), ...--[[User:Kevin Reid|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 [http://en.wikipedia.org/wiki/Conway%27s_life 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 [http://en.wikipedia.org/wiki/Simulink MATLAB/SIMULINK] have it? [http://en.wikipedia.org/wiki/Printer_Command_Language PCL] does not? My opinion is that any computer language is a programming one independently on its power or purpose. --[[User:Dmitry-kazakov|Dmitry-kazakov]] 21:09, 6 July 2009 (UTC)

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