Alright so I'm seeing a lot of silly things being said on this thread, even after I was so kind as to write a detailed explanation as to what is or is not a programming language, so I'm gonna quote it again with important parts in bold and all you fucks are gonna read it again until you get it
Among the ones in the poll, I know:
Lua, C, C#, Java, x86 Assembly, Python, TSC, Javascript
Among the ones not in the poll, I know:
Scala, OCaML, Ruby, PHP, Erlang, F#, Visual Basic
All of those languages are programming languages, except TSC I think. Scripting languages are programming languages in most cases. "Programming" does not mean "compiled" and "scripting" does not mean "not programming".
A computer language is a programming language if it has three things: Abstraction from hardware, control abstraction, Turing-completeness.
All of the languages listed have those features, except TSC (which does not have control abstraction).
You can code TSC in the same way regardless of what platform you are on, so it's abstracted from hardware. I think you can theoretically (assuming infinite memory) construct any possible finite state, which would mean it's Turing-complete. However, it does not have control abstraction, as it does not allow you to write functions or subroutines. It does have events and some sort of flow control, but I'm pretty sure there isn't a way to make it act like a call/return block of instructions. I might be wrong though, I'd need confirmation from someone more experienced than me.
EDIT: I forgot x86 was in the list! It's not an actual programming language either, because it is hardware dependent. It's an instruction set.
I am also going to clarify something:
A computer language is "compiled" if it is compiled by a compiler and "interpreted" if it is interpreted by an interpreter. Now guess what, you can write both compilers and interpreters for (almost) any computer language that exists. Which means (almost) all computer languages can be compiled AND interpreted. These terms do not mean anything and they do NOT make a difference in the nature of a computer language.
And now that that is said, let's clarify one more thing as well:
A scripting language is a language used in a domain-specific environment, which means any interpreted language can become a scripting language in the context of an environment that would use it for scripting. Since any computer language can be interpreted, it means
any computer language can be used as a scripting language.
There.
Now to individually answer previous messages:
- GML is a programming language, albeit a shitty one (lol no functions). It has abstraction from hardware, control abstraction (scripts), Turing-completeness. It is used as a scripting language by the Game Maker engine.
- C, C#, Java, C++ are programming languages. They are not used as scripting languages anywhere I know, but they could be.
- Game Maker is about as much an IDE as Notepad and MSPaint (you know, for
Piet). Which is to say, it
technically is one, but if you go around saying your IDE is Game Maker, prepare to be laughed at.
- JavaScript is a fully-fledged programming language. It has total abstraction from hardware, as much control abstraction as you can get (eyyy closures), and Turing-completeness. It is used as a scripting language by most if not all browsers. Still a shitty language (lol "3" + 1 = "31" but "3" - 1 = 2).
-
You're mixing up some stuff there.
GameMaker is not an integrated development environment, it is a game creation system. That's a huge difference, plus GML only works in GameMaker, the engine has to provide functions because there is no way to access the low level stuff (atleast not anywhere near where C or other languages could), that's why it's a scripting language. Windows is a operating system, GameMaker isn't, that's why you can't compare these two as well.
YOU'RE mixing up some stuff here.
"Game creation system" does not mean it's not technically an IDE.
GML is just a computer language and it could work anywhere if you wrote an interpreter and environment for it. It is not directly linked to the game-making process in Game Maker nor to the functions provided by the engine.
Also, you can access low-level stuff in C (or other languages) thanks to functions provided by things like the Windows APIs or POSIX. They are not part of C or any other languages. It's not about low-level, it's about accessing APIs. Any language, provided it included the tools to do so, could do that. It has nothing to do with low-levelness, and ESPECIALLY nothing to do with being a scripting language.
- IDEs don't compile programs. IDEs may or may not include compilers that compile programs.
- ENIGMA is an IDE. It's centered toward game development, but it is a legit IDE.
- There is no "traditional sense" for a programming language. If it can be used to program (as in, if it has the three things I was talking about earlier), it's a programming language. If an environment uses it for scripting, then it's a scripting language. Scripting languages are not a subset of programming languages, there are programming languages that are not used as scripting languages (Java) and languages used for scripting that are not programming languages (TSC).
- GML is a scripting language in the context of Game Maker. If I wrote an interpreter or a compiler for it in order to use it for general-purpose stuff, then I would not use it as a scripting language.
- Just in case, I'm gonna repeat it again: any computer language has the potential to support scripts. Write a file containing source code in the language: bam, you have a script. Write an interpreter that can run the script: bam, you have an interpreted language. Create an application or a system that uses scripts written in the language in order to do stuff: bam, you have a scripting language.
It does not mean anything.
TL;DR:
Stop using "compiled language", "interpreted language", "scripting language" to describe anything else than how the language is used in a particular context.
Learn what "programming language" means.
When in doubt, use the neutral term "computer language".