Why there’s no universal programming language
• There is no “one language to rule them all.”
• Various computer programming languages have been designed to solve particular problems.
• That’s only likely to happen more often in the era of gnerative AI and quantum computing.
That there are so many computer programming languages is widely known. What isn’t so easily understood is why – coding is already complex enough; shouldn’t developers be able to read from the same book?
Since the dawn of computer programming there have been language variants. Is it simply because, as one Reddit user says, “developers LOVE to reinvent the wheel”?
One computer programming language for all
Attempts have been made to develop a coding language that could be used universally. In 1964, PL/I was designed by IBM, with no intention of ever needing, say, a PL/II. Back when programming used hole-punched cards, One Good Programming Language would simplify the development process as well.
Work on the PL/I specification began in 1964 and work on the first compiler began in 1966. Theoretically, PL/I would bring together the power of three different programming languages:
- FORTRAN – The scientific programming language (1954)
- COBOL – The business programming language (1959)
- ALGOL – Primarily a research language, but with innovative paradigms and features (1958)
(Note: in the early days of computing, programming languages could be quite simply named for what they did: FORTRAN = formula translator, COBOL = Common Business Oriented Language, ALGOL = Algorithmic language.)
This seemed reasonable enough. Combining three to make one didn’t appear to be the mammoth task it turned out to be:
This theoretical forgets that establishing PL/I wouldn’t be just a development effort, but in effect a system conversion. Yes, the new language would require developers to begin using a new language, but, and this might sound obvious, they’d have to stop using FORTRAN, COBOL, and ALGOL. This in turn would mean converting their existing codebases and solutions to PL/I.
In short, there was more to it than was initially anticipated. Compounding this problem was the fact that the three languages that PL/I set out to unite were themselves evolving in real time. A system conversion was, realistically, untenable.
Despite failing to achieve its principal aim, PL/I was a relatively successful computer programming language. It was taught at college level and reportedly was used in the development of the Multics operating system and the S/360 version of the Sabre airline reservation system, among others.
A toolbox of computer programming languages
So, is a failure to implement a universal computer programming language early on the reason why there isn’t one today? Aside from anything else, a good developer is not only productive but able to use language features in creative ways. If there are edge-cases to be found, developers will find them – especially at scale.
Pushing a language to its extremes means uses that the original authors won’t have foreseen. That means issues arise, are solved and thus, a new language is born. A current programming language might not deal with the specific issues that arise as a result of the nature of the language’s capabilities. So, just as technology evolves, the languages it runs on do too.
FORTRAN, created by John Backus, is the oldest programming language still in use today.
If we really split hairs, the first programming language was written on a piece of paper by Ada Lovelace in 1843. About a century later, Konrad Zuse developed the first ‘real’ programming language called Plankalkül (Plan Calculus). Among other things, that language enabled procedures to be created, which stored chunks of code that could be invoked over and over to perform routine operations.
Just because new languages are born as solutions to a specific issue though, doesn’t mean they aren’t more widely applicable. Some notable examples of programming languages that developed from specific needs include:
- C – Dennis Ritchie and Bell Labs created C in 1972 to overcome the problems of older languages. They first used it to run the Unix operating system. Today, it can run on almost all kinds of software and hardware.
- C++ – Bjarne Stroustrup created C++ in 1985 for two main reasons. The first reason was to upgrade the features of the C programming language, and the second reason was to make it accessible for everyone to use in all fields.
- PHP – PHP was created in 1994 by Rasmus Lerdorf, and he initially used it for a personal project. Later he improved the language and released it to the public, and developers started using it heavily for web development.
- Go – Google created Go in 2009 because the languages it worked with at the time took were too slow and inconvenient for certain tasks. Also, Google wanted a programming language that was fast in performance but still relatively simple to read.
- JavaScript – Netscape created JavaScript in 1995. It initially created it for front end development, so both web developers and designers could learn and create website features in a short timeframe. Now we use it for back end, front end, and mobile development.
Javascript and PHP, along with Python and Perl, are derivatives of C. Swift, developed by Apple in 2014, was a replacement for C, C++, and Objective-C, intended to be easier to use and allow less room for error. Swift’s versatility means it can be used for desktop, mobile, and cloud applications.
A fun one: Rust began as a personal problem. In 2006, Graydon Hoare was a 29-year-old programmer working for Mozilla. This meant that when the elevator in his apartment building – where he lived on the 21st floor – kept breaking, he knew it was due to crashes caused by problems with how a program uses memory.
The software in elevators and similar devices is written in C++ or C languages, which famously allow programmers to write code very fast, but also make it easy to accidentally introduce memory bugs.
Hoare set about writing a new computer language that he hoped would make it possible to write small, fast code without memory bugs. He named it Rust after a group of fungi that he says are “over-engineered for survival.”
By the start of 2023, Rust was being used by 2.3 million coders.
Ultimately, asking why there are so many computer programming languages is like asking why a handyman needs a full toolbox; coders need different things depending on what they’re setting out to achieve.
Sure, the corkscrew on your Swiss Army Knife works, but wouldn’t you choose to use a purpose-built, ergonomic one if you had the choice?