What do you define as a programming language?

Often when people ask me what programming languages I know/use, I often answer “php, java, javascript, and basic SQL”. Even if I can html and css I mostly don’t count those since they don’t have the logic php, java, and javascript have, while SQL being on the border since it have a few functions/methods. I just wonder, how many leave out languages like that?

Turing Complete is a good place to start.

Cas :slight_smile:

Start where?

that is, if it’s not Turing complete, you might simply consider it “data” instead, to be processed by some other program into something more tangible.

Cas :slight_smile:

Excuse me if I sound rude, but what are you talking about? and how did you come to that conclusion from my thread? I was simply asking what people consider a programming language to be, and gave the example that I count java, php, javascript, and SQL as a programming language, while I don’t count css and html.

He gave a very good answer to your initial question of what one might consider a “programming language”.
But as it seems you probably may have wanted a definition by “enumeration”.
Say, “Prolog is a programming language”, “XSLT is a programming language”, “XML by itself is not a programming language, but a markup language for data”. “XQuery is a programming language”, “suchandsuch again ist not a programming language”, etc pp.

But @princec gave one possible definition by the “properties” of such languages, being that those are “turing complete.”

And that is, if they are capable of solving the same kind of problems (i.e. computing the same kind of functions) that the hypothetical “Turing Machine,” invented by Alan Turing (the great-grandfather of computing :slight_smile: , is capable of.

Alan Turing invented that hypothetical machine in order to give one possible answer to the question of what an algorithm and what a computable function is, namely those that can be expressed and computed by that particular turing machine.

So if any programming language can be proven to have the same expressiveness as that hypothetical turing machine, it is said to be “Turing Complete.”

Btw.: I recommend visiting a Computer Science course at your nearby university. :wink:

This is another askyahoo situation isn’t it? where no one have an opinion or thought on their own, instead they just go to sources to give the absolute definition.

Or your responses are well educated.

I am currently studying defining languages and such in Formal Languages and Automata class, which is done in Software Engineering and Computer Science at my uni.

EDIT: Touring machines are apart of Formal Languages and Automata.

Good for you, but I’m looking for peoples opinions. Otherwise I would have searched up the answers myself.

:cranky:

Cas :slight_smile:

To me a “language” can be anything which conveys information - think “body language”, or when people talk about traders understanding “the language of the markets”. Yesterday on the radio a builder was saying how cracks are a building’s language for telling you they have structural problems :smiley:

So here it comes down to what is “programming”. Defining/marking up data is part of the activity of programming so XML, CSS etc. yes IMO. Specifying abstracted queries/arguments for special-purpose processing engines to carry out some activity even more so, so SQL, XQuery etc. yes IMO. And obviously anything more procedural like Word macros and shader scripts definitely, even if the “language” in question has no explicit name.

In general if you’re concerned about getting the “right” answer in some context, either give the caveats explaining your interpretation, or better (depending on how interactive the situation) ask for more precision in the question :smiley:

So you ask questions that could be answered by searching it up. But the reason you are asking is not that you are too lazy, but to gather other people opinions. Yet you are rude to everybody answering on your thread… can’t see how that works out.

Does this work for you in RL?

MSyIhapMdI8

I would say to me a language is when you can write a ‘compiler’ for that ‘language’ using that ‘language’.

What does it have to compile to to qualify as being ‘compiled?’
What if you can have [hardware] that runs X language without any intermediate compilation? (see: LISP machines, etc. there’s even a Java machine iirc)

There’s also things for which the term ‘language’ seems dubious yet are Turing Complete and obviously programmable, etc. such as various calculi (e.g. lambda), cellular automata (e.g. Rule 110)…

As I am wont to do, I defer to wikipedia:

[quote]A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs to control the behavior of a machine or to express algorithms.
[/quote]
I specifically like the distinction of ‘constructed language’:

[quote]A planned or constructed language (sometimes called a conlang) is a language whose phonology, grammar, and vocabulary have been consciously devised for human or human-like communication, instead of having developed naturally. It is also referred to as an artificial or invented language.
[/quote]
So this takes care of mathematical phenomena such as cellular automata and starts to focus on the ‘language’ in ‘programming language.’

The game of life is Turing complete. Yeah! But does this thread pass the Turing test?

Language can really mean any system that can be used for communication. Not everything has to be spoken and/or written.

If you can use various cellular automata to communicate instructions to a computer, then I’d call those programming languages.

This is kind of like asking what everyone’s stance on global warming is; it doesn’t really matter what your opinion is since there are pretty much facts about it. The definition of a programming language is a Turing complete language. Languages/formats/whatever that aren’t Turing complete cannot be used to implement all algorithms, so we don’t count them as programming languages.

See I disagree, what about deliberately non-complete systems such as total functional languages?

So… you can’t make a game in them since games aren’t provably terminating. Sounds like a shitty paradigm. It’s like saying “What about Java without loops that cannot be provably terminating?”. You can’t take a programming language, chop off its limbs one after another and then still call it a programming language.