I think, Wikipedia has got this one very right:
A programming language is an artificial language designed to express computations
that can be performed by a machine, particularly a computer.
The first sentence is enough to describe what it is:
- it is an artificial language (that is the root of it)
- it is designed to express computations that can be performed by a machine (that is the target/purpose of the language)
This is what a programming language is in its most general definition.
Your definition lacks this generality (for example your sentences fit rather good for command oriented languages, but not for e.g. logical programming).