I’ve been a student of programming languages since I started programming in the early 80s. Back in those days there were only a handful of mainstream languages that were accessible. At first there were two computers to choose from. An Apple ][ or a Radio Shack TRS-80. Both included a ROM based BASIC interpreter.
Other compilers were available, Radio Shack had COBOL, Fortran, pascal compilers and and Assemblers. Apple had it’s own toolchain, which I never experienced first hand but I recall my high school friends were writing programs in something other than 65x assembler.
When the IBM PC entered the space the tools changed again. Borland International started selling Turbo Pascal which turned into , Turbo C, Turbo C++, Turbo Assembler, Turbo Prolog, and so on. These tools were reasonable priced and were simply awesome. Soon after Microsoft entered into the tools war polluting the API at every turn but nothing beat Borland compilers.
Sometime in the middle of all that there was a tool fracture to the next level. dbase, clipper and later foxpro created an application development layer using macros and data instead of low level constructs of the languages that came early.
There was a whole classification of languages and tools that were out there… schools like MIT and companies like Bell Labs were in high gear producing more languages, operating systems, and general systems research.
Later, in college I was introduced to more and more languages. Ada was one language that I liked although it was time consuming to get my first program to run as there were so many compiler errors that had to be overcome. (review of Ada) I appreciate it eve more today because that strict immutable contract between programmer and other applications seems to be what we strive for now. And other than some basic syntax sugar it’s no different than any other language. At the time we were talking about the potential of software proofs. Now it seems that proofs have given way to TDD and BDD with some natural language syntax.
How different things would be if we had stuck to a single syntax and merely added the features we needed.