How programming languages have evolved over time

How programming languages have evolved over time

It’s difficult to imagine a world without computers, and yet, computer programming only started to evolve in the 1940s and 50s, when many of our grandparents were youngsters. 

For most of us, computers provide a window into the world and the complex programmes, software and platforms developed by organisations like Microsoft, IBM and Apple underpin our daily activities, from catching up on social media, checking in on our health, or finding our way to a client's office.

This blog outlines some of the key milestones in programming language development and explains how computer programming has evolved to meet the changing needs of computer users like ourselves.

A short history of programming languages

During Queen Victoria’s reign mathematician Charles Babbage designed the first computer – a programmable machine called the Analytical Engine that would have run on steam power and been the size of a horse-drawn carriage.

His friend and colleague, mathematician, Ada Lovelace, recognised the potential of the Analytical Engine. She became the world’s first computer programmer in 1842 when she published an article showing how the Analytical Engine could perform a sequence of calculations – the first computer programme.

Despite this amazing achievement, Ada Lovelace’s papers were all but forgotten, and it wasn’t until a century later, in the 1940s, that programming languages became established and began to evolve.  

Since then, computing power has exploded and while the physical size of computers may have diminished, their capacity to process information has increased phenomenally.

Advancements in programming languages in the last 30 years have been driven by changes in computer hardware and software, web development and more recently, mobile devices and apps, social media and chatbots.

Five generations of programming languages

Within a human lifetime, programming languages have evolved through five ‘generations’.

Binary code

In the 1940s and 50s, the first programming languages used binary code (0s and 1s) that correspond to specific hardware instructions. They are known as low-level machine languages.

Assembly languages

Soon afterwards, so-called assembly languages appeared. They were developed to be more user friendly and used human-readable notations that can be converted to machine language using an assembler. Examples of second-generation languages include Basic, that was accessible to beginners and which evolved later into Visual Basic, and ALGOL.

The Lisp programming language first appeared in around 1960 and was one of the earliest programming languages. Lisp Introduced concepts like variables, loops, and functions.

High-level languages

By the 1970s there was a revolution in programming languages. High-level languages, like C, PASCAL, and FORTRAN, began to appear that use English-like words for instructions. They require translation into machine code using a compiler or interpreter.

Python, Java and C++ are also high-level programming languages that provide a balance between human readability and machine efficiency and shifting from procedural to object-based features.

These third generation languages are commonly used today and allow developers to write code more abstractly, making it easier to maintain and understand.

Programming and scripting languages

The fourth generation programming languages are used mainly in database programming and scripting. Examples include Perl, Python, and SQL1 which emerged to tackle tasks in specific domains such as SQL and HTML.

Problem-solving and programme-specific languages

We are now seeing a fifth generation of programming languages evolving that are focused on problem-solving and use constraints given to the programme, rather than explicit algorithms. They often use machine learning and artificial intelligence techniques. Examples include Java, Kotlin and Swift used in operating systems.

While each generation of programming language has helped provide solutions for an increasing array of complex and specific functions, some developments focus on more user-friendly tools that are easier to apply across multiple platforms such as web pages and apps.  

 

Procedure-oriented Programming (POP) and object-oriented programming (OOP)

Programming languages have evolved from procedure-oriented programming to object-oriented programming.

Procedure-oriented programmes include C programming language, Pascal and FORTRAN. FORTRAN, the first of the third generation programming languages, was designed by John Backus and his team in 1957. In 1970, Pascal was launched, and named after the French mathematician and physicist Blaise Pascal. It encourages good programming practices using structured programming and data structuring.

Another ‘old timer’ is COBOL (Common Business-Oriented Language). This open-source language was designed for commercial and business applications and became the standard in the business world in the 60s and 70s. It uses English syntax and is object-oriented. Many finance and banking mainframe systems still depend on it today. 

Object-oriented programming really came to the fore in the 1980s, with SmallTalk, Visual basic and objective-c. Objective-c underpinned Apple’s Mac and iphone operating systems (ios), until the introduction of the Swift programming language in 2014.

Android operating systems tend to use Java and Kotlin. Java is a more established language with a large community and extensive libraries, whereas Kotlin provides modern features and concise syntax, making it an attractive choice for many developers.

Scripting languages

Programming languages that prioritise useability, flexibility and rapid development are ever more popular. Unlike compiled languages, in scripting languages like JavaScript, Python, PHP and Ruby, the code does not need to be translated into machine code ahead of execution. An ‘interpreter’ reads the source code directly and executes it without a separate compilation step.

Many web applications use scripting languages, such as PHP and Ruby that are dynamic, fast and easy to use. They are also useful for automated tasks like data processing, testing and system administration.

Programming paradigms

Programming languages can be grouped into paradigms according to the type of task or function they are designed to perform.

Imperative Paradigm 

Imperative programming focuses on describing how to achieve a specific goal step by step. Languages like FORTRAN, COBOL, and ALGOL contributed to this paradigm.

Structured Programming

In the 1960s, structured programming principles (such as using loops, conditionals, and subroutines) were introduced.

Object-Oriented Programming (OOP)

OOP gained prominence in the 1980s. It emphasizes modeling software as a collection of interacting objects. Languages like Smalltalk, C++, and Java popularized OOP.

Functional Programming

Functional programming treats computation as the evaluation of mathematical functions. Lisp and Haskell are notable functional languages.

Logic Programming 

Prolog exemplifies logic programming, where programs express relationships as logical rules. It’s used for symbolic reasoning and knowledge representation.

Declarative Paradigms

Declarative languages (including SQL for databases) focus on specifying what should be done rather than how. 

Aspect-Oriented Programming (AOP)

AOP addresses cross-cutting concerns, such as logging and security, by separating them from the main program logic. It complements other paradigms.

Concurrent and Parallel Programming

With the rise of multi-core processors, concurrent and parallel programming became crucial. Languages like Erlang and Go are examples of this type of programming.

Domain-Specific Languages (DSLs)

DSLs are tailored for specific problem domains, for example, SQL. They allow concise expression of domain-specific concepts.

Metaprogramming and Reflection

Metaprogramming enables programmes to manipulate their own structure. Reflection allows introspection and modification of programme elements at runtime.

How do you decide which programming languages to learn?

If you’re looking for a career in scientific computing, operating systems, or systems programming, learning programming languages will be crucial. Alongside newer languages, some developed over 50 years ago, are still evolving and continue to underpin major information systems.

Well-designed software strengthens an organisation’s IT infrastructure and performance, making software development, data engineering and data science, critical skills areas for employers.

A 100% online MSc Computer Science at City, University of London, provides a broad postgraduate computer science education, combined with practical skills in design, development, programming, and modeling. You can study on demand and it’s fully online learning so you can fit your studies around other commitments.