What is a programming language

One goal for this site is to examine some questions relating to programming languages:

  • What is a PL?
  • How are they created (constructed)? (Why is this so hard? Can it be easier?)
  • What programming languages have interesting ideas, but aren't much used?
  • etc

Let’s start with the first question

What is a programming language?

I think our first task should be to define what exactly a language is. There are a lot of complexities around how languages are implemented and how they tend to operate today. Our definition should be about the essence of what it means to be a language.

A language has four parts:

  • abstract structure
  • concrete syntax
  • statics
  • dynamics

TODO say a bit about each of these.

Of course, these four parts only encompass the pure analytical (academic?) heart of what a PL is. There are many more pragmatic (and more important) concerns when actually using a language:

  • The core team building it
  • documentation
  • the ecosystem (the community (welcoming?, size), libraries)
  • how it runs, which platforms
  • is it compiled? interpreted? does it have a nice repl? editor integration?

These are important, but we don't have much to say about them in this post (we’ll come back to most of these in the future).