A programming language is a system of notation for writing source code such as used to produce a computer program.[1]
A language allows a programmer to develop human readable content that can be consumed by a computer but only after translation via an automated process that enables source code to be executable.
Programming languages allow software to be written in a human readable manner. In order to execute a program, it is traditionally either compiled to machine code or directly interpreted. However this distinction is blurred by technologies such as just-in-time compilation and bytecode interpreters.
Computer architecture has strongly influenced the design of programming languages, with the most common type (imperative languages) developed to perform well on the popular von Neumann architecture. While early programming languages were closely tied to the hardware, modern languages often hide hardware details via abstraction in an effort to enable better software with less effort.