Like 0

Why are there so many programming languages?

Posted on: Wed Feb 05 2025 18:32:58 GMT+0000 (Coordinated Universal Time)

English 101
Austin Tarrach
Department of English, Washington State University
ENGL 101: College Composition
Jamie Flathers, MFA
November 24th, 2023

Introduction
When thinking about coding, many new developers ask themselves the same question: why are there so many programming languages? It would be much simpler if there was just one programming language that could perform all sorts of functions, right? The answer to that question is no. We’ll be discussing why there is a need for so many programming languages and what it reveals about the Computer Science industry as a whole. We’re going to take a deep dive into some peer-reviewed articles written by experts in the field. Those articles will cover a range of topics on the subject of programming languages. First, we’ll get an in-depth history of old languages (many of which are not in use today) to explore some of the building blocks for today’s languages. After that, we’ll specify the key differences between programming languages and identify some of the major types of programming languages. Then we will take a dive into some two powerful, modern languages, C and Python to get a better understanding of how these modern languages work. This will provide an understanding for the need of all these programming languages that even nonprogrammers can understand.
Article summaries
The first source we will look at is Andrew Ferguson’s article on the history of programming languages. Looking at the history of primitive languages will perform two main functions. First, it will allow us to touch on and give a basic explanation for some basic coding concepts as they were developed in early language creation. Second, it will allow us to get a glimpse at the motivation for development of early languages. Let’s start in 1945, when Von Neumann was the first to develop an extremely important concept for computer programming languages. He was one of the first to state that programs should be able to jump to certain pieces of code based on conditional statements like if and else. He also was the first to touch on modern loops like a for and a while loop (Ferguson, 2000). Both loops are used when a software developer wants to repeat a task multiple times. These are the building blocks for just about all modern languages. The first ever language made for electronic devices was made in 1949 and was called short code (Ferguson, 2000). This language would later become obsolete, but it helped software developers at the time understand how to build programming languages and paved the way for languages to come.
In 1951, the first compiler was created. A compiler takes code written in words written by the software engineer (like if and else statements) and translates them into usable bits of binary for the computer. This was a major step in the industry and gave way to the first major language creation, FORTRAN (or Formula Translator) in 1957. It could handle numbers very well and was the first language to include IF, DO, and GOTO statements (Ferguson, 2000). It also included numerous data types like int, bool, and doubles. Data types are variables that hold data and store it in memory so it can be used throughout the program (like x and y variables in math). Functions and variables are both building blocks of most every programming language created.
The next major language that was released was the Algol language which was a language created for scientific use in 1958. It introduced the industry to a couple of important concepts. The Algol language was the first to introduce recursively calling functions. Recursive functions are functions that repeatedly call their own function a number of times and performs similar functions to that of loops. However, recursive functions allow for extra functionality that iterative functions do not such as backtracking, breaking down complex problems, and solving problems related to dynamic programming (GeeksforGeeks, 2023). These concepts laid the groundwork for modern languages such as C, C++, and Java.
The last language we will look at will be Pascal, a language developed in 1968 by Niklaus Wirth and still in use today. Wirth developed this language in the effort of better teaching for his students. He included features like the debugger and support for early microprocessor machines which were used in teaching institutions at the time. The debugger is an important concept in Computer Science as it allows software developers to run their code one line at a time and track all of their variables to allow them to see errors in their code as it occurs. Pascal was not intended for widespread use but became popular for its combination of features, input/output and mathematical functions. It also helped with the development of dynamic variables which could be created after running the program. These features lead to short term popularity, which was ended by the creation of C.
The second source we will look at is an article on the different types of programming languages and what their uses are. The article defines the 5 major types of programming languages and claims that almost all languages can be categorized into one of these five types. We will look at the 3 most popular types for the context of this essay. The first type of programming language is procedural. Procedural programming is a “top-down approach to programming that treats data and procedures as two different entities” (Bhatia, 2022). It is the most generic approach to programming and is basically just writing step-by-step instructions for the computer to follow in order. Procedural programming is excellent for general-purpose programming, slashes memory use, and is easy to follow the program flow. The disadvantages of procedural programming are the minimal security of data, difficulty to write large programs, and is hard to relate to real world objects (Bhatia, 2022).
Object-oriented programming languages strive to solve some of the issues created by procedural programming. Object-oriented programming languages rely on objects normally called classes to structure the program into reusable bits of code. Classes contain both data and functions, allowing them to provide instances for a particular object. Take for example a dog class. A dog has certain attributes like height, weight, and fur color (data) and can perform actions like bark, walk, and wag tail (functions). A class would include all of these characteristics of a dog under a single class called dog, which can be called at any point in the program. This creates code that is easier to understand and easier to debug while also being reusable across different programs. However, some drawbacks of this programming style are difficulty to learn, memory consumption, and complex designs (Doherty, 2023).
The next type of programming language is functional programming languages. Functional programming languages are much different than the two types mentioned previously as much of it is based on mathematical functions and focuses more on what to solve rather than how to solve. The major premise of functional languages is that any problem that can be solved with lambda calculus is computable and able to be solved with functional programming. Variables are not allowed to be changed after being initialized which helps the program maintain state throughout runtime. The advantage of this type is that code is generally more readable and easier to debug and test. The disadvantages of this type are decrease in performance, difficulty reading sometimes, and steep learning curve (GeeksforGeeks, 2022). All three of these types of languages are used in most popular languages used today. However, some languages can include support for multiple different types. For example, Python (which we’ll get more into later) has support for object-oriented programming, functional programming, and scripting languages (which we didn’t cover). The type of language is not language specific but is more defined as how the software engineer uses the language.
The next source we will be looking at is Doug Meil’s article on why there is a need for so many programming languages. This article will allow us to look at specific features that differ different languages from each other and explore some features of modern languages. One big idea that he reiterates in his article is the general attributes that separate languages from each other. Those attributes being license, platform, language paradigm, typing system, concurrency, memory management, execution, and features. According to Meil, there is a language for just about every combination of those attributes today. While all these attributes are important, the most important reason for new programming languages still being created today is control (Meil 2022). Modern languages can support all kinds of features that developers need, but new ones continue to be made to allow for easier implementation for their specific task.
One example that Meil brings up in his article is Microsoft in the mid 1990’s. At the time, the dominant languages used at Microsoft were Visual Basic and Visual C++. Visual basic was easy to understand for developers and was popular for front-end development. However, Basic lacked functionality for back-end support, which was delegated to visual C++, with the catch being that visual C++ was complicated. The need for a “middle language” was needed and that came in the form of Java. Java provided all the features of an object-oriented language while being less complex than C++ which made it an intriguing language for software developers at Microsoft at the time. In this case, a specific need emerged, and the industry responded with Java that filled that need. This is a good example of why programming languages are built, since it provided a better option for many software engineers in a way that no other language at the time could. As long as the computer industry continues to innovate and require new functionality, there will always be a need for more programming languages.
The next article will focus on one language in particular that had a massive impact on the industry and on the future of computer programming. That language is C. C is a procedural language that began development after the failure of the hypothetical operating system called the Multics Project. The Multics Project was dreamed to host 1000’s of web developers at once who could all work on the same system at the same time. It was to be the future operating system for all developers. However, after 5 years of development, the project was considered too ambitious, and AT&T decided to pull the plug on the project. This didn’t discourage 4 men at Bell Labs, and they started handwriting functions for a filesystem while working on a game called Space Travel. The tools they made during this period, including the Unix filesystem and various others made during the development of the game would later be the foundation of the Unix operating system (Britannica 2023). The Unix operating system was a cohesive operating system as it was simple, portable, and any user with coding knowledge could help work on the operating system. The operating system was widely used in internet servers, mainframe computers, and workstations in the late 20th century due to its simplicity and flexibility (Britannica, 2023). This operating system needed a programming language to go along with it, and this is where C comes in. C was derived from a language called B but included character types and an enhanced compiler. These changes helped the language have incredible performance and, combined with Unix using open-source code, continues to improve to this day. The Unix system C became the industry standard for years after its release and is still very influential to this day. Today, C is primarily used for writing operating systems and is used in the world’s most prolific databases like DB2, MySQL, and more. It inspired the likes of many popular languages today namely C++, C#, Python, Go, and more. C is one of the oldest languages that still has prominent use to this day. C shows that the age of the language does not determine its usability. Many languages used today are derived directly from C or are indirectly derived from C. Developers looking to create new programming languages can use C as inspiration and as source code for their own languages. Overall, C was a tremendous leap for the industry and is one of the most celebrated languages ever created.
Finally, let’s take a look at Britannica’s article on another popular language, this one being the more modern Python language. Python was developed later than C in 1991 by Hudo van Rossum and was started as a hobby to keep himself from getting bored in the late 1980’s. It is an object-oriented programming language that is defined as being high level. High level languages are defined as being more abstracted from base level code, which is binary. High level languages are easier to implement for humans as they are generally composed of real words and phrases in place of 1’s and 0’s. This is helpful for implementation and debugging but has slower performance and more memory needed than lower-level languages. Still, it is the preferred method of programming for many software developers. Like many other languages, it was derived from another language called the ABC Programming Language which Rossum himself helped create earlier in his career. The language had some good features and good syntax but had some poorly designed aspects that held the language back. Rossum took the language and fixed those previously mentioned flaws of the language. In this case, Python was created with simplicity, code readability, and syntax that needed less lines of code in mind. Another difference between C and python is its use of dynamic semantics. This means that data types in the language do not have to be explicitly declared when initializing variables. This allows for easier implementation as the program decides at runtime what data type the variable will be. These features all combined to create an elegant language that flows nicely and has led to major success for the language. Many large companies use python including Dropbox, Google, IBM, and Mozilla (Britannica, 2023). The language has since been used in many other languages like Ruby, Cobra, Swift Go, Boo and more, continuing the chain of languages being built using other languages. This chain of language creation based off of other languages will likely continue on for many years to come as technology becomes capable of more in the future.
Response
Programming languages have been around for decades and continue to innovate and change themselves to be more applicable for modern use. Upon doing research into this question, I have learned much about why there is such a large range of languages and how to use them for my own benefit. Standardizing all languages into one standard language seems to make the most sense for young computer scientists as this would mean developers only have to learn one syntax and way of programming. This is great until you realize that computers must perform a wide range of tasks on many different platforms. To explore the challenges of standardizing languages, let’s create a hypothetical language called The Programming Language. We’ll assume it supports every platform, includes support for all different types of programming languages, and has one standard syntax. One of the most evident drawbacks for this language would be the complexity of writing in this language. To be able to perform all sorts of functions, the memory needed and time it would take to compile the code would be enormous. Not to mention the difficulty of implementing and debugging in this language. For example, front end languages are generally easier to learn and implement than back-end languages. Software developers would need to learn all the complexities of The Programming Language to implement front-end software which is harder than if there was a designated language for front end development. Standardizing all languages into one language would also not make sense because of the syntax. Every language has different syntax, some being more different than others. These syntaxes are designed with easier implementation for the specific task the language is designed to accomplish. Trying to standardize code into one singular syntax would take away from this aspect of languages and make code less readable and harder to implement.
Throughout this essay I have mentioned frequently the need for code to be readable. As a non-programmer, you may be asking yourself why it’s important for code to be readable. There is a large misconception that once code is written and the application is finished, then the code never gets touched again. This is not true as developers go through many phases of getting rid of bugs and errors in their code. It is also the norm in the industry to be able to read someone else’s code and add or change the code to accomplish a specific task. When languages have difficult syntax that make it hard for them to read, these debugging and editing phases of the code take much longer. That’s why readability is one of the most important aspect of computer languages, as important as portability and implementation.
As a student, we don’t have much freedom to choose what platforms we learn and develop in, so the differences of these languages have not had much effect on my current career as a programmer. The first class in CS dives straight into C, one of the hardest languages to learn but teaches you many important concepts in the programming world that will carry on to future languages and development. Every project in that class required C and left no option as a programmer to choose whichever platform you like. While for introductory purposes this makes sense to stick to one standard language, as a more advanced developer now I feel as though I should have more freedom as to which platform I choose to code on. Even as a Junior in the CS program, I am still being told what programs to use for projects and am still left no wiggle room for choosing the language of my choice. As I discussed earlier, why should I have to be forced to stick to one language that might make the project harder for me to implement? This isn’t realistic as in the industry, developers are expected to know a variety of languages and know which language is best for the task they are trying to accomplish. I think an improvement to the CS department would be to allow students more freedom to choose whichever language they choose but to point them to languages professors would recommend. This would allow students to either stick with the standard language the class has been using or challenge themselves and learn a new language on their own.
Conclusion
In conclusion, the use of many programming languages is due to the fact that computers perform a variety of tasks and are for easier implementation. Programming languages have a wide variety of difficulties and function ability that makes it unique from other languages. Some languages may be better for certain tasks, or some might be better for certain systems. There was an early attempt and making one standard language, but it didn’t pan out as the developers intended. Languages are the bases for modern apps and programs that many of us use today. They allow developers for easy development of computer software, much easier than ever before in history. As computers have gotten more complex over the years, so has the total number of programming languages. Some languages are great for creating operating systems, like C, while some are better for game development like C++. If you are looking to get into software development, a path I would take now is to hunker down and learn one language fluently. There are tons of great websites out there that can teach you the concepts of coding enough to be in the workforce. Some good languages to start out in would be C, Python, Java, or JavaScript. With an understanding of one language fluently, you are able to easily branch out to new languages and add them to your list of skills as a programmer. Learning to code is a difficult and daunting task, but with an understanding of programming languages you have a head start.

Citations:

Broberg, Matthew. “The Monumental Impact of C.” Opensource.Com, 1 Oct. 2019, opensource.com/article/19/10/command-line-heroes-c.

CS143: Compilers, 2012, web.stanford.edu/class/archive/cs/cs143/cs143.1128/.
Ferguson, Andrew. “A History of Computer Programming Languages.” Brown, 2004, cs.brown.edu/~adf/programming_languages.html.

Meil, Doug. “Why Are There so Many Programming Languages?” ACM, 5 July 2022, cacm.acm.org/blogs/blog-cacm/262424-why-are-there-so-many-programming-languages/fulltext.

The Editors of Encyclopaedia Britannica. “Unix Operating System.” Encyclopædia Britannica, Encyclopædia Britannica, inc., 10 Oct. 2023, www.britannica.com/technology/UNIX.

“5 Types of Programming Languages.” Coursera, 2023, www.coursera.org/articles/types-programming-language.

Munro, Andre. “Python.” Encyclopædia Britannica, Encyclopædia Britannica, inc., 22 Nov. 2023, www.britannica.com/technology/Python-computer-language.

Bhatia, Sagar. “What Is Procedural Programming? [Definition] - Key Features.” Hackr.Io, 13 Dec. 2022, hackr.io/blog/procedural-programming.

Doherty, Erin. “What Is Object-Oriented Programming? Oop Explained in Depth.” Educative, 20 Nov. 2023, www.educative.io/blog/object-oriented-programming.

“Functional Programming Paradigm.” GeeksforGeeks, GeeksforGeeks, 28 June 2022, www.geeksforgeeks.org/functional-programming-paradigm/.

“Recursive Functions.” GeeksforGeeks, GeeksforGeeks, 23 Nov. 2023, www.geeksforgeeks.org/recursive-functions/.

Leave a comment down below!

Comments