Say, I wanted to create my own programming language. Assuming that I have made all of the decisions about how I want it to look and act, do I just need to write a compiler for it?
No. Making all of the decisions about how you want the language to look and act is creating your own programming language. You don't need a compiler or an interpreter to create a programming language. You don't need a compiler or an interpreter to write programs in your programming language.
You only need a compiler or an interpreter if you actually want to run the programs you write.
My question is, is the creation of a programming language done through a compiler? High-level is fine.
No. The creation of a programming language is done through coming up with two sets of rules:
- what a legal program looks like (syntax)
- what a legal program does (semantics)
That's it.
There are programming languages which have no implementation. Or which had no implementation for a long time.
For example, Konrad Zuse created Plankalkül in the mid-1940s, but due to the war he never was able to implement it. It was first implemented as part of a dissertation in 1975. But it certainly existed in the 1950s and 1960s.
LISP was originally designed as a more tractable alternative to λ-calculus for studying computation. It was implemented by Steve Russell, a student of John McCarthy. McCarthy himself even doubted that LISP could be implemented at all!
APL was originally designed as a notation for teaching mathematics. It was later extended to serve as the specification language for IBM System/360. Implementations came later, after the language had already been used.
PLANNER was a very influential language, which was actually only implemented after it had already influenced other languages; it was designed in 1969 and implemented in 1973, at which time it had already influenced Smalltalk and Prolog (both 1972).
Structure and Interpretation of Classical Mechanics is a physics textbook which uses Scheme instead of maths to describe dynamic systems; the fact that Scheme has interpreters and compilers is inessential for the book, it is used as a language for conveying thoughts, not running programs.
As you can see, programming languages can be useful even without implementations. "Programs should be written for humans to read, and only incidentally for computers to execute" is a famous quote from Structure and Interpretation of Computer Programs. Programming languages are formal languages for unambiguously describing complex processes. The fact that if you describe a process precisely enough for a human to understand, it also happens to be executable by a machine is a side-effect. It's a very desirable, useful, powerful, side-effect, but it is a side-effect.
The very first "programming languages", λ-calculus, SKI-calculus, Turing Machines, μ-recursive functions, weren't created for execution. They were created for understanding fundamental questions of logic and mathematics.
System.out.println()
Java because the Java compiler accepts that or is there some other thing working here. $\endgroup$