The confusion is perhaps most clearly demonstrated by the often expressed opinion that “one cannot use a programming language that has not been implemented”. But this is nonsense, of course one can! One can use any well-defined programming language, whether implemented or not, for writing programs in; it is only when you want to use those programs to evoke computations, that you need an implementation as well. Being well-defined, rather than being implemented, is a programming language’s vital characteristic.

EWD #447