📜 ⬆️ ⬇️

Different programming languages ​​and their applications. Lecture in Yandex

We decided to devote our first post this year to a very basic topic, a lecture on which was given in the Small SAD. High school students who are interested in technology are engaged in it, hence the specificity of the presentation - the lecture will be especially interesting for those who are just starting to program and think about the direction in which to develop. For them, Yandex has a “Introduction to Programming (C ++)” course, which can be completed on the Stepic.org platform.

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


')
The lecture talks 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 came about, how people started programming, how everything developed, what is happening now. In the second part, it will be affected for what tasks which language is suitable, 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 - a detailed transcript of the lecture, so you can navigate in its content.

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 - 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 in there, or the lights were shining there. If there is a hole (or vice versa not) - this meant zero or one. And the programs at that time were written with the help of machine codes - every operation in a computer (addition, subtraction, some more complex operations) had some kind of machine code. People themselves on the plate chose this code, all the addresses in the memory, all this was knocked out by hands and thrust into the reader - and it was all considered. Of course, the work of the programmer was probably not very interesting then - making holes - and with the development of science and technology, of course, they began to invent all sorts of more “interesting” things. For example, an assembler (Assembler), which already made life easier.

Well, how did he make life easier? Instead of remembering that there is some kind of "magic" code for the team, all sorts of words were used, similar to "human" English - some kind of add or mov - and then the registers or memory areas, variables with which these operations to produce. But it is clear that this, in general, also required a sufficiently large strain of the mind to keep in my head what register we have, where are some variables, and what happens in general. Why did this happen? Because computers were “stupid” and could not understand anything more “intelligent”. In fact, compiling machine code from an assembler also takes time and memory (at that time there was of course little of it).

Gradually, it became clear that to develop such large complex programs is very difficult. The programmer's performance in these commands was extremely low — that is, he wrote several lines per day (meaningful), and each line didn’t do anything special — some simple arithmetic operations. And people wanted to make languages ​​much more similar to human language, to English in particular, in order to write programs easier and more convenient. And off we go!

Old and dead tongues


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

Other languages ​​- now I'll write one thing, about which probably if you have heard, then only at all events, where programming is told about the history - this is COBOL . It was a language for writing business applications. What is a business application? Any transactions in banks, something else, they all wrote on Cobol. We, of course, is not very popular. I think a programmer on Cobol, in Moscow, you will find with great difficulty. And somewhere not in Moscow, with even greater difficulty. But, surprisingly, 10 years ago more than half of the entire code written by mankind was written in Cobol. And until now, a significant part of all banking transactions goes 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 (the 68th version, which characterizes the year of its creation). This is an algorithmic language. In general, they were able to do something there, but now we are not very interested in what they can do. And on this our excursion into antiquity and into relatively unused languages ​​can be finished and proceed to what is still alive (and actively lives).

Old but live languages


Algol was invented in Europe, and Fortran was used mainly in the States - there are no big differences. What trend is noticeable? At first everything was difficult and in order to write it was necessary to be almost an engineer, an electrical engineer, to understand where some 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 it is even easier for a programmer to think as little as possible to a person, to do as much as possible automatically. Around the end of this period (the lecturer points to Algol and Kobol), languages ​​begin to emerge, which in some sense “lived” to our days.

BASIC . Perhaps, until now, some people write something on it, at least I have seen that in some institutions they teach QBasic 's - this is the blue window, where it says "1989". In general, "with might and main" lives! He came up as a language for non-programmers. At that time, the programmer was such a very specialized profession. And here they say to you: “Here we have a cool Basic language, and any reasonable person will take and write a program on it - easily.” Again, that BASIC and the modern BASIC is a huge difference. All these lines are numbered after 10, all kinds of GOTOs and other horrors - they have nothing to do with modern BASIC, and even they have little to do with BASIC of 89.

Another funny story is Pascal , widely known in high school circles, mainly in Russia and in the countries of the former Soviet Union. It has been used and continues to be used surprisingly as a learning language. Throughout the rest of the world, it is less common, but also lives 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 invented his own language - Pascal. And then the Borland company (and before that many other firms - Apple was engaged, in particular) took and spoiled everything. He had a beautiful theory, a slim one - “everything will be fine” - and they took and stuffed there what people need for work. Well, it turned out not as beautiful as he wanted.

And finally, C. C came up with engineers. If Pascal came up with the scientist, then Si came up with Kernighan and Ritchie , they worked as engineers at Bell. How did this happen? At that time there was nothing systemic to write in these languages ​​(the lecturer points to Fortran, COBOL, Algol). What is "system"? For example, the operating system, some drivers, something else. These languages ​​were intended for mathematical calculations, for business calculations, for all that. 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 the Assembler, but through some intermediate things.

The essence of what? Kernigan and Ritchie liked to play toy Asteroids - a spaceship flies, and there are asteroids, he shoots them, and they fall apart. They had a server on which they played, but there were a lot of people there, and the toy slowed down. And they found somewhere in their office that they had some kind of computer that nobody uses. But there was a problem - it was of a different architecture, and the game was written in Assembler.

They rewrote it, of course, they even dug in some features to play on it. But it brought them to the idea that rewriting a new architecture every time is not very clever. And they decided to write a high-level language that would be suitable for system programming, that is, in which you can manage memory, in which you can understand where and what lies and how to access these pieces of memory. And so the language C appeared, which had a great influence on everything further. They all (the lecturer points at Algol, Fortran, and the other languages ​​mentioned) had a great influence, but here C is right yes ...

Accordingly, it was the main language in Unix - the operating system, which at that time was even more popular than it is now. And by about the 80s, the situation was somehow like this (the lecturer shows Basic, C, and the other languages ​​mentioned). Suppose that all of this has already slowly died (the lecturer erases mentions of Assembler, Fortran and Algol) ... And in the 80s computers became smaller, smarter, cheaper, and people wanted all sorts of oddities to live better and live better more fun.

Languages ​​originally from the 80s


One of the first oddities was C ++ . The C language has a huge number of flaws (well, just generally huge) - you can do everything on it, including shooting yourself in the leg, shooting yourself in the foot with fiction, in the other leg, shooting with the other leg in the other leg, in general - what please 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 memory we have allocated; she is there all the time “flows” somewhere this memory — that is, we isolated, forgot to delete, deleted the wrong thing, climbed out of memory, in general - we got rid of a lot of problems.

C ++ was first created as a set of additions to the C language, which will facilitate development. At that time, object-oriented programming became fashionable and people decided that everything could be described as a hierarchy, that is, you have a ball (abstract), you inherit a soccer ball, a volleyball ball, another abstract ball. Then it was fashionable that "we are now writing everything in the form of some kind of hierarchy, and everything will be fine, life will get better, everything will be fine and everything." 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, the program written in C was compiled as C ++ in 99% of cases successfully and even worked as well. This 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 at school, those who still taught Pascal found that you have there, first, no built-in sorting (in the ancient, blue Borland Pascal, now it is already in modern versions) - there is an example (source) sort, you can copy and paste it. But if you want to sort the integers here, you want real numbers here, and here you can compare the lines that can be compared to each other, you have to write three different sortings that do exactly the same thing, they just have different data types. This is not very good and the templates that did not immediately appear in C ++, this problem is greatly facilitated. That is, you had an abstract program that successfully sorted something that could be compared with each other.

Script 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 you could already do some 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 for some time, but these scripting languages ​​were intended mainly for word processing, for example, Perl , Python (he was not very famous then), PHP , Ruby - these are the scripting languages ​​that still live to some extent (they all had time to appear before the year 2000, even much earlier).

Let's go over them a bit, because these are specific things and now they are used a lot. 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 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 stuff some text in there and do something useful with that text (for example, count words, search for some). But, in my opinion, it was designed by people who were a little unconscious, because there is such a joke about him: "Any character set written is a valid Pearl program." In my opinion, you can only write on it, you can not read it. When I look at the Pearl 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 it is easier to rewrite. That is, the programs are short and really easier to rewrite, than to deal with what is there and fix it.

Around the 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 could happen dynamically, some could be filled in, guest books could be made, something else. Accordingly, this required some kind of interaction, invented a protocol, how it interacts, and, most importantly, the generation of these static (conditionally) pages that will be spat out to the user in response to his request.

In general, nothing but Pearl at the time did not fit. Writing in pure C or C ++ handler was a bad idea. And from not having the best at that time (and long enough), Pearl was a popular language for web development. Of course, the scale can not be compared with what is happening now.

PHP appeared as ... by chance. One person quickly stopped doing this - he did his own page of some kind, he had some kind of guest book, something else, some kind of stuff. And he wrote a set of macros for Pearl, which were similar to C, because he knew how to C, just because he was so comfortable. And called it Personal HomePage. I share it and says: “People, look at what piece I wrote, everything is much clearer here than you can edit on Pearl.” And people liked it.

Then he threw the case. In general, in the end, this PHP began to live and became much more popular over time than Perl. But this his “birth injury” (conceived as a set of macros for Pearl) played a rather cruel joke with him. The language was 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 small groups, each of which sawed what they liked. As a result, functions are called there differently, even there is no style, everything through underscores, in general, as it were, the settings are 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 is somehow better “jiggled”, let's talk about it later. It is clear that at that time these were (the lecturer points to Perl, Python, Ruby, PHP) highly specialized languages ​​for highly specialized purposes. In general, no system programming, no business logic was written by anyone at that time, and it doesn’t do much now.

Compiled languages ​​from the 90s


We will go about the same time, but in the other direction. We at that time used C ++ for practically everything that needed to be written not for the web, not for word processing, but for just applications, for operating systems, for toys - in general, for anything. But C ++ is really creepy. Why? Because, first, it inherits all the problems of C due to backward compatibility. There one could still be killed in a million different ways, the same ones that were in C (naturally, new methods were added in C ++). At the same time, if you write everything well and correctly, as was intended by the authors of C ++, then, of course, it was impossible to kill yourself by the old ways, and it seems like they became smaller. However, he had a very strange object model of its own. Splitting a program into modules, some pieces in general came from C (if include you know how to write in C or in C ++, in fact it was conceived as simply inserting the text of the library into your program, as a result, 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 compiles a terribly long time, because it walks several times. The same Pascal, Virtovsky, was much more thoughtful in this regard, later the versions are even better.

In general, C ++ has a lot of flaws. The programmer's qualifications should have been high to write in C ++, and such programmers cost a lot (and training, and something else, that is, finding programmers on the market is difficult, they need to pay a lot, well, in general, this is not the case ... ). And our computers are becoming faster and faster, they are becoming cheaper, people are buying new computers for themselves and want more applications, more toys for the phone, in general, more joy.

This is how Java (Java) appeared. There is also a rather funny story connected with how the name appeared in this language. There programmers, they all drink coffee 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. And so the name turned out ...
What started with her at all, what was good in her and why did she gain great popularity? First, they got rid of Sishnoy's legacy, completely. No signs, much less ways to shoot yourself any part of the body and break everything. Secondly, they implemented 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 in practice they used and made everything much cooler.

And finally, the third. Our Java programs were not collected in machine code, but in code for a virtual machine. That is, you had a virtual machine (VM) JVM - Javovskaya. Your programs were going to some kind of intermediate presentation and then, using this machine, they were already running. What did it do? First, it slowed down, secondly, it guzzled memory with terrible force, thirdly it was portable anywhere (theoretically) - at least for a coffee maker, at least for a coffee grinder, at least for a computer, even for a mobile phone. This is, on the one hand, good, that is, you have written just the implementation of a virtual machine, then you run your Java programs everywhere. But, on the other hand, it’s bad that on the same phone there was little memory then, there was poor performance and it all additionally started to stun and slow down.

But even this is not the main thing, for which the language was invented. 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 writing bad programs - there are no means to write programs badly. There you can only write good programs. Well, in understanding the creators of the language.

That is, if in C, in C ++, on Python, we can dissolve a terrible garbage dump from our project, where we have everything mixed up, going for hours and there is something else. You can also dissolve the trash can in Java, but for this you need to make some effort. That is, by default, there is not a “garbage dump” there, other problems are obtained, that there is something followed, followed — in general, ten not very meaningful turns out for one meaningful line. But maybe such an average qualification programmer to write a fairly high-quality code.
We almost come to an end. With us, the next thing that appeared is .Net (dotnet), and in particular, we are interested in C # (almost the same thing [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 no relation to the Java language, appeared in the same year - the word was fashionable, they licensed the trademark to use.

What, most importantly, you need to pay attention? (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 don’t need to know anything else - you take and write in C ++, and then add dollars in the beginning, something else you do the little things and it starts working on anything for you (the lecturer points to the languages ​​to which the arrows from C ++ have been assigned). That is, they are extremely similar in some simple things. If you solve some school problems, educational tasks, something else (do not design a large project - you have one file that reads numbers, prints numbers to the console, still does something), then there is almost no difference between these languages. It is clear that they are specialized JavaScript and PHP, they have a little bit different. And here (the lecturer points to Java and C #) there is generally very little difference.

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

Language selection 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 from the audience: Java!) And what ... Java - great, but why not on Ruby or in PHP? (Lecturer speaks sarcastically.)

Low level programming


If you are writing something low-level, then the best choice is C, but actually I heard something (but did not see it) that C ++ is used for this. But I have little faith in this, because in C you can clearly control it - once you have given so many bytes of memory, then so much will be. And in C ++ (STL), how is the string implemented? Well, somehow implemented. And we do not know in the end how and what is happening there, maybe our memory will end on our video card or something else will happen. Therefore, C still lives and does not die, such system programming problems still exist - to write an operating system, write drivers, write something else - C is perfect for this. In addition, all sorts of devices are appearing now (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 should 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 is not possible to screw in some kind of virtual machine or scripting language in the near future — that means you have to write something in C. And 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 are talking about HTML and CSS.) HTML, CSS is design, and we want to add photos there, friends, and comments.

For the script part, that is, what will happen on the client side is JavaScript. And sometimes JavaScript is generated in a different language and sent (it happens that the script is generated ... because it is easier sometimes to handle some changes in the logic).

Surprisingly, it is written in PHP - and Facebook, and many other great projects. Of course, I had to write my own things in order for it to work nevertheless normally, and not in the way it was done, but they managed. In principle, it’s all the same what you’ll write on, but I don’t recommend Perl. Here and now, of course, no one writes anything from scratch to the web. Everyone is writing some kind of framework or something else. Online store? They downloaded the framework for an online store - well, that's it, they wrote an online store.

Programming for business


Next you want to write some boring application for the bank. Or, for example, do you have someone who sells Sims? Maybe you have ever bought a phone or something else and you were told: "Here is the system, we can not do anything." What will you write such an application? (A cry from the audience about Python) You can't write such things on Python, what are you ?! Nothing for business is worth writing on Python. Why? Because when you write something on Python, you have a significant number of bugs in the writing process. Python is dynamically typed in every possible way, and in general there you can hide the bug in such a way that it will pop up in such a situation that you cannot even understand what these crooked users did there, that everything broke. That is, it is better to write on Python for yourself, small scripts - you understand what is happening there and what is being done. Well, or something that is not a pity to throw out: you want to roll out something before the competitors, but so what, that it will break every second time. You wrote on 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 there is a serious matter, pieces of paper, money, documents, something else, and it’s impossible to mess it up so that everything breaks down, and then people will be offended - they have left the money and have not got anywhere, because you have moment string turned into a number or vice versa. So, it means that you take and write methodically in Java and write ... Well, or on .Net, there are also such situations, in principle. 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. , , ? Let's get a look. , ( Perl, Python, PHP, Ruby), — , - , . C++? , , , C++ . - , .

Java? , , . , , Java . , , : «, garbage ». , .

, , . , , , - , .


. - , - , — , - — . , - -, , ( , , - ) - , . , . , - , Java, . ( ), , -, - , , (JavaScript). .

- , , ? ( ), , - . — , : «! !» . , , (, ). But no! , , , -, Java, : «, , ,» — 10 . .

-


, , . , Appl, Borland , — Oberon. — , (? ? !). - , , .

. , . Ada, , , - , — .

What is the problem? Python, , . PHP, , ( ). ( Ada) , . What is the reason? , . , , , ( Stack Overflow) , , , , . , , , . , ? … - , , - , . - , , . , . , . - , (Python) .

Java Java Native Interface. , (-, , ) ( ). . , , ? , . , - . , () - . - .


, , . ? - , ? , , -, - . , , — .

, , , , , , ( , ), — Java, .Net. - , , , Java-, .Net- …

- , -, -, -, C++ . , , ( Perl, Python, PHP, Ruby), . — PHP , Python, , . , .

Ruby, . , PHP, , , .

, , — . , , , , , , - , - (, , ). Excel' -. , , . - Machine Learning, - , , . , , . , , , Machine Learning , , - , , , . ( ) ( ), .

, — . , . , ? So. . , , ( ) . , , .

. , , , , , . , , , , - - .

( )? , — . . , C++ ( ), ( ). — , C++, ( ) , , Java. , .

? , , , ? ( , 2000 , , C++, 2015 ).

2000 C++ . 15 , , , . , . - , , Borland Pascal', . C++ - (STL) — , sort() . , , — . - set () — , C++ , . , , , -. , , .

Java , Java . , , . - , . .

? ( ) . . , -, () C++, , .

, - () , , .

, , , , . — ( , ) ++ ( , , ). , , , : «, , - ? ». , , , . , ( ) .

, . , C++. , . , ( ). C++ , C++ .

«» . . , - , . , , — , . — . , : … : «, - , -. - , - — , . - , : «, , » — . , ? — . , : , , - () -, - , - , - , - , , . - , . ( ) C++, -. , ( «») , , - .
, — , “ ”. ( ) , , . — , : - , rsync (, . , , rsync', ).

, . , , , , -. , , ( 2 ) . - , . , .

, , , ( , , ), - , , - , -. , ( C++ ) , ( , ) — , -, , -. - . , , « » — « — »; — C++ , C++ , .

( ) — , , ( , ). . . , .

How to find a job for a programmer


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

What would be great? First, any open source project that you wrote from beginning to end. It is advisable that if I do any kind of infrastructure so that the data is quickly considered, something else, then, of course, it would be interesting for me to write something open source. No saytik some done, but something on the subject. Why am I interested in this? 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 watch and think: “In, there’s been a bug for two years now closed, then you impolitely replied to the user, there’s something else - I don’t take it. ” That is, it is your personal project.

Further, what else would be cool? I would like to see how you did teamwork. That is, you come to me for an interview and say: “The guys from the university have written some good application. I’ve been doing a database there, they’ve been doing some kind of mobile application, and the guy worked there, a girl designer, a boy for tech support. There were five of us, and we did a great project. ” Well, I see what your project really is, I say: “What is yours?” I look at the code again and understand that you can work in a team with people.

The programmer is not the one who sits alone (indie) in the garage, somewhere with the lights off, does not talk to anyone, grows over his beard and writes. Anyway, there is some kind of interaction with people. With a boss, for example, who sometimes swears at you (chiefs, they are not always kind). And I see that you know how to work with people, and it pleases me if you have a good team of some kind. Even if not good, it's better than none.

What else would I personally like? If you showed yourself in large projects. For example, committing something to the Linux kernel, if you are doing system programming, you have fixed a bug. That is, they showed that you can read someone else’s code and can make some changes to it. I look: “Oh, really, you figured out something complicated and some bugs were fixed!” And I start to be very happy about it. Because I have ... well, I don’t know ... my programmer quit, because competitors offered him more wages, and I urgently need someone to plug his place with you. I look at it that you just wrote from scratch, and someone else’s code cannot read and edit, and I get frustrated.

And finally, depending on the specific position there are different other things. If you are working as an analyst, I would like you to solve data analysis tasks at Kaggle. If you settle for some algorithmic things, I would like you to do some algorithms in sports programming. And finally, if you thought about the profession, read how the interviews are going on - you met that some people there expressed great dissatisfaction: “I came, and they ask me what my hobby is. I sit like an owl and do not answer because I do not have a hobby, ”and they think that HR'y do that. 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 steep specialist with great knowledge, it will be difficult for the team to work with you, and you will not pull out the project alone. In addition, even if you pull, you can imagine what the load for the company. And what will you come tomorrow and say: “Increase my salary 10 times, otherwise I will leave you”. It is clear that companies do not want to get into this situation. Therefore, cultivating in oneself the adequacy and goodwill is just as important (at a minimum) as the development of some professional skills.

To summarize, what can I say? Which languages ​​are good and which are bad? Well, inside 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 in the number of bugs allowed, in the amount of something else - 5%, well, maybe 10%. That is, if you have a ready-made PHP project written, 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 we will continue to write in PHP." Great, this is a good choice. Understandably, if you suddenly start writing some project, it is possible to choose a Python now wisely. Although it also depends. Maybe you have a bunch 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 already ready developers.” And everything is fine, you already come and work there.
How to choose between Java and C ++? Yes, the same thing happens. I think that by the time when you decide in which language to start a new big project, you will gain knowledge in your professional field and you can make the right choice. Now you don’t need to make such a choice, and therefore I advise you to do what you like.

Basics, as I have already said, the most basic programming principles (what a function is, what if'iki, for'iki, arrays, something else) can be learned more or less in any language. For example, in C ++, since it looks like a lot of things, and the specifics in it (at this level) are the least, and the extra ones are the least written. Well, and then, when you learn some complex architectural things, you learn and worry that you don’t need much to do with it. That is, the main thing is — try it, look for what you like and when you realize that it is now 4 am, and you are sitting and writing for fun, because you like it - probably, at this moment it’s clear that you found your .

Source: https://habr.com/ru/post/272759/


All Articles