• List of programming languages. Different programming languages ​​and their areas of application. Lecture in Yandex

    When you're trying to figure out which programming language to start learning, you're likely to come across the terms "high level" and "low level". People talk about high and low level programming languages ​​all the time. But what exactly does this mean? And what does it mean to learn to code? Let's start with the definitions of each.


    High and Low Level Programming Languages

    In this article I will talk about "high" and "low level" languages. But there are no special criteria for determining this. Just keep in mind that this depends a lot on your perspective. If you are a C programmer, Java might seem pretty high level. If you're used to Ruby, Java may seem like a low level language.

    Machine code and low-level languages

    Whether a language is considered high-level or low-level (or somewhere in between), it's about abstraction. Machine code does not have an abstraction - it contains individual instructions that are passed to the computer. And since machines only deal with numbers, they are represented in binary (although they are sometimes written in decimal or hexadecimal notation).

    Here is an example of native code:

    In machine code, operations must be specified exactly. For example, if a piece of information needs to be retrieved from memory, the machine code will have to tell the computer where to find it in memory.

    Writing directly to machine code is possible, but very difficult.

    Low-level programming languages ​​add a bit of abstraction to machine codes. This abstraction hides specific machine code instructions behind declarations that are more human readable. Assembly languages ​​are the lowest level languages ​​next to machine code.

    In machine code, you can write something like "10110000 01100001", but assembly language can simplify this as "MOV AL, 61h". There is still an almost one-to-one correspondence between what is written in assembly language and the instructions given to the machine.

    By moving to more popular programming languages, you end up with something like C. Although this language is not as low-level as assembly language, there is still a strong correspondence between what is written in C and machine code. Most operations written in C can be filled with a small number of machine code instructions.

    High level programming languages

    Like lower level languages, higher levels cover a wide range of abstractions. Some languages, such as Java (which many consider to be middle-level programming languages), still give you a lot of control over how the computer manages memory and data.

    Others, like Ruby and Python, are very abstract. They give you less access to lower level functions, but the syntax is much easier to read and write. You can group things in classes that inherit characteristics, so you only need to declare them once.

    Variables, objects, subroutines, and loops are important parts of high-level languages. These concepts and more will help you tell the machine a lot of things with short, concise statements.

    If an assembly language has a nearly uniform correspondence between its instructions and machine code instructions, a higher-level language can send dozens of instructions with a single line of code.

    It's important to note that "high-level programming languages" can include anything more abstract than assembly language.

    What language to study: low or high level?

    This is certainly a common question among new and novice programmers. Which programming languages ​​are better to learn: high or low level? As is the case with many programming questions, the question of high-level and low-level programming languages ​​is not so simple.

    Both types of languages ​​have important advantages. Low-level languages, because they require little interpretation by the computer, are usually very fast. And they give programmers a lot of control over data storage, memory, and retrieval.

    However, high-level languages ​​are intuitive and allow programmers to write code much more efficiently. These languages ​​are also considered "safer" as there are more safeguards that prevent a coder from issuing badly written commands that can cause damage. But they don't give programmers the same control over low-level processes.

    With that in mind, here is a list of popular languages ​​on a scale from low to high:

    • JavaScript
    • Python

    Of course, this is somewhat subjective. And it only includes a tiny fraction of the available languages.

    But this should give you some idea of ​​what level the languages ​​you are interested in are at.

    What do you want to do?

    When deciding which language you will learn, your first question should be: what do you want to program?

    If you want to program operating systems, kernels, or whatever is needed to run at top speed, a lower level language might be a good choice. Much of Windows, OS X, and Linux is written in C and C-derived languages ​​such as C++ and Objective-C.

    Many modern applications are written in higher-level languages ​​or even domain-specific languages. Python and Ruby are especially popular for web applications, although HTML5 is getting more and more powerful. Languages ​​like Swift, C#, JavaScript and SQL have their own strengths and weaknesses.

    I recently read a topic on a programming forum and came across an interesting suggestion: study both levels at once. You will gain a deeper understanding of the types of abstractions that make a higher level language more efficient.

    Of course, learning two languages ​​at the same time isn't easy, so you might want to stretch them out a bit. And choosing the two languages ​​that are most similar can be helpful.

    Again, we're back to what I was talking about earlier: choose a language based on what you want to do. Do some research to find out what languages ​​people use in their field. Then use this information to choose a high and low level language and start learning them.

    You will soon see the parallels and you will gain a much deeper understanding of how programming works.

    Focus on the end, not the means

    There are many criteria that you can use to select a programming language. One of the criteria is high and low level. But in almost every case, the criteria you should use is what you want to program.

    Your project might benefit from a low-level language. Or it could be much more efficient at a high level. You have to choose the right tool for the job yourself. Focus on your goal, and choose the right language every time.

    Do you have experience with high and low level languages? Do you prefer one over the other? Share your thoughts in the comments below!

    Different programming languages ​​and their areas of application. Lecture in Yandex

    We decided to dedicate our first post this year to a very basic topic, a lecture on which was given at the Small ShAD. It is attended by high school students who are interested in technology, hence the specificity of the presentation - the lecture will be especially interesting for those who are just starting to program and are thinking about which direction to develop. For them, Yandex has a course "Introduction to Programming (C++)", which can be taken on the Stepic.org platform.

    Lecturer Mikhail Gustokashin - curator of academic programs at Yandex, director of the Center for Student Olympiads of the HSE Faculty of Computer Science. Mikhail prepared dozens of winners and prize-winners of the All-Russian Programming Olympiads.

    The lecture tells about what programming languages ​​are, how they differ, how they appeared and which ones are better and which ones are worse. In the beginning, we will talk a little about the history of languages ​​- how they appeared, how people started programming, how everything developed, what is happening now. The second part will touch on what tasks which language is suitable for, how to "choose your favorite language and enjoy life." The lecturer will also talk a little about how, in his opinion, to learn all this and then get a job.

    As always, under the cut is a detailed transcript of the lecture so that you can navigate its content.

    History of programming languages

    Let's start from the very beginning. In the beginning, computers didn't even have keyboards! That is, everything was very bad - they had neither a keyboard nor a screen, they had punched cards (these are such little things with holes or with no holes). Accordingly, either the pins were thrust there, or they shone with light there. If there is a hole (or vice versa not) - it meant zero or one. And programs at that time were written using machine codes - each operation in a computer (addition, subtraction, some more complex operations) had some kind of machine code. People themselves chose this code from the plate, all sorts of addresses in memory, they knocked it all out with their hands and thrust it into the reader - and it was all considered. Of course, the work of a programmer was probably not very interesting then - 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 (Assembler), which has already made life a little easier.

    Well, how did he make life easier? Instead of remembering that there was some kind of "magic" code for the command, all sorts of words similar to "human" English were used - some add or mov - well, and then registers or memory areas were listed, variables with which these perform operations. But it is clear that this, in general, also required a sufficiently large mental effort to keep in mind in which register we have what lies, where are the variables and what is happening in general. Why did this happen? Because computers were "stupid" and could not understand anything more "smart". In fact, it also takes time and memory to assemble machine code from assembler (at that time, of course, there was not enough of it).

    Gradually, it became clear that it was very difficult to develop such large complex programs. The productivity of the programmer in these commands was extremely low - that is, he wrote several lines a day (meaningful), and each line did nothing special - some simple arithmetic operations. And people wanted to make languages ​​much more like human language, English in particular, so that it would be easier and more convenient to write programs. And off we go!

    Old and dead languages

    One of the first languages ​​was Fortran. By the way, it was also beaten out on punched cards - there were special punched cards for knocking out Fortran programs. But if you now take this Fortran - in my opinion, it is even somewhere between 50-60 years. appeared - and try to write something on it, it will be very unpleasant for you, I guarantee you! Modern Fortran is still alive, but already quite different from what it was before.

    Other languages ​​- now I’ll write one thing, which you probably heard about, but only at all sorts of events where they talk about the history of programming - this is COBOL. It was a language for writing business applications. What are business applications? Some transactions in banks, something else, all this was written in Cobol. We are, of course, not very popular. I think you will find a Cobol programmer in Moscow with great difficulty. And somewhere not in Moscow - with even greater difficulty. But, surprisingly, even 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 go with the help of programs written on it (COBOL), and people still write something on it.

    There is also a “funny” language, it was called Algol (68th version, which characterizes the year of its creation). It's an algorithmic language. In general, they knew something there, but now we are not very interested in what they can do. And on this, our excursion into antiquity and relatively unused languages ​​can be completed and we can move on to what is still alive (and actively living).

    Old but living languages

    Algol was invented in Europe, and Fortran was used mainly in the States - there are no big differences. What trend is visible? At first, everything was difficult and in order to write, you had to be almost an engineer, an electrical engineer, to understand where which contacts are closed and something else for programming. Then, too, it was necessary to sit with the leaves and count the memory, look after it. And gradually everything became simpler, simpler, simpler and further even easier for the programmer - as little as possible for a person to think, as much as possible to do automatically. Around the end of this period (the lecturer points to Algol and Kobol), languages ​​begin to appear that, in a sense, have “survived” to this day.

    BASIC. Perhaps some people still write something on it, at least I saw that in some institutions they teach in QBasic - such a blue window where “1989” is written. In general, "with might and main" lives! It was conceived as a language for non-programmers. At that time programmer was such a very specialized profession. And here they tell you: "Here we have a cool Basic language, and any reasonable person will take and write a program in it - it's easy." Again, that BASIC and modern BASIC is a huge difference. All these lines numbered through 10, all sorts of GOTOs and other horrors - they no longer have anything to do with modern BASIC, and even they have little to do with BASIC of the 89th year.

    Another funny story is the Pascal language, widely known in university circles, mainly in Russia and in the countries of the former Soviet Union. It has been and continues to be used surprisingly as a teaching language. In the rest of the world, it is less common, but also alive and well. There is such a person Wirth - here he is a scientist, a theorist. He participated in the discussion of Algol, he did not like what happened, and he came up with his own language - Pascal. And then the Borland company (and before that, many other companies - Apple was involved, in particular) took it and ruined everything. He had a beautiful theory, slender - "everything will be fine," - and they took it and stuffed it with what people need for work. Well, it didn't turn out as nicely as he wanted.

    And finally, . C was invented by engineers. If Pascal was invented by a scientist, then C was invented by Kernighan and Ritchie, they worked as engineers at Bell. How did it happen? At that time, in these languages ​​(the lecturer points to Fortran, COBOL, Algol), it was impossible to write anything systemic. What is "systemic"? For example, an operating system, some drivers, something else. These languages ​​were meant for mathematical calculations, for business calculations, for everything. And everything else was written in assembler. There were some languages, they are now dead, that is, the C language did not appear immediately from Assembler, but through some intermediate things.

    What is the point? Kernighan and Ritchie liked to play Asteroids toy - a spaceship is flying, and there are asteroids, he shoots at them, and they fall apart. They had a server where they played, but there were a lot of people there, and the toy slowed down. And they found somewhere in their office that they have some kind of computer that no one uses. But there was a problem - it was of a different architecture, and the game was written in assembler.

    They rewrote it, of course, even added some features to play on it. But this led them to the idea that rewriting for a new architecture every time is not very smart. And they decided to write a high-level language that would be suitable for system programming, that is, in which it would be possible to manage memory, in which it would be possible to understand where something lies and how to access these pieces of memory. And so the C language appeared, which had a huge impact on everything that followed. All of them (the lecturer points to Algol, Fortran and other mentioned languages) had a great influence, but C - right, yes ...

    Accordingly, it was the main language in Unix, an operating system that was even more popular then than it is now. And around the 80s, the situation was something like this (the lecturer shows in Basic, C and other languages ​​\u200b\u200bmentioned). Let's assume that all this has already slowly died with us (the lecturer erases the mention of Assembler, Fortran and Algol) ... And in the 80s, computers became smaller, smarter, cheaper, and people wanted all sorts of oddities in order to live even better, to live even more fun.

    Languages ​​from the 80s

    One of the first oddities was the C++ language. The C language has a huge number of shortcomings (well, just a huge one) - you can do everything in it, including shooting yourself in the foot, shooting yourself in the foot with fiction, in the other foot, shooting with one foot in the other foot, in general - that whatever you want to do. But at the same time, some architectural things are made quite difficult there - again, as in Assembler, we have to keep track of where we are, what and what kind of memory we allocated; it is there all the time "flowing" somewhere this memory - that is, we allocated, forgot to delete, deleted the wrong thing, climbed out of memory, in general - raked a lot of problems.

    C++ was originally created as a set of extensions to the C language that would make development easier. At that time, object-oriented programming became fashionable and people decided that everything can be described as a hierarchy, that is, you have a ball (abstract), you inherit from it a soccer ball, a volleyball, another abstract ball. Then it was fashionable that "we now write everything in the form of some kind of hierarchy, and everything will be fine, life will get better, everything will become fine and that's it." C++ in a sense implemented this object approach - it was not the first object-oriented programming language, but it became quite popular and all sorts of features began to appear in it. At the same time, C ++ retained almost complete compatibility (at that time) with the C language, a program written in C was successfully compiled as C ++ in 99% of cases and even worked the same way. This was intended to make it easy to migrate from C to C++.

    In addition to the object approach (in C++), the Standard Template Library (STL) appeared fairly quickly. I think that at school, those who still studied Pascal found out that you have, firstly, no built-in sorting (in the ancient, blue Borland Pascal, now it is already in modern versions) - there is an example (source) sorting, it can be copied and pasted. But if you want to sort integers here, you want real numbers here, and here you want strings that can be compared with each other, you had to write three different sorts that do exactly the same thing, they just have different data types. This is not very good, and templates, which did not immediately appear in C ++, greatly facilitated this problem. That is, you had an abstract program that successfully sorted something that could be compared with each other.

    Scripting languages ​​from the 90s

    But time did not stand still, in the 80s a lot of interesting things happened. But somewhere around the turn of the 80s and 90s, computers became so good that it was already possible to do very strange and very inefficient things. In particular, these were scripting languages ​​that were not compiled into machine code, but interpreted. BASIC was also interpreted at some time, but these scripting languages ​​\u200b\u200bwere mainly intended for word processing - for example, Perl, Python (it was not very famous then), PHP, Ruby - these are the scripting languages ​​​​that in one or to some extent, they still live (they all managed to appear before 2000, even much earlier).

    Let's go over them a bit, because these are specific things and are now used in a lot of places. What is the idea? If we do not compile, then we can allow a lot more. For example, a program can look at its code and somehow use it; she knows what is going on in her and due to this, you can do a lot of interesting things.

    Perl was designed for word processing - in those days there was already so much memory in computers that you could put some text in there and do something useful with this text (for example, count words, search for some). But, in my opinion, it was designed by people who were a little crazy, because there is such a joke about it: "Any character set written is a correct program in Perl." In my opinion, you can only write on it, you cannot read it. When I look at the Perl code and try to understand something, I don't understand anything. Maybe if I knew him better, I would understand something, but as I heard from those people who still know how, they say that it is easier to rewrite. That is, the programs are short and really easier to rewrite than to figure out what is there and fix it.

    Around that time, in the mid-90s, the Internet appeared. At first it was mail, sites with static HTML, but people wanted to add some kind of dynamics there, so that everything would happen dynamically, some forms could be filled out, guest books could be done, something else. Accordingly, this required some kind of interaction, they came up with a protocol for how it interacts, and, most importantly, the generation of these static (conditionally) pages that will be “spit out” to the user in response to his request.

    In general, nothing but Pearl at that time did not fit. Writing in pure C or C++ handler was a bad idea. And for lack of a better one at the time (and long enough), Pearl was the go-to language for web development. Of course, the scale cannot be compared with what is happening now.

    PHP appeared as ... by accident. One person pretty quickly stopped doing this - he made some kind of his own page, he had some kind of guest book, something else, some kind of thing. And he wrote a set of some macros for Perl that looked like C, because he knew how to use C, simply because it was so convenient for him. And called it Personal HomePage. He shared it and said: “People, look what I wrote, everything is much clearer here than on Perl and you can edit it.” And people liked it.

    Then he dropped the matter. In general, as a result, this PHP began to live and became much more popular than Perl over time. But this "birth trauma" of his (the idea as a set of macros for Pearl) played a rather cruel joke with him. The language is strange. That is, it developed on its own, no one designed it, no one administered the development process (neither the company, nor any person), but there were many groups, each of which sawed what they liked. As a result, the functions are called differently there, there is not even a style, everything is through underlining, in general, anyhow, the settings are here and there, and how all this will 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 less popular now, Python is somehow better "planed", let's talk about it later. It is clear that in those days these were (the lecturer points to Perl, Python, Ruby, PHP) highly specialized languages ​​for highly specialized purposes. In the general case, no one wrote any system programming, no business logic on them at that time, and now they do not do it very much.

    Compiled languages ​​from the 90s

    We will go at about the same times, but in a different direction. At that time, C++ was used in our country for almost everything that needed to be written not for the web, not for text processing, but for just applications, for operating systems, for toys - in general, for anything. But C++ is a creepy language, really. Why? Because, firstly, it inherited all the problems of C due to backward compatibility. There you could still kill yourself in a million different ways, the same ones that were in C (naturally, new ways were added in C ++). At the same time, if you write everything well and correctly, as it was intended by the authors of C ++, then, of course, it was already impossible to kill yourself in the old C-ish ways, and it seems like there were fewer of them. However, it had a very strange object model of its own. Splitting the program into modules, into pieces, somehow came from C (if you know how to write include in C or C ++ - in fact, it was conceived as just inserting the text of the library into your program, as a result, when you write a bunch of includes, you have everything - if it is “primitive”, as it was at the very beginning - everything is inserted into one file and then it all takes a terribly long time to compile, because it goes several times. The same Pascal, Virtovsky, was much more thoughtful in this regard, later versions are even better.

    In general, C++ has a lot of shortcomings. The qualifications of a programmer had to be high in order to write in C ++, and such programmers were expensive (both training and something else, that is, it is difficult to find programmers on the market, they need to pay a lot, well, in general, this is not a thing ... ). And our computers are counting faster and faster, becoming cheaper, people are buying new computers for themselves and want more applications, more toys for their phones, in general, more joy.

    This is how Java was born. There is also a rather funny story about how this language got its name. There are programmers, they drink coffee all the time, and at that time it was fashionable to drink coffee, 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 came about...
    What in general began with her, what was good in her and why did she gain great popularity? First, they got rid of Sishnoi's heritage, completely. No pointers, much less ways to shoot yourself some part of the body and break everything. Secondly, 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, here (the lecturer points to Java) it was already more thought out then, and in theory people thought, and applied in practice and made everything much cooler.

    And finally, the third. Our programs in Java were assembled not into machine code, but into code for a virtual machine. That is, you had a virtual machine (VM) JVM - Java. Your programs were assembled into some kind of intermediate representation and then, with the help of this machine, they were already executed. What did it give? Firstly, it slowed down, secondly, it ate memory with terrible force, thirdly, it was portable anywhere (theoretically) - even to a coffee maker, even to a coffee grinder, even to a computer, even to a mobile phone. On the one hand, this is good, that is, you just wrote the implementation of a virtual machine, then you launch your Java programs everywhere. But, on the other hand, it’s bad that there was little memory on the same phone at that time, there was low performance, and all this additionally began to blunt and slow down.

    But even this is not the main thing for which the language was invented in general. The Java language was invented to reduce the requirements for the qualifications of programmers. That is, worse programmers can write good programs in Java, because it does not allow you to write bad programs - there are no means to write programs badly. There you can only write good programs. Well, in the understanding of the creators of the language.

    That is, if in C, in C ++, in Python, on anything we can breed some kind of terrible garbage dump from our project, where we have everything mixed up, going for hours, and there is something else. In Java, it is also possible to breed a garbage can, but for this you already need to make some effort. That is, by default, it doesn’t turn out to be a “garbage dump”, other problems turn out, that something was inherited, inherited there - in general, ten not very meaningful ones turn out to be one meaningful line. But, maybe such a middle-skilled programmer can write pretty high-quality code.
    We've almost reached the end. For us, the next thing that appeared is .Net (dotnet), and in particular, we are interested in C # (almost the same [lecturer points to Java], that is, there are differences in details, if you choose between them - see where pay more money).

    And one more thing - JavaScript. Has nothing to do with the Java language, appeared in the same year - the word was fashionable, they licensed the trademark to use.

    What is the most important thing to pay attention to? (The lecturer draws arrows from C++ to Java, .Net, C#, JavaScript and PHP). To write a simple program in one of these languages, and in many others - if you know C ++, you generally don't need to know anything else - you take and write in C ++, and then add dollars at the beginning, something else do the little things and it starts working for you on anything (the lecturer points to the languages ​​​​to which the arrows from C ++ were assigned). That is, they are extremely similar in some simple things. If you are solving some school problems, educational problems, something else (you are not designing a large project - you have one file that reads numbers, displays numbers in the console, does something else), then there is almost no difference between these languages. It is clear that JavaScript and PHP are specialized, they have everything a little differently. And here (the lecturer points to Java and C #) there is very little difference at all.

    Since then, all sorts of other interesting things have appeared, but it is not clear whether they will live or die successfully. What now, for what tasks do they use it?

    Choosing a language depending on the task

    Suppose you are faced with the task of writing a driver for a video card. What language will you use today? (Shout out from the audience: Java!) Why… Java is great, but why not in Ruby or PHP? (The lecturer speaks sarcastically.)

    low level programming

    If you're writing something low-level, then C is the best choice, but I've heard (but not seen) that C++ is used for this. But I have little faith in this, because in C you can clearly control - since you have given so many bytes of memory, it means that there will be so many. And in C++ (STL), how is a string implemented? Well, somehow implemented. And in the end, we don’t know how and what happens there, maybe we will run out of memory on our video card or something else will happen. Therefore, C still lives and does not die, there are still such tasks of system programming - write an operating system, write drivers, write something else - C is great for this. In addition, all sorts of devices are now appearing (the Internet of things promises that it is about to come) that live on batteries (and, of course, there will be millions of them, everything will be hung with this Internet of things), they must be very cheap and very little electricity consume. Accordingly, there will be 2 KB of memory, a processor at 5 kHz, and, of course, it will not be possible to screw in some kind of virtual machine or scripting language in the near future - which means that you will have to write something in C. And even now, for example, calculations on a video card (OpenCL or some other technology) - they don’t come up with a new language to write programs for them - they do C with some big restrictions. Just because people already know how, why learn something new? Formally, this is probably also, in a sense, C.

    Web programming

    Let's say you want to write a new Facebook (social network). What will you write it on? (From the audience they talk about HTML and CSS.) HTML, CSS is design, and we want it to be possible to add photos, make friends, leave comments there.

    For the script part - that is, what will happen on the client side - this is JavaScript. Moreover, sometimes JavaScript is generated in another language and sent (it happens that the script is generated ... because it is sometimes easier to process some changes in the logic).

    Surprisingly, it's written in PHP - and Facebook, and many other big projects. Of course, I had to write my own things so that it still worked fine, and not like it was done, but they did it. In principle, it doesn't matter what you write in, but I don't recommend Perl. Here and now, of course, no one writes anything from scratch for the web. Everyone writes some kind of framework or something else. Online store? We downloaded a framework for an online store - that's all, we wrote an online store.

    Business programming

    Next, you want to write some boring bank application. Or, for example, do you have someone who sells sim cards? Perhaps you have ever bought a phone or something and they told you: “Here is the system hanging, there is nothing we can do.” What will you write such an application on? (A cry from the audience about Python) You can’t write such things in Python, what are you ?! Nothing for business should be written in Python. Why? Because when you write something in Python, you cannot find a significant number of bugs in the process of writing. Python is dynamically typed in every possible way, and in general, you can hide a bug there so that it pops up in such a situation that you can’t even understand what these crooked users did there, that everything broke down for you. That is, it is better to write in Python for yourself, small scripts - you understand what is happening there and what is being done. Well, or something that you don’t mind throwing away: you want to roll something out before your competitors, so what if it breaks down every other time. You wrote in Python and that's it - you captured the market. And if you write something for a long time, for example, some kind of banking application (so that it approves loans, something else) - you write it in Java. Because it’s a serious matter there, papers, money, documents, something else, but you can’t mess it up so much that everything will break, otherwise people will be offended - their money went away and did not reach anywhere, because you have some moment the string turned into a number or vice versa. So, it means that you methodically take and write in Java, write ... Well, or on .Net, such situations, in principle, also happen. There, of course, you can also run into problems, but still the probability of this is somewhat lower.

    Programming for the army, aerospace industry

    Now imagine that they decided to send you to the moon on a rocket. What would you prefer to write the code that controls the rocket's engines? Let's get a look. This, probably (the lecturer points to Perl, Python, PHP, Ruby), is not worth it - it slows down, something else is happening, well, in general, I would not agree to fly on such a rocket. In C++? To be honest, I wouldn't either, because there are too many ways to kill yourself in C++. When you're out there somewhere in space, it's not very good.

    Maybe in Java? Everything seems to be pretty reliable there and the architecture is good, no wild types, no extra memory overruns. Let's say the most crucial moment has come, and our Java has decided to collect garbage for us. We need to land, slow down, and she's like, "No, garbage is going." In general, not so much either.

    To be honest, I would prefer that this program be written in Pascal. Of course, I don’t really like Pascal, but somehow in such matters it would be very cool.

    Using multiple languages ​​for software development at once

    Well, what should be said about modern languages ​​in general. Now many projects do not live in any one language, that is, some of them live in one language, some in another, and some more in a third. For example, if you have some kind of web application that processes wild amounts of information, accesses to disks (not even to databases, they are so huge that even a database already written there can’t even pull) are probably written in some then low-level C, to write to disk wildly fast and all that. Naturally, it is not worth writing the entire project in C. Maybe there is some intermediate logic written in Java that calls C functions for quick calls. Well, the frontend (what the user is looking at), of course, is already written on something, on some scripts, on what is directly executed by the browser (JavaScript). And all this lives together and successfully interacts.

    In the development of some applications, even large ones, sometimes people do what? They take it and write a prototype in Python (how it will all work), sketch it out, think over some kind of architecture. Writing on it is really very fast - they threw a prototype, experimented with it and said: “Wow! That's so cool! And completely rewritten. It would seem that they did the job twice, which took twice as long (well, one and a half). But no! It often turns out that this way is not bad, because if you write immediately in something, for example, in Java, and then decide: “No, let's refactor, change the architecture completely and all that,” then you will spend 10 times more time . Such things also exist and live.

    Conditions for the success of any programming language

    Now let's talk about why some good-looking languages ​​did not survive, or live in a very limited space. When Wirth saw what the bad companies Apple, Borland and all that had done with his Pascal, he came up with an even better language - Oberon. It was just wildly minimalistic - that is, there were very few commands (Strings? Why do we need strings? We'll make an array of characters!). Well, something did not go well with him, to the extent that it could go.

    One more thing. The US military asked them to develop a cool language in which everything works and everything can be written. The result was a rather monstrous Ada language, in which, however, something is still written, but again - only for the military.

    What is the problem? Why did some languages ​​like Python, which no company supported in the beginning, take over the market. PHP, which is also poorly designed, also took over and captured the market (most of it) on its own. And all sorts of billions of dollars were invested (the lecturer points to Ada) and did not go anywhere, nothing happened. What is it connected with? This is because there is no infrastructure around these languages. That is, the language can be excellent, but as long as there is no documentation, as long as there is no community that can answer questions (on Stack Overflow), and, finally, most importantly, as long as there are not a large number of libraries, the language does not shoot. That is, you, for example, wanted to write a website on Oberon. And what is it, why not? And the trouble begins ... You cannot set up your web server on Oberon to test it lightly, you cannot connect any libraries, because they are not on Oberon. And all this is done through some kind of crutches, the forces go away, and in general you spit and write your site in pure C instead of Oberon. And those languages ​​that are able to use libraries from other languages ​​live well. The same Python in those places where it slows down. Well, in general, all sorts of standard things like sorting and something else are written in C, and he (Python) knows how to interact with them.

    Java also has a Java Native Interface. This is essentially C, that is, there (in my opinion, they always want to ban, but it seems they haven’t banned yet) these languages ​​​​can interact with existing libraries (mainly Cs). And due to this they take and work. You understand the idea that I'm trying to convey to you, right? Do not write in those languages ​​that do not know how to connect the C-library. Well, if you want to use something cool. Well, and gradually they (languages) acquire some kind of infrastructure. And they live well.

    Programming language and career guidance

    Now let's talk about how to understand what you want in life. What happens from cool things? You can do some systems programming, right? It’s great to count these bytes there, you want to launch quadrocopters, some kind of cameras, do something else. Then C is probably your choice.

    If you want to write, maybe not the most interesting applications in life, but it's cool for you to design them, think about it all and earn a lot of money for sitting and being bored most of the time (you have to pay for this if you are good miss you), here they are - Java, .Net. You go to work in some bank, you write, you go to work at nine in a white shirt, you get a good salary and write according to the recommendations of the best Java developers, .Net sheep and all that ...

    If you want to write some applications, some browser, some toys, something else, then C ++ is great. If you want to write websites, then here they are, the languages ​​of your choice (the lecturer shows Perl, Python, PHP, Ruby), there is not much difference. The only thing is that PHP will die before Python, so if you are too lazy to learn new things, then learn Python. You won't notice a big difference, but you'll last longer.

    What happens to Ruby is also unclear. Well, you can also PHP, if you have already learned it, since they are so simple that it does not take so long to relearn there.

    And finally, there is another area of ​​application of programming languages ​​- this is when a non-programmer uses them. Let's say you are a mathematician, physicist, chemist, analyst, anyone, and you need to quickly calculate something, analyze some data (to biologists, for example, how many foxes live on the Commander Islands). You can drive all this into a table in Excel or analyze it with something. Python is also well suited for this, it can work with text and libraries are full of all kinds, statistical and all that. If you want to do some kind of Machine Learning, process some data, predict, then Python also does it the fastest now. True, it should be noted that the tasks are very different. For example, if you want to trade on the stock exchange instantly in conditions when quotes change all the time, then no matter how cool Machine Learning you write in Python, people who have it written in something faster will have time to buy everything earlier, until you will be counted, even if their algorithms are worse. Therefore, even these machine learning tasks (some of them) require high performance (and extremely high), and, accordingly, other languages.

    The only way to understand what you want is to try everything. Now I will say as one of the visions of how you can try everything. How to become a programmer, and happy? So. We start from scratch. Here you are studying at school your mathematics, Russian language and other compulsory and optional subjects, and your knowledge in the field of programming is reflected on the board (the lecturer points to an empty board) at the moment. And you want to become a happy person, do what you love, earn a lot of money and not deny yourself anything and be happy.

    One of the ways to achieve this. There are, of course, all sorts of inspiring stories about people who didn't go to universities at all, or dropped out and became billionaires, company owners, and so on. But it should be noted that the majority of people who may not have become billionaires, but also live well, nevertheless graduated from the university at some point.

    What is our situation with entering the university (now you are studying at school)? While you are in school, you need to understand that the next step is to enroll and take care of it. Pass the exam or win the Olympiad. On the exam, you can use Pascal, C ++ (including pure C), Python (I will not mention them further). At the Olympiad - the same Pascal, the same C ++, the same Python (we will talk about its problems now) and, most often, there is Java. Anything else happens depending on the Olympics, but that's not the point.

    What does the schedule for the distribution of languages ​​look like at the All-Russian Olympiad in Informatics? People who participate in the all-Russian, the coolest Olympiad, what do they write on? It looks like this (here it means Pascal, and here it’s about 2000, and here it’s about zero, here it’s C ++, and here it’s 2015).

    In 2000, almost no one wrote C++. 15 years have passed, and almost no one writes in Pascal, despite the fact that Pascal is modern. It's a language that can do pretty much the same thing. It’s just that everyone has become too lazy to learn this, with all sorts of new trends, and everyone continues to write in Borland Pascal, which, of course, can’t do anything. In C++, people write some algorithms (STL) to sort - great, they wrote sort () and that's it. On Pascal, on the usual, on the old - this is a problem. They wrote some set (needed) - excellent, they wrote it in C ++, in Pascal again sheer torment. On the new Pascals, of course, you can do this, but they cost money in general. You may not have noticed it, but it is.

    There is also Java, but there are a lot of letters in Java. It is for large projects, but for small one-time programs it turns out to be quite bad, because there are a lot of extra letters. But also some people write, you can learn to write on it. But it is not available at the USE and the USE will still have to be taken for the most part.

    What is the best for the exam? For the exam, it is best (if you don’t know anything and they don’t teach you anything at school) to learn Python. Some of the exam questions are well solved on it. At the Olympiad, in general, it turns out that C ++ is (used), because Python is very slow, not everything is solved on it.

    So you learned some small subset of the language and some algorithms (maybe) and solved a lot of problems in order to get a diploma from your Olympiad and go to university to get a higher education.

    I will now talk about how we build the course at HSE, in what order the languages ​​are taught, how they are studied in applied mathematics and computer science of the Faculty of Applied Sciences, which we are doing with Yandex. In the first semester - Python (not in full, about how you should be taught at school) and C ++ (already wider, much wider than it is usually taught in schools). Let’s say right away so that you don’t get scared, if you suddenly want to do it, you say: “What, I already know all this, why should I go somewhere to study? I'd rather go somewhere else." For those who already know how to program well, there is an opportunity to immediately go to the study of algorithms, and in a rather theoretical preparation. We don't look at them now, this (points to the blackboard) is for those who program averagely or not at all.

    The first semester teaches you the basics of Python, just so people can learn how to program and so no one gets too offended. Python is rarely taught in schools, mostly people come with knowledge of Pascal or C ++. Basically even Pascal, if it is a mass school. Well, so that no one is offended, everyone is learning a new language (as if they are on an equal footing). And C++, simply because from C++ you can then go anywhere.

    Then comes the course "Algorithms" and a separate course project. Classical algorithms with implementation. Not that in theory we took something, calculated the complexity. At the lecture, we took, calculated the complexity, at the seminar - took, implemented the algorithm. A project is the students doing something finished. For example, one of the projects was: to calculate ... Let's say you have a lot of apartments in Moscow and you understand: “Oh, I have a lot of extra things, I'll rent one. And they set some price, and no one wants to rent an apartment from you - probably too expensive. Or they put up some price, they immediately took it off from you and you think: “Oh, I probably passed it cheaply” - and you are also upset. That is, it was necessary to calculate how much it costs to rent an apartment? You drive in the data - it builds an assessment for you. Such a site that consisted of several things: take sentences, parse, apply some kind of machine learning algorithm (probably) simple and make a beautiful web face in which you can choose something, drive something in, some meters, some number of rooms, number of saunas, number of jacuzzis in your apartment and roughly estimate the cost. That is, some finished, not very complicated thing. Here it means (the lecturer points to a course on algorithms) such a vigorous C ++, with console I / O. Well, and here (the lecturer points to the inscription “project”) something under the guidance of a mentor, perhaps with databases, perhaps with text parsing and something else.
    Then comes the third semester - a course called "Computer Systems". There is quite a bit of assembler to understand (very little) and then, something similar to pure C and interaction with operating systems, system programming in essence. And the project for the seminar is also something on the topic of all sorts of network interactions, quite low-level: develop some utility, for example rsync (synchronization, you probably know. In pure C, more or less, write an analogue of rsync, which you will have over the network sync folders with all file access and so on).

    And finally, the fourth. I don't even know what to call it, it's such a medley of technologies needed for real development, like web development. That is, this is the practical application of databases, again something similar to what was done in the project (the lecturer shows 2 courses on the project), but already more in-depth. That is, such more or less concrete things already, practical programming. In parallel with this, there is any theory, well, here they are still doing science.

    And after two courses, people disperse to do what they are interested in, because this thing covers such basics of programming quite widely and by this moment people already understand that they do not want to deal with computer systems in any way (for example, they did not like system programming ), but they want to deal with some theoretical algorithms, the complexity of counting, inventing some new things, distributed or something else. Or, on the contrary, they think that they don’t have much here ( the lecturer points to the line of the first course with Python and C ++) went, then ( the lecturer points to the line of the third course, with system programming) - how you don't like it, count bytes and set all sorts of read-write restrictions, make streams, threads and something else. And in accordance with this, people choose some direction and study. That is, in principle, so that you do not develop the "duckling syndrome" - you were the first to see your Pascal and now say "Pascal is strength"; or more advanced - you saw C ++ and started talking about everyone that C ++ is strength, and everything else is not very good there.

    Here you need to look at it (the lecturer points to the list of courses on the blackboard) more broadly - this is one of the methods that was chosen, in particular at the HSE (it has recently appeared, so it is quite modern). There are other ways to meet. Other good universities have a slightly different order and different accents. But they also try to acquaint people with everything they have.

    How to find a job as a programmer

    You are ( lecturer points to the list of courses) did everything, learned at the university, did something more productively for two more years and you need to go to work. How do you choose something to work with? Firstly, you got to know everything, went deep somewhere and already know what you love. You have to choose what you like naturally. Because if you love, you will invest your efforts, you will have motivation and in general everything will be fine. Because it's not just about money, it's about making it interesting and pleasant for you. Well, and you want to get into a cool company, get a job. What kind of person would I personally like to see? Let's say a hundred students come to me - I have to take two to work or one. Why do they come, I don’t understand at all who they are, what they are, how they are? At best, they will show me the diploma that they received at the university, and I will say: “Wow! This is a cool diploma, but this is not so cool!” And I could be wrong, by the way. Maybe the person had a lot of free time, and he learned much better.

    What would be great? First, some open source project that you wrote from start to finish. Preferably, if I am doing some kind of infrastructure so that the data is quickly read, or something else, then, of course, I would be interested in writing something open-source for me. They didn’t make some kind of website, but something on the topic. Why is this interesting to me? I can look at your code, I can see how often you commit, I can see how you reacted to bugs from users, bugs from developers who use it - everything is recorded, I look at everything and think: “Wow, this bug has been gone for two years closed, then you impolitely answered the user, there’s something else - I don’t take it. So this is your personal project.

    Next, what else would be cool? I would like to see how you did team work. That is, you come to me for an interview and say: “The guys from the university and I washed down some good application. I made a database there, they made some kind of mobile application there, and we also had a guy working there, a designer girl, a tech support boy. There were five of us and we made a cool project.” Well, I look at what is really your project, I say: “What is yours?” I look at the code again and understand that you know how to work in a team with people.

    A programmer is not the one who sits alone (such an indie) in the garage, somewhere with the lights turned off, does not talk to anyone, grows a beard and writes. All the same, there is some kind of interaction with people. With a boss, for example, who may swear at you sometimes (bosses, they are like that, not always kind). And I see that you know how to work with people and it makes me happy if you have some kind of good team. Even if not good, it's better than none.

    What else would I personally like? If you showed yourself in big projects. For example, you committed something to the Linux kernel, if you are into system programming, you fixed some bug. That is, they showed that you can read someone else's code and know how to make some changes to it. I look: “Oh, really, you figured out something complicated and fixed some bugs!” And I'm starting to really enjoy it. Because I have... well, I don't know... so my programmer quit because his competitors offered him a higher salary, and I urgently need someone to plug his place - you. I look like that you only wrote from scratch, and you don’t know how to read and edit someone else’s code, and I get upset.

    And finally, depending on the specific position, there are different other things. If you are applying for a job as an analyst, I would like you to solve data analysis problems on Kaggle. If you get a job at some algorithmic things, I would like you to do some algorithms in sports programming. And finally, if you thought about the profession, read how interviews go, you met that there some people express great dissatisfaction: “I came, and they ask me what my hobby is. I sit like an owl and don’t answer because I don’t have a hobby,” and they think that HRs do this. In fact, they are trying to understand how friendly and adequate you are. If you are unfriendly and inadequate, then no matter how genius and workaholic you are, a cool specialist with great knowledge, it will be difficult for the team to work with you, and you cannot pull out the project alone. In addition, even if you pull it out, you can imagine what a burden the company is facing. And what will you come tomorrow and say: “Increase my salary by 10 times, otherwise I will leave you.” Of course, companies do not want to get into such a situation. Therefore, cultivating adequacy and goodwill in oneself is as important (at least) as developing some professional skills.

    Summing up, what can be said? Which languages ​​are good and which are bad? Well, within some group of languages, for example between Ruby, Python and PHP, what to choose? Of course, the correct answer is Python, but in fact the difference between them is in the number of bugs allowed, in the amount of something else - 5%, well, maybe 10%. That is, if you already have a finished project written in PHP, then no one in their right mind will say: “Let's rewrite everything in Python.” They will say: "Let's hire more PHP developers and continue to write in PHP." Okay, that's a good choice. Of course, if you suddenly start writing some kind of project, then it may be wise to choose Python now. Although, it also depends. Maybe you have a lot of cheap PHP developers on the market, and Python ones are expensive, and you think: “Yes, the technology is more cool, but I will save money on ready-made developers.” And everything is fine, you already come and work there.
    How to choose between Java and C++? Yes, the exact same thing happens. I think that by the time you decide in which language to start a new big project, you will gain knowledge in your professional area and will be able to make the right choice. Right now you don't have to make that choice just yet, and so I advise you to do what you enjoy.

    The basics, as I said, the very basics of programming (what is a function, what are if’s, for’s, arrays, something else) can be learned more or less in any language. For example, in C ++, since a lot of things are similar to it, and the specifics in it (at this level) are the least, and the least unnecessary letters to write. Well, then, when you learn some complex architectural things, you will learn and you don’t have to worry much about this. That is, the main thing is to try, look for what you like, and when you realize that it is already 4 o'clock in the morning, and you are sitting and writing for fun, because you like it - probably, at this moment it is clear that you have found your .

    There are many ways to measure the popularity of a programming language. But we believe that the analysis of the demand for specialists is the most accurate. It clearly demonstrates to developers the skills they need to improve their career prospects.

    We analyzed the job postings posted on Indeed.com to identify the seven most in-demand programming languages ​​of 2018. Some languages, such as Swift and Ruby, didn't make it into the top seven because they're less popular with employers.

    Demand for Java in 2018 has decreased by about 6,000 job openings compared to 2017. But this programming language is still popular. Java has been used by millions of developers and billions of devices around the world for over 20 years. It can run on any hardware and operating system through the Java Virtual Machine.

    All Android applications are based on Java. 90% of Fortune 500 companies use Java as their server-side programming language.

    2.Python

    Python has grown in popularity by about 5,000 job postings. It is a general purpose programming language used for web development. It is also widely used in scientific computing and data mining. The constant demand for machine learning developers is driving the demand for Python.

    3.JavaScript

    JavaScript is just as popular today as it was in 2017. This programming language is used by more than 80% of developers and 95% of all sites to build dynamic elements on web pages. A number of front-end JavaScript frameworks such as React and AngularJS have great potential. IoT and mobile devices are becoming more and more popular, so we doubt that we will see a decline in the demand for JavaScript programmers anytime soon.

    4. C++

    The demand for C++ has changed little since 2017. This programming language is used to create system / application software, develop games, drivers, client-server applications. Many programmers find C++ more complex than programming languages ​​such as Python or JavaScript. But it is still used in many legacy systems in large enterprises.

    5.C#

    The popularity of C# (pronounced "C sharp") has declined slightly this year. C# is an object-oriented programming language designed for development on the Microsoft .NET platform.

    C#, like C++, is used in video game development, so novice programmers should learn both languages ​​at once.

    6 PHP

    This server-side programming language has risen to sixth place in our ranking (compared to last year). Most developers use PHP to implement features that HTML does not support. And also for interacting with MySQL databases.

    7. Pearl

    Demand for Perl dropped by about 3,000 jobs, and it remained in seventh place in our ranking. Perl continues to be popular with system and network administrators.

    A look into the future

    These are programming languages ​​that have not yet been included in our rating. But in 2018, they have become more popular. Follow them in the future!

    • Swift: A programming language for iOS and macOS released by Apple in 2014, number 14 in our ranking. This is because many developer jobs state the requirements as "iOS" without specifying a specific language. Swift is steadily gaining popularity.
    • R: took 11th place in our rating. But we expect this programming language to skyrocket in a few years. He is gaining popularity, both in the international rankings and in the United States. The growth in demand for R developers is due to the increasing use of the language in data analysis.
    • Rust : Even though Rust doesn't rank very high in our rankings, according to Google Trends, it's steadily evolving.

    Other technologies to be aware of

    The technologies listed below are not formally programming languages. But they are included in the list of requirements that employers impose on developers.

    • SQL: A standard query language designed to store and process information in databases. SQL knowledge is in high demand among employers. He is mentioned in more than 30 thousand vacancies.
    • .NET: Microsoft's platform for developing desktop, mobile, and web applications. It is used by programming languages ​​such as C#, Visual Basic, and F#. And the cross-platform implementation of the technology extends .NET for iOS, Linux and Android.
    • Node: An open source environment that allows you to run JavaScript code on the server side. This provides the ability to use one programming language for the entire web application. We recommend taking some time to learn Node.js.
    • MEAN : The MEAN stack (MongoDB, ExpressJS, AngularJS and Node.js) is ranked 18th in our ranking. Using the stack allows you to create full-fledged JavaScript applications. Learning MEAN will provide a foundation for developing in one of the most popular programming languages ​​in the world.

    Article translation "The 7 Most In-Demand Programming Languages ​​of 2018" was prepared by a friendly project team.

    Good bad

    Any person who decides to master the basics of the process of creating computer programs wonders what are the most popular programming languages ​​today, and which ones are best to learn. And if it is very easy to answer the first question, then the student himself will have to look for the answer to the second, based on his plans and needs.

    Let's take a quick look at the most popular programming languages ​​so that you can choose the one that appeals to you and start learning it.

    programming?

    Before disassembling the main programming languages ​​and describing them, it is necessary to disassemble the concept itself.

    A programming language is a formal sign system that is used to write computer programs. Like any other language, it has its own lexical, semantic and syntactic rules.

    Allocate languages ​​of low and high levels of programming. To date, the latter is mainly used.

    High and low level programming languages

    A low-level programming language has a structure close to the structure. In this case, commands are denoted not with zeros and ones, but with the help of mnemonic notation. The best known low programming language is assembly language.

    Working with any of the languages ​​requires high qualifications, understanding, in addition, writing programs takes a lot of time. At the same time, with the help of low ones, you can create small, but at the same time effective programs. Novice programmers are not recommended to start their acquaintance with them.

    High-level programming languages ​​are characterized by the presence of semantic structures for describing operations. Their study takes a lot of time, and their application in practice requires attentiveness and understanding of the basic structures and rules of syntax and vocabulary. But at the same time, knowledge of high-level languages ​​allows you to create large, colorful, multifunctional projects in record time.

    The high level includes Pascal, Java, C, C++, C#, Delphi and many others. They are used to write software and application programs.

    The most popular programming languages

    What are the most popular programming languages ​​today?

    In recent years, Java, C, C++, Python, C#, which are among the top programming languages, are considered the most popular and in demand. They form the basis of modern programs and are used when writing any large project. More than 70% of programmers work with these languages. It is predicted that in the next 10 years they will still be in the same demand as they are today.

    Ruby, PHP, JavaScript are considered no less popular. Most experts focus on them.

    In general, regardless of popularity, any more or less self-respecting specialist must know at least several languages ​​of different levels. This is due to the fact that most large projects are developed in different languages. For example, some modules are written using C, others are developed in Java, and still others are written in Delphi.

    C, C++ and C#

    Let's start with the C family.

    The C language is compiled and developed in the 70s. On its basis, such languages ​​as C ++ and C #, Java were subsequently created.

    C++ is a powerful language, designed to create both low-level utilities and drivers, and very impressive applications and software packages.

    C# is a modern object-oriented language based on C and C++. Has a safe type system. One of its distinguishing features is that it is also very similar to another popular programming language - Java.

    One of the disadvantages of the language is that it allows you to create applications only for the Windows operating system, and in addition, it is very heavy, which means that programs written in it take up a lot of space.

    It can be noted that in many ways C, C++ and C# are programming languages ​​for beginners. Having mastered them, you can be sure that learning a new language will take a minimum of time.

    You can get acquainted with them and write your first applications in a special environment Borland or Visual Studio.

    JavaScript

    JavaScript is a language with object-oriented capabilities. Developed in 1996 and today one of the most popular. The language is mainly used in web scripting and works in major browsers such as Internet Explorer, Firefox, Opera. It is also closely related to HTML and CSS, so before you start learning it, you need to master the basics of these languages.

    It is worth noting that, despite the similarity in name, JavaScript and Java are two completely different languages.

    This language is suitable for those who are focused on creating browsers and scripts, applications and add-ons to them. If you plan to create your own sites, you also need to get to know him better.

    Java

    Considering the most popular programming languages, one cannot but mention Java. It is an object-oriented programming language that has been in use since 1995. It is very lightweight and runs on any Java machine of any architecture. It is used to develop applications for Android and iOS.

    Python

    Python - the main task of which is to increase the productivity of the developer, make the code more readable. It has a small list of syntax constructs and a very impressive standard library of functions. The development of the language began in the 90s and continues to this day. It is used to develop various projects, extensions and integration of previously developed applications.

    The basics of the Python language can be learned both as a start for programming and as a second additional language.

    ruby

    Ruby is a high-level programming language that includes parts of Perl, Smalltalk, Eiffel, Ada and Lisp. Used since 1995. The main advantages of the language are its simplicity and flexibility. Suitable for both writing small applications and developing serious programs.

    PHP language

    PHP is a fairly popular scripting language designed for building web applications. Quite often, it is also included in the list of "Programming Languages ​​for Beginners" and recommended for study.

    With it, you can create high-quality web applications in a very short time. The language has a simple and understandable structure, which allows you to learn it in a matter of days.

    Conclusion

    We have reviewed the most popular programming languages, the study of which will help you to successfully create your projects in the future and earn money as a programmer. There is no consensus on which language to study, but at the same time, experts note that it is desirable to know several programming languages, as this will further expand the field of activity and facilitate work on various team projects.

    Programming for beginners

    To begin with, I would like to say that anyone can manage a computer and create programs. You don't need to have incredible intelligence or a degree in mathematics to create computer programs. All you need is a desire to understand something and patience so as not to quit classes.

    The ability to write programs is the same skill as the ability to swim, dance or juggle. Some people do do this much better than others, but anyone can achieve certain results with proper practice. It is for this reason that children become programming aces at an early age. Children are not necessarily brilliant; they just tend to learn new things and are not afraid to make mistakes.

    Despite the fact that computers seem like very complex electronic monsters, relax. Very few people know exactly how search engines work, which allow you to quickly find the information you need on the Internet, and some people have not figured out how to drive a car. In the same way, almost anyone can learn how to write programs without going into details about exactly how a computer works.

    Generally speaking, a program tells the computer how to solve a particular problem. Since the world is full of problems, the number of programs that people can write is endless.

    However, in order to tell a computer how to solve one huge problem, you usually have to tell the computer how to solve a whole series of small problems that make up the big problem.
    In fact, programming is not difficult at all and is not something mysterious and supernatural. If you can write step-by-step instructions that will allow a person to find your house, you can write a computer program.

    The hardest part of programming is identifying the little problems that make up the problem you need to solve. Since computers are absolutely stupid, you will have to tell them how to perform any action.

    If you think that creating a program is more interesting than using it, you have everything you need to create computer programs. If you want to learn how to write computer programs, you need the following three qualities.

    Pursuit. If you really want something, you will definitely get it (but if you do something illegal, you risk spending a lot of time in prison). If you want to learn how to program, your desire will definitely help you, no matter how many obstacles will be in your way.

    Curiosity. A healthy dose of curiosity can fuel your desire to experiment and improve your programming skills even after reading this book. Curiosity will make learning programming less boring and more interesting for you. And if you are interested, you will definitely learn and remember more information than any person who is completely uninterested in this (for example, your boss).
    Imagination. Creating computer programs is a skill, but imagination will help make this skill more perfect and directed. An imaginative beginner programmer will always create much more interesting and useful programs than a great unimaginative programmer. If you don't know what to do with your programming skills, your talent will simply die without imagination.

    Passion, curiosity and imagination are the three most important qualities that every programmer should possess. If you have them, you should only worry about the little things: what programming language to learn (for example, C ++), what is there with mathematics, etc.

    Among many programming languages, you can always find exactly the language that is suitable for solving a given task. When a new type of problem appears, people create new languages.

    Of course, in reality, the computer understands only one language, consisting of zeros and ones, which is called machine language. A typical machine language program looks something like this:

    0010 1010 0001 1101

    UN 1100 1010 1111

    0101 IT 1101 0101

    1101 1111 0010 1001

    Further, it is very important for what purpose the language is chosen - for teaching programming or for solving a specific applied problem. In the first case, the language should be easy to understand, strict and, if possible, devoid of "pitfalls". In the second - albeit a complex, but effective and expressive tool for a professional who knows what he wants.

    Now I would like to explain to you that you should distinguish a programming language (Basic, Pascal) from its implementation, which is usually presented as part of a programming environment (Quick Basic, Virtual Pascal) - a set of tools for editing source codes, generating executable code, debugging, managing projects, etc. The syntax and semantics of a programming language is fixed in the language standard. Each programming environment provides its own interpreter or compiler from this language, which often allows the use of constructs that are not fixed in the standard.

    Consider the main and popular programming languages

    assembler This is the brightest representative of low-level languages, the set of concepts of which is based on hardware implementation. It is an automation tool for programming directly in processor codes. Machine commands are described in the form of mnemonic operations, which makes it possible to achieve a sufficiently high code modifiability. Since the set of instructions on different processors is different, there is no need to talk about compatibility. Using an assembler is useful in cases where you need to interact directly with the hardware, or get more efficiency for some part of the program due to greater control over code generation.

    cobol- A high-level programming language developed in the late 1950s. association CADASIL to solve commercial and economic problems. Differs in advanced means of working with files. Since the commands of programs written in this language make heavy use of ordinary English vocabulary and syntax, Cobol is regarded as one of the simplest programming languages. Currently used to solve economic, informational and other problems.

    Fortran- A high-level programming language developed by IBM in 1956 to describe algorithms for solving computational problems. Belongs to the category of procedurally oriented languages. The most common versions of this language are Fortran IV, Fortran 77 and Fortran 90. It is used on all classes of computers. Its latest version is also used on computers with a parallel architecture.

    Ada- A high-level programming language, oriented to use in real-time systems and designed to automate the tasks of managing processes and / or devices, for example, in on-board (ship, aviation, etc.) computers. Developed at the initiative of the US Department of Defense in the 1980s. Named after the English mathematician Ada Augusta Byron (Lovelace), who lived from 1815-1851.

    BASIC(Beginner's All-purpose Symbolic Instruction Code) Born in the 60s in America. BASIC was conceived as a simple language for quick learning. BASIC became the de facto standard for Microcomputers precisely because of its simplicity both in learning and in implementation. However, for To achieve this quality, a number of decisions were made (lack of typing, line numbering and non-structural GOTO, etc.), which negatively affected the style of students of programming.In addition, the lack of expressive means led to the emergence of a huge number of dialects of the language that are not compatible with each other.Modern, specialized versions of BASIC (such as Visual Basic), despite the acquired "structurality" have all the same shortcomings, primarily - carelessness in relation to types and descriptions. Suitable for use at the initial stage of learning, as an automation tool (in cases when it is built into relevant systems) or as a means to quickly create applications.

    Pascal Developed by the famous theorist N. Wirth based on the ideas of Algol-68, Pascal was intended primarily for teaching programming. Built on the principle of "necessary and sufficient", it has strong type control, constructs for describing arbitrary data structures, a small but sufficient set of structured programming operators. Unfortunately, the reverse side of simplicity and rigor is the cumbersomeness of descriptions of language constructs. The most famous implementation - Turbo / Borland Pascal - despite the differences from the Pascal standard, is an environment and a set of libraries that have made an industrial system for developing programs in the MS-DOS environment from an educational language.

    C and C++ The C language is based on the requirements of a system programmer: full and efficient access to all computer resources, high-level programming tools, portability of programs between different platforms and operating systems. C++, while maintaining compatibility with C, introduces the possibilities of object-oriented programming, expressing the idea of ​​a class (object) as a user-defined type. Thanks to these qualities, C / C ++ has taken the position of a universal language for any task. But its use can become inefficient where it is required to get a ready-to-use result in the shortest possible time, or where the procedural approach itself becomes unprofitable.

    Delphi- this is not the successor of Borland Pascal / Borland C, its niche - i.e. rapid application development (Rapid Application Developing, RAD). Such tools allow you to create a working program from ready-made components in the shortest possible time, without wasting a lot of effort on trifles. A special place in such systems is occupied by the possibility of working with databases.

    Lisp- An algorithmic language developed in 1960 by J. McCarthy and intended for manipulating lists of data elements. Used primarily in US university laboratories to solve problems related to artificial intelligence. In Europe, for work on artificial intelligence, they prefer to use Prolog.

    Prologue- A high-level declarative programming language designed for the development of artificial intelligence systems and programs. It belongs to the category of fifth generation languages. It was developed in 1971 at the University of Marseille (France) and is one of the widely used and constantly developing languages. Its latest version is Prolog 6.0

    LOGO- A high-level programming language developed at the Massachusetts Institute of Technology around 1970 for the purpose of teaching mathematical concepts. It is also used in schools and by PC users when writing programs for creating drawings on a monitor screen and controlling a pen plotter.

    Java As a prime example of specialization, the Java language was born in response to the need for an ideally portable language that could run programs efficiently on the WWW client side. Due to the nature of the environment, Java can be a good choice for a system built on Internet/Intranet technology.

    ALGOL- A high-level programming language focused on the description of algorithms for solving computational problems. It was created in 1958 by specialists from Western European countries for scientific research. The Algol-60 version of this language was adopted by the International Conference in Paris (1960) and was widely used on computers of the 2nd generation. The Algol-68 version, developed by a group of specialists from the International Federation for Information Processing (IFIP) in 1968, received the status of an international universal programming language focused on solving not only computational, but also informational problems. Although Algol is hardly used today, it has served as the basis or had a significant impact on the development of more modern languages, for example, Ada, Pascal, etc.

    There is no best language. If you're going to become a pro at writing programs, you'll need to learn one of the high-level programming languages ​​(C++ is the most popular programming language) as well as one of the database programming languages ​​(such as SQL). Once you learn the C++ programming language, you can't go wrong. Knowing this language, you can always find a job in any programming company.
    Despite the great popularity of the C++ programming language, other languages ​​are often used. Many older computers still run programs written in the COBOL programming language. Therefore, we need programmers who can improve these programs, as well as write new ones. Very often, large companies pay high salaries to such programmers.
    If you're going to work on your own, it's best to learn how to write your own database programs. To do this, you will need to learn programming languages ​​such as SQL or VBA, which are used in the Microsoft Access program. In order to create Web pages, you need to know HTML, as well as a little knowledge of Java, JavaScript, VBScript, and other programming languages ​​for the Internet. The most necessary will be the programming language that will allow you to solve the tasks assigned to you easily and quickly. It can be C++, BASIC, Java, SQL or assembly language.

    In conclusion, we note that from a professional point of view, it is not so important in what language and in what environment the programmer works, but how he does his job. Hardware and operating systems are changing. New problems arise from a variety of subject areas. The past is gone and new languages ​​are emerging. But people remain - those who write and those for whom they write new programs and whose quality requirements remain the same regardless of these changes.
    Here we are with you and examined the basics of programming and the main programming languages.

    I wish you good luck with your programming!