As computer scientists, we use programming languages to turn our ideas into reality. It is no surprise, then, that programming language design has been a major concern since at least the 1950s, when John Backus introduced FORTRAN, usually considered the first high-level programming language. The revolutionary innovation of FORTRAN—the thing that made it high-level—was that it included concepts, such as loops and complex expressions, that made the programmer's job easier. To put it another way, FORTRAN showed that a programming language could introduce new abstractions that were encoded via a compiler, rather than directly implemented in the hardware.
Not long after the introduction of FORTRAN, other programming languages appeared with somewhat different sets of abstractions: John McCarthy's LISP, which introduced functional programming, and Grace Murray Hopper's COBOL, which aimed to support business, rather than scientific or mathematical, applications. Thus, for at least the last 60 years, programmers have been faced with the question: What programming language should I use?