Evolution of Programming Languages
"Why are there so many programming languages?" You probably asked this question when you first learned programming. It is downright confusing to see so many programming languages are around, as if they are designed intentionally in this way to confuse newcomers. If you are asking any of the working professional programmers out there, many of them are going to give you contrasting opinions: "Java is dead","Real programmers code in C++", "Ruby is a toy language" or "You are stupid if you don't code in Python".
As explained by Paul Graham's article
Beating the Averages, Programming Languages are not merely seen as tools. They also influence the way programmers think about their code. Naturally, most programmers have a strong opinion on the choice of programming language, which unsurprisingly they prefer the one that they use every day.
As a programming mentor, I need to answer this question to my students on a daily basis, preferably in a clear and brief manner. It is surprising to me that there are no good existing infographic that explains how programming languages evolve to become what it looks like now. Therefore, I decided that it is a brilliant idea to create one by ourselves.
This infographic is intended to be as simplistic and beginner-friendly as possible, since it is going to be a total mess if we are trying to put every single programming language that ever existed in this infographic. If your favorite programming language is not in this image, it is most likely because of the constraint of space instead of its relative significance.
The difficulty of creating such infographic stems from the fact that programming languages are not isolated. Each programming language influences other languages, which in turn influences others.
Let's start our journey.
1950s: The dawn of programming languages
1950s was the dawn of programming languages. Before this decade, people programmed in machine code instead. In 1957, the first programming language,
FORTRAN(Short form of Formula-Translation), was created to facilitate numerical calculation and scientific computing.
Fortran is still used to program numerical computation nowadays.
Cobol is a business-oriented programming language created in 1959 to solve common business application challenges. Cobol's strength lies in writing and updating ledgers and table records.
Lisp was created in 1958 by the American computer scientist John McCarthy as a mathematical notation for lambda calculus. It was later widely adopted for research of artificial intelligence.
Cobol can be regarded as one of the first programming languages created. And they serve distinctively different purposes:
Fortran: Designed for Scientific computing and numerical calculation
Cobol: Designed for Business Application Development
Lisp: Designed for Artificial Intelligence Research
1960s: Structural Programming and Ease of Learning
In the next decade, we saw the next wave of programming languages. The most iconic one here is the
Algol language family.
Algol is a typical design-by-committee language, as it was designed by committees of American and European computer scientists. The second language of
Algol 60, which was created in 1960 as the named suggested, was proven to be one of the most influential language of its era since it paved the foundation of future programming languages development. Most modern programming languages
Algol language family's decision is later named as
Structural Programming which is a paradigm aiming to improve the readability and clarity of programming. It pioneered multiple concepts which profoundly influenced the latecomers.
- The extensive use of control structure, including both selection(if/else, switch) and repetition(while/for loop).
- Abandonment of
gotowas later widely regarded as an antipattern in programming as a result
- Lexical block Structures that groups related lines of source code together
- Subroutines to pack related source code as a unit.
Basic was another influential programming language created in this decade. Contrary to
Algol, which was created by a group of computer scientist,
Basic was created by only two people, John Kemeny and Thomas Kurtz. They pioneered the use of computer in college educations. Since their aim was to create something that is easy to learn for non-mathematics and non-science students.
Basic was designed with ease of learning in mind, making it a comparatively easy language to learn in that era.
1970s: The Classical Period of Programming languages
I refer to the 1970s as the classical period because multiple languages created in this decade truly stood the test of time. The most notable examples are
C was designed by Dennis Ritchie to be the language of the then-newly created Unix Operating System. Both
Unix went on to become incredibly important creations in computer sciences.
C is still widely used as the programming language in development of operating system kernel and embedded system. Its simplistic design gives programmers the ultimate control on the hardware that they are working on. Both Windows NT kernel, Mac's Darwin kernel and Linux kernel use
C as their principal programming language.
C-family languages includes most commonly used languages ranging from
Python being a rare exception.
SQL is another language that enjoys an uncontested longevity since its inception. It was created by IBM's computer scientist Raymond Boyce and Donald Chamberlin as a domain specific language for managing data in relational databases. Since relational database is still an integral part of modern full-stack development,
SQL is still immensely popular after over 40 years.
Pascal seems to be foreshadowed by
C-language family nowadays. It actually was the primary programming language in college-level programming languages in the 1980s, which was later replaced by
Among the aforementioned languages,
Smalltalk is niche by comparison. However, it brought valuable innovations to the programming communities, notably the concept of graphical programming interface and the paradigm of object-oriented programming.
Smalltalk's author Alan Kay is widely regarded as one of the fathers of Object-Oriented Programming. It revived the dynamic typing from
Lisp which acted as the inspirations for modern dynamic languages as well.
1980s: C's descendants: Era of Object-oriented programming languages
The concept of Object-Oriented Programming was becoming mainstream among the programming community in the 1980s. However, the most popular programming language
C back then was a procedural language. There were many attempts to make
Objective-C were the only two remained.
C++ added Object-Oriented programming to the performant C-language, arguably improving its maintainability for a large codebase. It went on to become a solid candidate for system programming and development for application with critical performance requirements. It is also one of the few programming language that essentially supports all different paradigms of programming, be it procedural, functional, object-oriented and generic programming. As of time of writing,
C++23 is the next upcoming standard.
Objective-C found its niche in macOS . It was the primary development language for application on macOS. Since iOS was released in 2007, it was the primary language to develop iOS apps until the language
Swift was released in 2014 as a replacement.
Perl was an interesting exception in that era. When it was a consensus that
C were needed to do any serious programming,
Perl was regarded as a
scripting language instead.
Perl was special because it is a dynamic typing and interpreted language, making it one of the first general-purpose
scripting language to be adopted by the programming communities. It was thus widely used in system administration due to its flexibility.
1990s: The Golden Age of programming languages
In the 1990s we saw a new batch of programming languages being created, this era's languages still dominate the ranking of most popular programming languages nowadays. The big 3 of programming languages:
Python, all came from this decade.
Python was created in 1990 as an intuitive, beginner-friendly language. It was famed the runnable pseudocode with its superb readability. It went on to gain adoption in the scientific computing communities which made
Python the best scientific programming language with all the data science library like
Java was developed by James Gosling at Sun MicroSystem in 1995. It was designed with
cross-platform capabilities in mind. The
cross-platform promise gave
Java advantages over its predecessors
C which requires individual compilation for each platform.
Java strongly encouraged object-oriented programming styles, which means that
Java's creators choose not to implement many features
C++ already offered, for the sake of clarity and readability.
Java. It was originally intended to be the scripting language to be used by the Netscape Navigator. Its author, Brendan Eich, created
PHP powers 80% of the website in the world. It was created in 1995 as a server-side text preprocessor. It is ubiquitous thanks to WordPress, which is the most popular content management system in the world.
Ruby was created by a Japanese programmer named Yukihiro Matsumoto. Its author took many inspirations from
Python and he tried to create a genuine object-oriented language.
Ruby was widely adopted because of the popularity of the framework
Ruby on Rails which pioneered the philosophy of Convention over configuration.
2000s: Web 2.0's languages: Concurrent Languages
In the 2000s, here came the age of web applications.
Web applications like
Concurreny had been around for ages, but the wave of
Web 2.0 applications made this trait more important than ever.
Scala was created with the premise of creating a better Java with advanced type inference and concurrent support. Type inference reduces the boilerplate of writing static languages. It would be a game-changer, since
Java was constantly criticized for being bloated. The concept of type inference is so important that it affects most of the programming languages in the decade to come.
C# was also created by Microsoft as a
Java alternative. It borrowed ideas from both Java and C++ and tried to create a language with the best of both world. It was the most popular language for Microsoft .Net platform. It powered the development of most Microsoft Windows desktop applications and Windows Server-based Web application. The game engine Unity also made use of
C# as their primary scripting language.
Java popularity in the previous decade,
Go surprisingly was not trying to be a
Java replacement. It was created by
C++. It was designed with simplicity and clarity, making the compilation time of
Go program much shorter than that of
Go also introduced the concept of Communicating Sequential processes as its concurrent execution model.
At the same time, the dynamic programming languages was gaining a lot of traction in this decade.
Ruby became a serious candidate for Web Development with its framework Ruby on Rails.
Python's Django and
PHP's numerous frameworks were used as well. Although the languages mentioned in the infographic were mostly static languages, it is reasonable to call this decade the age of dynamic programming languages.
2010s: Static typing making a comeback: Type inference Languages
2010's languages were characterized by the comeback of languages with static typing. All four languages mentioned in the infographic
Swift supported type inference out of the box.
Rust introduced the
ownership system, which enables automatic memory management without garbage collection. It is a major breakthrough in memory management technique since garbage collection. It also borrowed functional programming concepts like pattern matching and immutable data.
Rust thus became a contender to
C++ for system programming and real-time software development.
Typescript was designed by Microsoft in 2012 to bring static typing and type inference to
TypeScript's author Anders Hejlsberg plays a major role in developing
Typescript was designed to be a strict superset of
Typescript. It was an important characteristic because it enabled developers to adopt
Typescript gradually in their existing
Dart was initially designed by Google as a drop-in replacement for
Typescript. The language got a second life when
Flutter, which is a cross-platform mobile application development framework in 2016, used dart as its development language.
Swift was created by Apple as a replacement of decades-old
Objective-C, it followed a lot of design decisions rooted from the C-language family. Nowadays,
Swift is the primary language of development for
Here are some programming languages that we would like to include, but we have not included in the end:
Kotlin: A JVM language designed by JetBrains. It was adopted by Google as the primary language of Android Operating system in 2019, further boosting its popularity.
Visual Basicwas created by
Microsoftthat is known for its Component Object Model(COM). It was specialized for
GUIsoftware development for Microsoft Windows. It was also widely used in
Microsoft Officein the form of
Visual Basic for Applications.
Soliditywas created in 2014 for implementing Smart Contract
Predicting the future is always a difficult task. We can be sure that new programming languages will emerge as more novel programming concepts are implemented. One interesting example is Quantum Programming Language. They are created to write program for quantum computer instead of traditional transistor-based computer.
SQL首部曲:NoSQL? No! SQL!