Are programming languages really languages? This is a question that was asked by the marketing team at one of the gatherings. Promptly and without thinking, I said "of course they are", because, as a person who has worked with many different programming languages for 16 years, at that moment I thought it was true. But now that we need to explain it a little and support it with facts, we come to the point that it is more of a philosophical question based on how who defines what language is, so here is my attitude to the question from the title.
What is language?
As a person who does not really like languages and linguistics in general, and who has been with computers all his life and everything I did was related to them, it is impossible to answer this question right away. This is why I had to start researching what language is in general (Human language) and what is the definition of language in general.
Human languages are ways of communication between people. Asking questions about how to do something, telling stories from childhood, or getting excited watching your team score goals are all ways we use language. Whether it is English, German, Russian, Japanese, or another language, and even sign language, it is possible to communicate with each of them in a specific way.
On the other hand, programming languages are used to tell the computer what to do. Displaying text and images on the screen, running a game, creating a project for the house, saving financial data, or running a robotic arm controlled by a computer - these are all examples of what programming languages can do with a computer and all its parts.
Now, the main difference is who receives the message. In a programming language, it is a computer, and in human language, it is about people.
Similarities between programming and human languages
Humans and programming languages can make things happen. A conversation between people can lead to some reactions that are related to that conversation. Programming languages are used to help with work and/or learning, they can also be used in our free time where we learn through various games and applications that we use.
The similarity is also that human and programming languages evolve as time goes by. We no longer speak the old English used in Merlin or used sometimes in the Game of Thrones series. We also (hopefully) no longer program in COBOL, Pascal, or Haskell. Any type of language can become extinct when it is no longer used, such as Latin which is considered extinct and is no longer used in everyday communication. Both can evolve and introduce new rules, with human languages doing it as time goes by, and programming languages on the other hand doing it when people decide that it is necessary to introduce some new rules into the language itself.
In both languages, it is necessary to know how to express yourself well. A person who is not skilled in this will find it very difficult to convey his message, while on the other hand, a skilled speaker can manipulate the masses because he can express himself in a way that is pleasing to the listener's ear. The comprehensibility of a programming language largely depends on the person who writes it. It can be written so complexly that another person can't easily understand it, but it can also be broken down and broken down into reusable parts that are well-named and make perfect sense to anyone who reads it later.
Differences between programming languages and human languages
The main difference is the time it takes to master a particular language. With a programming language, the learning curve is much faster, because any more experienced person can understand the basic rules of the language in a short time and start using it in everyday use. On the other hand, an experienced speaker of German, Italian, and English cannot start using Japanese in communication in a short time because it takes much more time to master that language.
Despite the differences in the background, programming languages have a fairly similar way of working, with a set of rules and how something is used. Human languages require much more time to master because even if we understand the rules by which the language works, it takes a long time to be able to express ourselves well in that language and to understand what someone is saying to us.
An important difference is the way of expression in programming and human languages. With human languages, we don't have to be skilled speakers and understand perfectly what someone is saying, but in the end, we will manage to understand each other and gain or convey the desired information that we wanted. With programming languages, everything must be specified exactly and every rule must be respected. Even if we make the smallest mistake, the computer will not understand what we have written and will not be able to do anything with it. Computers don't understand human language. Computers follow the instructions we give them through a set of defined rules. Everything we write is eventually translated into instructions that are comprehensible to the computer (processor) or, in other words, into zeros and ones. So the computer needs to be strictly defined what and how to do, otherwise things will not work.
I certainly argue that programming languages are real languages in their way. Both types involve words, complexity, and art, but the purpose and functionality are very different. So both are languages, but on the other hand, they are so different that it is not wrong to say "no" they are not the same at all.