Languages I have been repeating this thought, that programming languages are user interfaces for a while, mostly to myself. To put it better, all programming languages are somewhere on the "user interface spectrum". As you go from the lower to the higher levelness of programming languages their core " audience " and their core vocabulary changes. Lowest level languages speak to the machine, in the machine language, use machine constructs and machine vocabulary ... think Assembly or C. Somewhat higher level languages forget about the machine a little and speak the language, use constructs and vocabulary of their abstract computational ideas/models. Think Lisp, Java, even Python. Their model can be based on some academic concept or it can be a more human friendly representation of lower level vocabulary and constructs. Even higher on the spectrum are for example command shells. It's audience is an admin, a person, a user. It's vocabulary is centered around