Different Programming Languages and their Fields of Application
In this article, we will talk about:
- What programming languages are,
- How they differ,
- How they appeared;
- Which ones are better,
- Which ones are worse.
- At first, it will be a bit about the history of languages – how they appeared, how people started to programming, how everything developed, what is happening now.
- The second part will deal with the tasks for which language is appropriate, how to “choose your favorite language and enjoy life.”
History of programming languages
- Let’s start from the beginning. At the very beginning, computers did not even have a keyboard! That is, everything was very bad – no screen, there were punch cards (these are pieces with holes or lack of holes). Accordingly, whether the pins were pushed in there, or whether they shone with light. If there is a hole (or vice versa not) – it means noise or unit. And the programs at that time were written with the help of machine codes – every operation in the computer (addition, subtraction, some more complicated operations) had some kind of machine code. Of course, the work of the programmer was probably not particularly interesting at that time – to make holes – and with the development of science and technology, of course, they began to come up with all sorts of “more interesting” things. For example, Assembler, which has already made life easier.
Well, how does it make life easier? Instead of remembering that there was some “magic” code from the team, all sorts of words were used that were similar to “human” English – any add or move – well, and then registers or memory areas were enumerated, the variables with which these Operations to produce. But it’s understandable that this in general also required enough great mental effort to keep in mind, what register we have in what, where, what variables and what happens.
Why did this happen? Because computers were “stupid” and could not understand anything more “smart”. Generally, and to assemble from the assembler machine code also requires time, memory (for those times it was certainly not enough of it).
- Gradually, it became clear that it was very difficult to develop such large complex programs. The performance of the programmer in these commands was extremely low – that is, he wrote several lines a day (meaningful), and each line did not do anything special – some simple arithmetic. And people wanted to make languages much more similar to human language, to English in particular, to write programs was easier and more convenient. And went-go!
Old and dead languages
- One of the first languages was Fortran. By the way, it was also knocked out on punched cards – there were special punch cards for knocking out programs in Fortran. But if you now take this Fortran – in my opinion, it appeared somewhere between the 50s – 60s. If you will try to write something on it, then you will be very unpleasant, I guarantee you! Modern Fortran is still alive, but it is already quite different from what it was before.
- One more of the first known languages is COBOL. It was the language for writing business applications.
What is a business application? Any transactions in banks, or something similar, all this was written in COBOL. But, surprisingly, 10 years ago, more than half of all the code written by mankind was written in COBOL. And until now, a significant part of all banking transactions is done using programs written on it (COBOL), and still, people write something on it.
- In that list was also included a language, it was called Algol 68 (68th version, which characterizes the year of its creation). This is an algorithmic language.
And on this our excursion into antiquity and into relatively unused languages can be completed and go on to what is alive so far (and is actively living).
Old, but living languages
- Algol 68 was invented in Europe, and Fortran was used mainly in the States – there are no big differences.
What trend is noticeable? At the beginning, everything was difficult because to be able to write in Algol 68 and Fortran it was necessary to be almost an engineer, an electrical engineer, to understand where some contacts are closed and something else for programming. Then, it was necessary to sit with the notepad and count the memory, to look after it. And gradually everything became easier, simpler for the programmer – how to think less of a person, how to do more automatically.
- BASIC. It might be that some people still using it. It was invented as a language for non-programmers. At that time, the programmer was such a very specialized profession. And here they tell you: “We have a great Basic language, and any reasonable person will take and write a program on it – easily.” Again, that BASIC and modern BASIC is a huge difference. Anyone lines with the numbering through 10, all sorts of GOTO and another horror – they have no relation to the modern BASIC and even to BASIC of the year 89 they have little relation.
- Another funny story is the Pascal language, widely known in high school circles, mainly in Russia and the countries of the former Soviet Union. It has been used and continues to be used surprisingly as a learning language. In the rest of the world, it is less common, but also lives and lives well. There was such a man Wirth – he was a scientist, a theorist. He participated in the discussion of Algol 68, he did not like what happened, and he came up with his own language – Pascal. And then the firm Borland (and before that many other firms – Apple was engaged, in particular) took and spoiled everything. He had a beautiful theory, slender – “everything will be fine,” – and they took and poured there what people need for work. Well, it did not turn out as beautifully as he wanted.
- And, finally, C Language. C was invented by engineers. If Pascal came up with a scientist, then C came up with Brian Kernighan and Dennis Ritchie, they worked as engineers at Bell.
How did this happen? At that time, it was impossible to write a system code in Fortran, COBOL, Algol languages.
What is a “system”? For example, the operating system, the drivers, something else. These languages were intended for mathematical calculations, for business calculations, for all such. And everything else was written in Assembly language. The C language did not appear immediately from Assembly language but through some intermediate things.
The essence of what? Brian Kernighan and Dennis Ritchie loved to play in Asteroids (video game). They had a server on which they played, but there were a lot of people there, and the game was breaking. And they found somewhere in their office that they have a computer that nobody uses. But there was a problem – it had another architecture, and the game was written in Assembly language.
- They rewrote it, of course, even wedged features to play on it. But this led them to the idea that to rewrite the new architecture every time – it’s not very smart. And they decided to write such a high-level language that would be suitable for system programming, that is, in which you can manage the memory in which you can understand where something lies and how to access these pieces of memory. And so appeared the language of C, which had a huge impact on everything else.
- Accordingly, it was the main language in Unix – the operating system, which at that time was even more popular than now. And by the 1980s the situation was somewhat like this.
Languages originally from the 80’s
- One of the first oddities was the C ++ language. Language C has a huge number of shortcomings (well, it’s just generally huge) – it can do everything at all. But at the same time, some architectural things are done there quite difficult – again, like in Assembly language, we have to keep track of where we are, what and what memory was allocated; It is there all the time this memory “flows” somewhere – that is, we have isolated, forgotten to remove, removed not that, we have climbed out of memory, in general – a lot of problems have been ranked.
- C ++ was first created as a set of additions to the C language that will facilitate development. At that time, object-oriented programming became fashionable and people decided that everything could be described as a hierarchy. Then it was fashionable that “we are now writing everything in the form of a hierarchy, and everything will be fine, life will be fine, everything will be fine and everything.” C ++ in some sense implemented this object approach – it was not the first language of object-oriented programming, but it became quite popular and all sorts of features began to appear in it. At the same time, C ++ retained almost full compatibility (at that time) with the C language, the program written in C was successfully compiled as C ++ in 99% of the cases and even worked as well. It was intended to make it easy for C to switch to C ++.
- In addition to the object approach (in C ++), the Standard Template Library (STL) quickly appeared. I think that in school those who taught Pascal found that you do not have built-in sorting (in the ancient, blue Borland Pascal, now it is already in modern versions).That is, you had an abstract program that something that could be compared to each other, successfully sorted.
Scripting languages from the 90’s
- Somewhere in the late 80’s and 90’s the computers became so good that you could already do absolutely strange and very inefficient things. In particular, these were scripting languages that were not compiled into machine code but were interpreted. BASIC was also interpreted at some time, but these scripting languages were primarily designed for word processing – for example, Perl, Python (it was not very famous at the time), PHP, Ruby – Even popular this days (they all had time to appear before 2000, even much earlier).
- Let’s go through them a little because these are specific things and now many are used.
The idea is what? If we do not compile, then we can allow much more. For example, a program can look at its code and somehow use it; She knows what is happening in her and at the expense of this, there is much that can be done.
- Perl was intended for word processing – at that time there was already so much memory on the computers that it was possible to stuff some text there and something useful to do with this text (for example, count words, search for some). But, in my opinion, it was designed by people who were a bit out of themselves, because there is a joke about it: “Any character set written is a correct program on Pearl”. In my opinion, you can only write on it, you can not read it. When I look at the code on Perl and try to understand something, I do not understand anything. Maybe if I knew him better, I would have understood something, but as I heard from those people who still know how, they say it’s easier to rewrite it. That is, the programs are short and it is actually easier to rewrite than to figure out what is there and fix it.
- Approximately at the time, in the mid-90’s, the Internet appeared. At first, it was email, sites with static HTML, but people wanted to add some dynamics to it so that everything would happen dynamically, some forms could be filled in, guest books could be done, something else. Accordingly, it required some kind of interaction, invented a protocol, how it interacts, and, most importantly, the generation of these static (conditionally) pages that will spit out to the user in response to his request.
- In general, nothing but Pearl at that time was suitable. Write in pure C or C ++ handler was a bad idea. And from lack of a better one at that time (and long enough) Pearl was a popular language for web development. Of course, the scale will not be compared with what is happening now.
- PHP appeared by accident. One person rather quickly stopped doing this – he made his page somehow, he had a guest book. And he wrote a set of macros for Pearl that looked like C because he could do it in C, just because it was so convenient for him. And called it HomePage. And people liked it.
- Then he dropped this business. In general, eventually, this PHP began to live and became much more popular with time than Perl. But this is his “birth trauma” (an idea as a set of macros for Pearl) with him playing a rather evil joke. The language turned out strange. That is, it developed on its own, no one designed it, no one administrated the development process (neither the company, nor any person), but there were many groups, each of which sawed what they liked. As a result, functions are called there differently, there is not even a style, all through underscores, in general, horrible, the settings lie here and there, and how it will all work is not very clear. But you can sit down and write in PHP in two hours because he thought so.
- Python and Ruby: Ruby is now less popular, Python somehow better. It’s clear that in those days it was highly specialized languages for highly specialized purposes. In general, no system programming, no business logic, no one wrote on them at the time and now it does not do much.
Compiled languages from the 90s
- At that time C ++ was used for almost everything that needed to be written not for the web, not for text processing, but for simple applications, for operating systems, for games – in general, for anything. But C ++ is a creepy language in fact.
Why? Because, firstly, it’s inherited all the problems due to backward compatibility.
- C++ had a very strange object model peculiar. The breakdown of the program into modules, into pieces, some even came from C. If you could write in C or C ++ – in fact it was intended as simply inserting the text of the library into your program, in the end, when you write a bunch of inclusions you have everything – if it is “primitive”, as it was at the very beginning – everything is inserted into one file and then it all is terribly long compiled, because it goes several times. The same Pascal was much more thoughtful in this respect, later Versions have become even better.
- In general, there are a lot of shortcomings in C ++. The programmer’s qualification should have been high to write in C ++, and such programmers were expensive (and training, and something else, that is, it’s hard to find in the market for programmers, they need to pay a lot). And computers are faster and faster for us, they are becoming cheaper, people are buying new computers and want more applications.
- So, there was (Java). The programmers are always loved to drink a coffee and at that time it was fashionable, which grew on the island of Java. The language was conceived as a language for embedded devices, in particular for a coffee machine. That’s how the name turned out.
What generally started with it, that it was good and why it won great popularity? First of all, they introduced much more recent ideas in terms of the object model – that is, C ++ appeared much earlier than Java and used a more archaic, “wild” object model. Well, it was already more thoughtful then, and in theory, people thought, and in practice used and made everything much steeper.
- The programs on Java gathered not in the machine code, but in the code for the virtual machine. Your programs were going to some sort of intermediate view and then, with the help of JVM, they were already running.
What did it give? First, it slowed down, secondly, it was eating memory with a terrible force, in the third, it was portable anywhere (theoretically) – at least for a coffee maker, coffee grinder, computer, even for a mobile phone. This, on the one hand, is good, that is, you just wrote a virtual machine implementation, then launch your Java programs everywhere. But, on the other hand, it’s bad that on the same phone then there was not enough memory, there was a low performance and everything else started to stun and slow down.
- But even this is not the main thing, for which the whole language was invented. Java language was invented to reduce the requirements for the qualification of programmers. That is, poorer programmers can write good Java programs because it does not allow writing bad programs – there’s no money to write programs badly. There you can write only well, programs. Well, in the understanding of the creators of the language.
- The next language that appeared is (dot Net), and in particular, we are interested in C #, that is, there are differences in the details if you choose between them – see where More money is paid).
The choice of language depending on the task
Let’s say you are faced with the task of writing a driver for a video card.
What language will you use today?
I think the majority choose the Java but why? why is not Ruby or PHP or C++ or C#?
I can tell you that the each programming language can be used for different type of programming.
- If you write something low-level, then the best choice is C. But I have little faith in this because in C you can clearly control – since you gave so many bytes of memory. And in C ++ (STL), how is the string implemented? Well, somehow implemented. And we do not, in the end, know how or what happens there, maybe our memory will run out on our video card or something else will happen. Therefore, C still lives and does not die, such problems of system programming still exist – write an operating system, write drivers, write something else – C is great for this.
- In addition, now there are all kinds of devices (IoT promise that it’s about to come) that live on battery (and, of course, there will be millions of them, everything will be hung with this Internet of things), they have to be very cheap and very little electricity consume. Accordingly, there will be 2 KB of memory, a processor at 5 kHz, well, it’s understandable that screwing up some virtual machine or scripting language will not work in the near future – that means you’ll have to write something on C. And now, for example, calculations on a video card (OpenCL or some other technology) – they do not come up with a new language to write programs for them – they make C with some great limitations.
- Let’s say you want to write a new Facebook (social network).
On what language will you write this?
- Surprisingly, it’s written in PHP – and Facebook, and many other great projects. In principle, less all the same, on what you will write, but I do not advise. Everyone writes some framework or something else. Online store? They downloaded a framework for an online store – well, everything, they wrote an online store.
Programming for Business
You might want to write some application for the bank.
On what will you write such an application?
Why? Because when you write something on Python, you can not detect a significant number of bugs during the writing process. Python is dynamically typed in every way, and in general, there it is possible to hide a bug so that it pops up in such a situation that you can not even understand what these sham-proof users have done there that you have broken everything.
- If you need to write something for a long time, for example, a banking application of some sort (so that it approves credits, something else) – you write it in Java. Because it’s a serious matter, papers, money, documents, something else, but it can not be so messed up in it, that everything will break down, or people will take offense – they have left money and have not reached anywhere, because you have some kind of The moment the string has become a number or vice versa. So, it means, methodically on Java you take and write. Well, or you can choose a dot Net as well for that type of programming.
Programming for the army, aerospace industry
Now imagine that you have been given a task to write a software for a space ship.
What language would you prefer to write code that controls the engines of the rocket? Maybe in Java? It seems there is pretty reliable everything and the architecture is good, no wild types, no exits beyond the memory of superfluous.
- Honestly, I would prefer that Pascal writes this program. I’m not a big fan of Pascal, but somehow in such matters, it would be much reliable.
Use multiple languages for software development
Well, what do you need to say about modern languages? Now many projects are written in multiple languages and it’s not something new.
- In the development of some applications, even large, sometimes people do what? They take and write on Python as the sketch. It often turns out that this method is not bad, because if you write immediately on something, for example, Java, and then decide: “No, let’s refactor, change the architecture completely and everything,” – then spend 10 times more time. Such things also exist and live.
The success conditions of any programming language
Now let’s talk about why some good-looking languages did not survive, well, or live in a very limited space.
- When Niklaus Wirth saw what has been done with Pascal, he came up with an even better language – Oberon. It was just wildly minimalistic – that is. Well, but it didn’t work out for him.
- One more thing. The US military was asked to develop a cool language too, on which everything works and everything can be written. As a result, the rather monstrous language of Ada turned out, on which, however, something is being written so far, but again – for the military only.
What is the problem? Why some languages like Python, which no company supported it at first, took over the market. PHP, which is also poorly designed, also by itself took and captured the market. And all sorts of billions of dollars are invested.
What is the reason for this? This is due to the fact that there is no infrastructure around these languages. That is, the language can be different, but there is no documentation yet, as long as there is no community that can answer questions (on Stack Overflow) and, finally, most importantly, while there are not a lot of libraries, the language does not fire. That is, you, for example, wanted to write a website on Oberon. And what’s wrong, why not? And the hassle begins … Web server you can not raise your on Oberon to test lightly, you can not connect any libraries because they are not on Oberon. And all this through some crutches is done, the forces go away, and in general, you spit and write your website instead of Oberon on pure Si. And those languages that can use libraries from other languages live well. The same Python in the places where he brakes. Well, in general, all sorts of standard sorting things and something else is written in C, and it (Python) knows how to interact with them.
- For example, you want to write a website on Oberon. And what’s wrong, why not? And the hassle begins … Web server you can not raise your on Oberon to test lightly, you can not connect any libraries because they are not on Oberon. And all this through some crutches is done, the forces go away, and in general, you spit and write your website instead of Oberon on pure C. And those languages that can use libraries from other languages live well. The same Python in the places where he brakes. Well, in general, all sorts of standard sorting things and something else is written in C, and it (Python) knows how to interact with them.
- Java also has a Java Native Interface. Java and C languages can interact with existing libraries. Do not write in languages that don’t integrate into different languages.