Which is unfortunate, because now we dance through phrases like "things like Python and Ruby". There is a hard-to-precisely-define category here, and it's useful to have a name for it--even if the name is flawed.
And, in my opinion, it's usually better to hang on to an old name as it becomes less and less literally true than to continually fish about for a new name. ("Dynamic language" is popular now, but what happens when someone popularizes such a language with static typing?) As an analogy, consider "touchdown" in American football. You haven't had to touch the ball down to score in my lifetime, or even in my parents lifetimes, but we still call it a "touchdown" and not a "planebreaker".
I never know what exactly the speaker is referring to:
- the language definition, or some feature of it such as the type system?
- one or more (popular) language implementations?
- the intended use (e.g. short throwaway programs, desktop apps, kernel code) and target audience (e.g. experienced programmers, casual programmers, non-programmers)?
- the actual use and target audience?
- some opinion of the speaker about the language/implementation/etc. in question?
(Of course, this is just in my experience. YMMV)
----
tl,dr; in the body of my discussions, "scripting language" is a free variable and I can't find its definition! I wish people would pass it as a parameter!
discuss_scripting_language(listener="matt", opinion="they suck/rock!!!1one", definition="...")If I can throw a thing over the wall to you that's runnable and doesn't contain textual source code then that's a compiled program.
No, it means the language is interpreted instead of being compiled to native code AOT.
I don't think anyone who's ever programmed in Java would actually consider it a scripting language.
For me, when most people say "scripting language" they really mean a dynamic language.
Perl, Ruby, Python, JavaScript, Lisp... These are all considered "scripting" languages and the main thing they have in common is the dynamic linking and type systems.
Statically typed languages like Java are generally not used for scripting purposes.
> ‘interpreted’ and ‘compiled’ are properties of an implementationSay we have a language X whose definition says nothing about interpretation or compilation. We also have two implementations of language X, one which is an interpreter, and one which is a compiler.
Is X an interpreted language, a compiled language, or something else?
Sorry for the misunderstanding, and thanks for the clarification.
Both. You can take in consideration a real example: Scheme is interpreted in all its implementations and compiled in a relevant number of them.
Languages and implementations are different things, but being interpreted, compiled, JIT-ed, translated, etc. is a property of the language implemented in the... implementation.