The Roots of Programming

The Roots of Programming

What programming is, and why it is relevant

Introduction

Programming can mean different things to many people. To some, it is just a job; to others, it’s a hobby; some probably don’t care what this is all about, and that’s fine too 😄.

In this article, we will look at the roots of programming to appreciate its impact and how we can contribute to changing the world with the software we write.

Programming is the process of using a programming language to tell the computer how to perform a task.

Why Computers?

In the 17th century, humans were responsible for complex calculations. In fact, people who did these calculations were called computers. Nevertheless, the need for machines to take the place of computers grew rapidly as calculations became increasingly complex to be dealt with manually. The American military especially pioneered the advancement of computers to have an edge in battles where speed and accuracy were paramount.

Today, computers have found their home in our pockets, desks, and washrooms 🫢. It may be safe to say computers are complex machines, but they are not.

💡
Computers are simple machines that solve complex problems through many layers of abstractionCarrie Anne.

It is important to have this perspective:

  1. Computers were designed to solve problems.

  2. The problems are solved through many layers of abstraction.

These are evident in the early days of computers and still hold today. Let’s explore the layers of abstraction computers have gone through.

The Generation of Computers

1st Generation

  • The first generation of computer relied on vacuum tubes.

  • They were programmed with machine language (actual 0s and 1s). This was done by using the vacuum tubes as switches.

  • The computers consumed a lot of power (towns could literally flicker when they were used for prolonged hours).

2nd Generation

  • The computer’s operation relied on transistors rather than vacuum tubes.

  • To minimize the robustness and liability to error, assembly language was designed to program computers.

  • They generated less heat and consumed less power compared to the 1st generation computers.

3rd Generation

  • The main component evolved from transistors to integrated circuits.

  • The computers were small and efficient.

  • High-level languages like FORTRAN, BASIC and COBOL were used for programming.

4th Generation

  • Electronic components were assembled together to form mircoprocessors. Thousands of transistors could fit on a single mircochip.

  • Semiconductor memory storage units such as RAM, ROM, etc were introduced.

  • High-level languages such as JAVA, Python, JavaScript were used.

5th Generation

  • Electronic components make use of artificial intelligence and parallel processing.

  • Computers can now understand human language.

  • They are portable and have a huge storage capacity.

Each generation is an improvement of what was before it. Initially, programmers communicated with the computer directly through hardware. Now, layers of abstraction have been built to develop assembly, low-level, and high-level languages. These layers of abstraction help programmers solve problems with code more efficiently and quickly than the generations before it without worrying about the underlying structures.

Fun Facts

  • Charles Babbage was the first to design a programmable computer – the analytical engine.

  • Ada Lovelace’s notes on the Analytical Engine is considered the first example of a computer algorithm. She is also recognised as the first computer programmer.

The Future of Programmers as Technology Advances

There is news circulating that AI will take our jobs as programmers. Well, that is not entirely true. It goes without saying that technology improves by the second, and simple tasks are becoming automated. However, AI heavily relies on data generated by humans. For AI to achieve the intelligence to handle complex problems and identify bugs in code will take a while – but it is not impossible.

A few years ago, developers had to use FTP clients like Filezilla to deploy their websites onto their servers. Today, Netlify, Heroku, GitHub pages, Firebase, Google Cloud and many others have simplified and made the process more maintainable.

💡
At each increase of knowledge, as well as on the contravance of every new tool, human labour becomes abridgedCharles Babbage

Humans are good at adaptation. In this field, the critical skill is not necessarily being an expert in a programming language but being able to learn. Learning never stops. The moment you stop learning, you become obsolete.

It is not the most intellectual of the species that survives; it is not the strongest that survives; but the species that survives is the one that is able best to adapt and adjust to the changing environment in which it finds itself. – Leon C. Megginson

Learn More

Check out Carrie Anne Philbin’s awesome Computer Science crash course playlist here.