The advantages are many. This doesn't mean we have to be specialists in computer science. Programming languages are what allow machines to be given instructions, and what makes them, more or less, intelligent. So, the more we know about these processes, the better we understand how the world today functions. We will also be better protected against urban myths and fake news. For example, if we knew how the algorithms that protect our bank accounts work, we would be leery of the urban myth that says if we enter our pin backwards in the ATM, the bank immediately notifies the police.
The level of general understanding of computer systems, from the most basic devices to artificial intelligence, is a challenge for both businesses and the public sector. A few days ago, Japan's cybersecurity minister admitted his ignorance about USB drives. Traditional education —and in many cases the current curriculum— has neglected these subjects and many of our political and business leaders and business managers suffer from various levels of digital illiteracy.
The first attempts to program machines were made when machines were still very rudimentary. Ada Lovelace was a great technical pioneer and antecedent to today's programming languages. This writer and mathematician wrote the first algorithm designed to program Charles Babbage's “analytical machine” which had yet to be built. As an aside: a first edition of Ada Lovelace's "Sketch of the Analytical Engine Invented by Charles Babbage" was recently sold for close to one hundred thousand pounds, sterling.
If in the second half of the twentieth century the economy was what that provided us a better understanding of our world's functional framework, today it is information technology that furnishes us with a fundamental blueprint. In the last century, the industrial society's financial exchanges characterized how societies and nations developed. The transactions that revolve around today's comparable processes are digital, which is why – and here comes another example – to understand the blockchain processes that underpin cryptocurrencies, we need to have some idea about computer programming.
Giving a processor instructions: that is programming. Processors are the brains of computers, as well as the brains of numerous other machines that surround us. They work with bits: ones and zeros. You can perform a multitude of activities — follow a multitude of instructions – that the processor will translate into ones and zeros, precisely because they are numbers. Writing, drawing, addition, video editing, investing in the stock market, dictating commands to a car. Programming languages are the different languages we can use to communicate with the processor. Some are simpler, others more complex, depending on the tasks they will be targeting.
The history of programming languages began in the middle of the last century with Fortran, a language developed by IBM. Since then, other languages have emerged, of which I will only mention a few: Algol (1958), Cobol (1959), Basic (1964), Pascal (1970), C (1972), C++ (1983), Python (1991), Java (1995), C# (2000), Scratch (2002), and Rust (2010). The report, “The State of the Octoverse” tells us which programming languages are the most popular of recent times.
Software architecture distinguishes between different roles: computer scientists, security experts, web developers, systems analysts, and many others. Programmers specialize in multiple fields. To fully understand this, we have to appreciate that programming today is done in modules. Programs complement each other, overlap, and can be integrated in communication systems. Programmers depend on, trust, and interact with each other. They all cooperate on developing a structure, just like those who build traditional cities: architects, engineers, graphic designers, workers and planners. The expert in the Internet of Things, John Cohn, said that the most interesting part of our time is the collaborative environment of programmers.
Operating systems are the underlying software in many machines, but they need applications to perform tasks. Examples of operating systems for computers are Unix, Windows, and Mac OS; operating systems for mobile devices are Android and iOS; the OSs for smart watches, WatchOS and AndroidWear. Every programmer specializes in one or more languages within an operating system and, in turn, should learn the basics of others.
Interestingly programming is intimately linked to the ability to think critically. Being able to link arguments together, defend our rights, solve problems, denounce injustices, or simply have a discussion with a certain degree of seriousness. Because anyone who learns how to program, in one way or another is obligated to think logically. In addition, programmers think collaboratively, and their work is very much related to creativity and ethics.
There are parallels between the first attempts of early philosophers to categorize thought and computer languages. The methods developed by thinkers such as Avicenna, Saint Thomas Aquinas, Descartes, Leibniz, Kant, Russell, and Whitehead would find a great ally in the learning of programming languages. If Aristotle were to undertake writing his “Prior Analytics” he would discover great examples in computer programming. Programming languages represent new ways of expressing logic, following on the mathematical logic of Peano and Frege in the nineteenth and twentieth centuries. And, on the other hand, it is also closely related to grammar usage and linguistics.
Some academics believe that general education should encompass learning about how machines think, and not programming specifically. It's undeniable that in order to understand what kind of IT support we need when launching a business or creating an enterprise, any information about programming is valuable.
There are still those who believe that the most human approach to human interaction would be to dispense with machines altogether; but it is true that communication has always depended on the technology. And the more we understand it, the more we can humanize it.